VIM Tips

Moverse desde el teclado

                                                                  k
Use las teclas cursor, o "h" para ir a la izquierda,            h   l
para ir abajo, "k" para ir arriba, "l" para ir a la derecha.      j

Guardar el documento

 :w
 Shift+zz equivale a :wq!

Eliminando cosas

  x elimina caracter bajo el cursor
  dw elimina palabra bajo el cursor
  dd elimina la línea entera
  D  elimina desde la posición del cursor hasta el fin de línea

Búsqueda y remplazo

El comando :substitute busca y remplaza un patrón de texto. Hay muchas opciones pero tal vez alguna de éstas es la que desea:

  • :%s/foo/bar/g : Busca cada ocurrencia de foo y las remplaza con bar.
  • :%s/foo/bar/gc : Cambia cada ocurrencia de foo pero pide confirmación primero.
  • :%s/\<foo\>/bar/gc : Cambia sólo palabras completas que sean exactamente foo por bar pidiendo confirmación.
  • :%s/foo/bar/gci : Cambia cada ocurrencia de foo (insensible al mayusculado) a bar pidiendo confirmación.
  • :%s/foo/bar/gcI : Cambia cada ocurrencia de foo (sensible al mayusculado) a bar pidiendo confirmación.

La bandera g significa global, cada ocurrencia en la línea es cambiada en vez de sólo la primera.

vless, resaltado de código

less con resaltado de código, simplemente genial.

$ su -c "ln -s /usr/share/vim/vim73/macros/less.sh /usr/bin/vless" 

Debe tener instalado el paquete vim-common en Fedora.

Abajo un pantallazo de la salida de vless de un archivo con contenido HTML.

Codificación de archivos

Cuando se programa web (html), uno de los problemas que se nos presenta es la codificación de los archivos y la representación de los caracteres propios del castellano como los acentos y la ñ.

La codificación es el proceso por el cual se le asigna un "código" binario a un caracter tipográfico. Asi, si su explorador web ha descargado un página web html codificada adecuadamente, el explorador podrá representar adecuadamente dichos caracteres.

Entonces, un archivo codificado utf8 no es igual a un archivo codificado iso-8859-1. El código almacenado en el primero para la "ñ", por ejemplo, es diferente al código almacenado en el segundo.

En Fedora la codificación por omisión es UTF8 que puede representar los caracteres del castellano adecuadamente. Sin embargo puede pasar que necesitemos crear, editar y servir archivos con otra codificación. No olvide, la codificación es MUY importante.

Cuando use vim (vi es un alias en Fedora para vim) puede usar para ajustar la codificación en el archivo:

set enc=iso-8859-1
y/o
set fileencoding=iso-8859-1

Indentado

vi estandar interpreta la tecla tab literalmente pero hay otros editores populares derivados de vi que son más inteligentes, como vim.

Para hacer que vim interprete tab como comando "indent" en vez del comando insert-a-tab, haga:

set softtabstop=2

Para establecer indentación mod-N que se use cuando presione la tecla tab en vim (Emacs lo llama c-basic-offset), haga:

set shiftwidth=2

Para provocar que el caracter-en-archivo TAB sea mostrado como mod-N en vi y vim (Emcas lo llama tab-width), haga:

set tabstop=4

Para provocar que los caracteres TAB no sean utilizados en el archivo para compresión, y que sólo se usen espacios (Emacs lo llama indent-tabs-mode), haga:

set expandtab

En vi y vim puede hacer este tipo de manipulación por archivo utilizando las "modelines", comentarios mágicos al principio del archivo (similar a como funciona en Emacs):

/* ex: set tabstop=8 expandtab: */

Abriendo en línea específica

La idea es abrir un archivo de texto para edición y de una vez tener el cursor en la línea deseada.

$ vim archivo +3

Desactivar resaltado de sintaxis

A veces no queremos que se resalte la sintaxis, por ejemplo, Jared hace la presentación de DocBook y hay mucha luz en la sala y no se no logra visualizar bien su terminal en la pantalla.

:syn off

Exportar a HTML con sintaxis resaltada

$ vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" presentacions_controller.rb

vless-html.png (31.1 kB) Guillermo Gómez, 11/24/2011 08:07 am

vim-to-html.png (40.2 kB) Guillermo Gómez, 10/10/2012 11:50 am