130+Comandos de Vim esenciales

Desde los años 70, vi y vim son los editores de texto mas populares entre los programadores. Esta entrada es una traduccion escrita originalmente por Jean Baptiste Jung, en su blog www.catswhocode.com espero lo disfruten.

Lo basico

:e nombre_de_archivo Abrir nombre_de_archivo para edición
:w Guardar archivo
:q Salir de Vim
:q! Salir sin guardar
Escribir archivo (si se han realizado cambios) Salir
:sav nombre_de_archivo Guardar archivo con nombre_de_archivo
. Repite el último cambio realizado en el modo normal
5. Repite 5 veces el último cambio realizado en el modo normal

Moverse en el archivo

k o flecha_arriba mueve el cursor una línea hacia arriba
j o flecha_abajo mueve el cursor una línea hacia abajo
e mueve el cursor hasta el final de la palabra
b mueve el cursor hasta el comienzo de la palabra
0 mueve el cursor hasta el principio de la línea
G mueve el cursor hasta el final del archivo
gg mueve el cursor hasta el principio del archivo
L mueve el cursor a la parte inferior de la pantalla
:59 mueve el cursor a la línea 59. Cambie 59 por el número de línea deseado.
20| mueve el cursor a la columna 20. Cambie 20 por el número de columna deseado.
% Mueve el cursor a la combinación entre paréntesis
[[ Ir a la función inicial
[{ Ir al bloque inicial

Cortar, copiar y pegar

y Copia el texto seleccionado al portapapeles
p Pega el contenido del portapapeles
dd Corta la línea actual
yy Copia la línea actual
y$ Copia al final de la línea
D Corta al final de la línea

Busccar

/palabra Búsqueda de palabra de arriba hacia abajo
?palabra Búsqueda de palabra de abajo hacia arriba
* Buscar palabra bajo el cursor
/\ccadena Buscar CADENA o cadena, mayúsculas y minúsculas
/jo[ha]n Buscar john o joan
/\< the Buscar the, theatre o then
/the\> Buscar the o breathe
/\< the\> Buscar the
/\< ¦.\> Buscar todas las palabras de 4 letras
/fred\/ Buscar fred pero no alfred o frederick
/fred\|joe buscar fred o joe
/\<\d\d\d\d\> Buscar en exactamente 4 dígitos
/^\n\{3} Encontrar 3 líneas vacías
:bufdo /searchstr/ Buscar en todos los archivos abiertos
:bufdo %s/something/somethingelse/g Buscar algo en todos los buffers abiertos y reemplazarlo con otra cosa

Reemplazar

:%s/viejo/nuevo/g Reemplazar todas las apariciones de viejos por nuevos en el archivo
:%s/adelante/delante/gi Reemplace adelante por delante, caso insensibles
:%s/viejo/nuevo/gc Reemplace todas las apariciones con la confirmacion
:2,35s/viejo/nuevo/g Reemplace todas las apariciones entre las líneas 2 y 35
:5,$s/viejo/nuevo/g Reemplace todas las apariciones de la línea 5 hasta el fin del archivo
:%s/^/hola/g Reemplace el comienzo de cada línea por hola
:%s/$/Harry/g Coloca al comienzo de cada línea Harry
:%s/ *$//g Eliminar todos los espacios en blanco
:g/cadena/d Eliminar todas las líneas que contienen la cadena
:v/cadena/d Eliminar todas las líneas que no contienen la cadena
:s/Bill/Steve/ Colocar la primera aparición de Bill por Steve en la línea actual
:s/Bill/Steve/g Reemplace Bill por Steve en la línea actual
:%s/Bill/Steve/g Reemplace Bill por Steve en todo el archivo
:%s/^M//g Eliminar (M) de DOS los retornos de carro
:%s/\r/\r/g Transformar retornos de carro DOS en los retornos
:%s#<[^>]\+>##g Eliminar etiquetas HTML pero mediante texto
:%s/^\(.*\)\n\1$/\1/ Elimina las líneas que aparecen dos veces
Ctrl+a Aumento del número bajo el cursor
Ctrl+x Disminuir el número bajo el cursor
ggVGg? Cambie el texto para Rot13

Caso

Vu Línea en minúsculas
VU Línea en mayúsculas
g~~ Invertir caso
vEU Cambia la palabra en mayúsculas
vEu Cambia la palabra en minúsculas
vE~ Modificar el caso de la palabra
ggguG Establecer todo el texto a minúsculas
gggUG Establecer todo el texto a mayúsculas
:set ignorecase Ignorar mayúsculas en búsquedas
:set smartcase Ignorar mayúsculas en búsquedas exceptuando si utiliza una letra mayúscula
:%s/\<./\u&/g Establece primera letra de cada palabra en mayúsculas
:%s/\<./\l&/g Establece primera letra de cada palabra en minúsculas
:%s/.*/\u& Establece primera letra de cada línea en mayúsculas
:%s/.*/\l& Establece primera letra de cada línea en minúsculas

Lectura/Escritura de archivos

:1,10 w outfile Guarda las líneas 1 a 10 en el archivo de salida
:1,10 w >> outfile Anexa las líneas 1 y 10 del archivo de salida
:r infile Introduzca el contenido de archivo de entrada
:23r infile Introduzca el contenido de archivo de entrada en la línea 23

Explorador de archivos

:e . Abra el explorador de archivos integrado
:Sex Split y ventana abierta explorador de archivos integrado
:Sex! Igual que :Sex pero ventana dividida verticalmente
:browse e Explorador de archivos grafico
:ls Lista de buffers
:cd .. Mover a la carpeta padre
:args Lista de archivos
:args *.py Abrir la lista de archivos con extencion .py
:grep expression *.py Devuelve una lista que contienen la expresion .py
gf Abra nombre de archivo bajo el cursor

Interactuar con Unix

:!pwd Ejecute el pwd comando de unix, luego vuelve a Vi
!!pwd Ejecute el pwd comando de unix e inserta en el archivo de salida
:sh Retornos temporales de Unix
$exit Retorna a Vi

Alineación

:%!fmt Alinear todas las líneas
!}fmt Alinear todas las líneas en las posición actual
5!!fmt Alinear las próximas 5 líneas

Tabs/Windows

:tabnew Crea nueva pestaña
gt Mostrar ficha siguiente
:tabfirst Mostrar primer pestaña
:tablast Mostrar última pestaña
:tabm n(position) Reorganizar pestañas
:tabdo %s/foo/bar/g Ejecutar un comando en todas las pestañas
:tab ball Poner todos los archivos abiertos en pestañas
:new abc.txt Editar abc.txt en una nueva ventana

Ventana spliting

:e nombre_del_archivo Editar el nombre del archivo en la ventana actual
:split nombre_del_archivo Dividir la ventana abierta con nombre de archivo
ctrl-w up arrow Poner el cursor en la ventana superior
ctrl-w ctrl-w Poner el cursor en la ventana siguiente
ctrl-w_ Maximizar la ventana actual verticalmente
ctrl-w| Maximizar la ventana actual horizontalmente
ctrl-w= Da el mismo tamaño para todas las ventana
10 ctrl-w+ Añadir 10 líneas a la ventana actual
:vsplit archivo Ventana dividida verticalmente
:sview archivo Igual division en el modo de sólo lectura
:hide Cerrar ventana actual
:­nly Cierra todas las ventanas, exceptuando la actual
:b 2 Abrir #2 en esta ventana

Auto-completa

Ctrl+n Ctrl+p (en modo de inserción) Palabra completa
Ctrl+x Ctrl+l Línea completa
:set dictionary=dict Definir dict como un diccionario de
Ctrl+x Ctrl+k Completo con diccionario

Marcas

m {a-z} Marca la posición actual como {a-z}
‘ {a-z} Mover a la posición {a-z}
Mover a la posición anterior

Abreviaturas

:ab mail mail@provider.org Definir correo electrónico como abreviatura de mail@provider.org

Texto guión

:set autoindent Activar el auto-identado
:set smartindent Turn on intelligent auto-indent
:set shiftwidth=4 Defines 4 spaces as indent size
ctrl-t, ctrl-d Sangría/una-sangría en modo insertar
>> Sangría
<< Una-sangría
=% Sangría del código entre parentesis
1GVG= Sangría todo el archivo

El resaltado de la sintaxis

:syntax on Enciende el resaltado de sintaxis
:syntax off Apague el resaltado de sintaxis
:set syntax=perl Resaltado de la sintaxis a código perl