Vim
| Versión |
| 7.1.314 |
| Página principal |
| http://www.vim.org |
| Observaciones |
Sumario
Enlaces y referencias
- Ref: Best of Vim Tips de David Rayner
- Ref: Vim Tips Blog de David Rayner
- Ref: Vim tips: working with external commands
- Ref: Secrets of tabs in vim
- Ref: Vim for Perl developers by Leonid Mamchenkov
- Ref: Vim Tips Wiki
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:
- Seleccionar las líneas: visualmente o mediante un rango numérico.
- Emplear el operador
!(bang) - 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>
|