Vim

De Astillas.net
Versión
7.1.314
Página principal
http://www.vim.org
Observaciones


Enlaces y referencias

Configuración

Tabulados

Las directivas de Vim para gestionar tabulados son:

tabstop
Determina cuántos espacios en blanco cuenta un tabulado. Afecta a cómo se muestran en pantalla.
expandtab
Cuando está activo los tabulados expanden a espacios en blanco automáticamente.
shiftwidth
Indica cuántas columnas de texto se indentan en las operaciones de desplazamiento << >>.
softtabstop
Controla cuántas columnas emplea Vim cuando se usa el tabulado en el modo de inserción.

Ejemplo de uso en la configuración (~/.vimrc o ./.vimrc):

" Fijamos a 4 espacios en blanco los tabulados
set tabstop=4
set shiftwidth=4
set softtabstop=4
" y no dejamos que expandan a espacios
set noexpandtab

También podemos incluir estas disposiciones dentro de un modeline en los archivos fuente, cerca del principio o del final del mismo, asegurándonos de que están protegidos del compilador (o del intérprete) por el correspondiente comentario:

# vim: tabstop=4:shiftwidth=4:softtabstop=4:noexpandtab

El parámetro modelines de Vim indica el número de líneas que el programa explorará desde el principio para encontrar una línea de este tipo. Si está desactiva o a cero las líneas serán ignoradas.

Recetario

Borrar líneas según patrón

Para borrar todas las líneas que comiencen por la almohadilla (#) y luego las líneas en blanco:

 :g/^#/d
 :g/^$/d

Sustituciones vía expresiones regulares

Para emplear autoreferencias en la parte de sustitución de una expresión regular la parte de búsqueda debe usar paréntesis escapados

~/purga2                                                                            <52,1> Final
:%s!\(copia-\d\d\d\d\)!delete pool=Disco volume=\1^Myes!g

En este caso localiza fragmentos de tipo copia-NNNN y los inserta en una frase mediante el operador \1, incluyendo un salto de línea antes de otro texto.

Si originariamente el texto era algo como:

copia-0214

después se convierte en

delete pool=Disco volume=copia-0214
yes

Otro ejemplo tomando como muestra los siguientes datos que queremos incluir en una lista dentro de un fuente en Perl:

    <nif>A00000001</nif>
    <nif>A00000002</nif>
    <nif>A00000003</nif>

Le aplicamos la expresión:

:%s!<nif>\([A-Z0-9]*\)</nif>!"\1",!g

y obtenemos

    "A00000001",
    "A00000002",
    "A00000003",

Insertar la salida de un programa

Para leer la salida producida por un programa e insertarla en el buffer activo se emplea la orden r y el operador ! (bang) de esta forma

:r ! command

lo que hace que Vim ejecute command en un shell externo (lo que incluye expresiones complejas con interconexión de procesos incluídas) y lea su salida estándar.

Filtrar texto con un programa externo

Para tomar una parte del texto, pasársela como entrada a un programa y sustituirlas por aquello que produzca se necesita:

  1. Seleccionar las líneas: visualmente o mediante un rango numérico.
  2. Emplear el operador ! (bang)
  3. Indicar qué programa llamar

Ejemplo:

:1,10 ! sort

Insertar caracteres de control

Para insertar caracteres de control en un texto se activa el modo de inserción y se emplea una determinada combinación de teclas:

Carácter especial Secuencia Vim
Salto de página (form feed) ^L
Tabulado vertical (vertical tab) ^K
Escape <ctrl><esc>
Separador de archivos (^\) <ctrl>V\
Separador de grupos (^]) <ctrl><shift>]
Separador de registros (^^) <ctrl><shift>^
Separador de unidades (^_) <ctrl><shift>_
Borrado (DEL ~) <ctrl>V<del>