Mis tips de Vim feature image Photo Credit: Patricio Moracho

Mis tips de Vim

13 mins

Mi particular lista de comandos de Vim. Los que en particular me resultan interesantes de usar. Trucos y keymaps interesantes y configuraciones particulares

Basicos

Teclas Descripción
e! Volver a cargar el archivo actual descartando cambios
Esc Volver al modo normal
i Modo insert
o Inserta una nueva linea y entra en modo inserción
:q Salir
:q! Salir sin grabar
:w Grabar
ZZ Grabar el archivo y salir
R Modo remplazo
J Join de la lineas seleccionadas
q: commandline history Window (puts you in full edit mode)
Nop“q/ Search history Window (puts you in full edit mode)
:C-F History Window

Movimiento

Teclas Descripción
h Mover cursor a Izquierda ([arrow left])
j Mover cursor hacia abajo ([arrow down])
k Mover cursor hacia arriba ([arrow up])
l Mover cursor a derecha ([arrow right])
0 Ir al primer caracter de la línea
^ Ir al primer caracter no blanco de la línea (en algunos teclados ^^)
$ Ir al final de la línea desde el cursor
w Moverse de a palabras con el cursor a derecha
b Moverse de a palabras con el cursor a izquierda
ngg Ir a la línea n. ej 34gg
nfc Moverse a la primer n ocurrencias del caracter c a la izquierda, por ej, 5fx i a la quinta ocurrencia de ‘x’
ntc idem f, se posiciona un caracter antes
C-o Undo de movimientos
( o ) Moverse entre frases (adelante/atrás). El punto determina una frase.
{ o } Moverse entre parrafos (adelante/atrás). Una linea en blanco determina el parrafo

Borrar

Teclas Descripción
ndd Borrar n líneas. Por ej. 5dd
ndw Borrar n palabras
ncw Borrar n palabras y habilitar el modo insert
d$ Borrar desde el cursor hasta el fin de línea (también D)
nx Borrar n caracteres después del cursor
nX Borrar n caracteres antes del cursor
ndm Borrar n caracteres según el movimiento del curso m. Ej. 4dh borra 4 caracteres a izquierda
ndm Borrar n caracteres según el movimiento del curso m. Ej. 4dh borra 4 caracteres a izquierda
D Borra hasta el final de la linea
<C-h> En modo insert: borra un carácter hacia atrás (backspace)
<C-w> En modo insert: borra una palabra hacia atrás
<C-u> En modo insert: borra la línea entera hacia atrás
d( Borrar hasta el fin de la frase
d) Borrar hasta el comienzo de la frase
d{ Borrar hasta el fin del parráfo
d} Borrar hasta el comienzo del parráfo

Edición

Teclas Descripción
. Repite el último comando de cambio
no<esc> Inserta 1 línea en blanco
nJ Junta líneas, funciona con selección
u Deshacer, también C-Z en windows
nY Copia <n> Líneas a partir del cursor a la memoria
np Pega n veces lo último copiado luego del cursor (los comandos que borran también copian)
nP Pega n veces lo último copiado después del cursor
nrc Remplaza desde el cursor n veces por el caracter c
nic Inserta desde el cursor n veces el caracter c
ctc Cut til. Cortar hasta el caracter c (foward)
cTc Cut til. Cortar hasta el caracter c (backward)
dtc Delete til. Borrar hasta el caracter c (foward)
dTc Delete til. Borrar hasta el caracter c (backward)
YP Duplica la linea actual

CASE

Teclas Descripción
Vu Lowercase line
VU Uppercase line
vEU Switch word to uppercase
ggguG Set all text to lowercase
:set ignorecase Ignore case in searches
:set smartcase Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g Sets first letter of each word to uppercase
:%s/\<./\l&/g Sets first letter of each word to lowercase
:%s/.*/\u& Sets first letter of each line to uppercase
:%s/.*/\l& Sets first letter of each line to lowercase

Selección

Teclas Descripción
vic “Visual inside character”. Selecciona entre caracteres. Por ej vi” o vi’ o vi(
vib “Visual inside block”. Selecciona entre parentesis/bloques
dic “Delete inside character”. Borra entre caracteres. Por ej di” o di’ o di(
dib “Delete inside block”. Borra entre parentesis/bloques
cic “Cut inside character”. Corta entre caracteres. Por ej ci” o ci’ o ci(
cib “Cut inside block”. Corta entre parentesis/bloques
C-Q Selección visual en columnas

Marcas y navegación

Teclas Descripción
mc Establece una marca c (de la a a la z)
c Posiciona el cursor en la marca c
’. Ir a la última linea modificada del archivo
. Ir a la posición exacta del último cambio
g; cycle thru recent changes (oldest first) (new in vim6.3)
g, Reverse direction (new in vim6.3)
C-O Retroceder según lo movimientos realizados en el archivo
C-I Retroceder según lo movimientos realizados en el archivo (dirección inversa)

Macros

Teclas Descripción
q{r} Graba una macro en el registro {r} (finaliza grabación con q).
Q{r} Agrega comandos a la macro del registro {r}.
{n}@{r} Ejecuta {n} veces la macro del registro {r} (Por ej. 5@{r})
@@ Ejecuta la última macro ejecutada
:reg {r} Examina la macro del registro {r}
:normal @{r} Aplica la macro a todas las selecciones visuales
:argdo normal @{r} Aplica la macro a todas las selecciones visuales de todos los buffers abiertos

Búsquedas

Teclas Descripción
n/s enter Busca n veces la cadena s hacia adelante
n?s enter Busca n veces la cadena hacia atrás s
n Busca la siguiente ocurrencia
N Busca la ocurrencia anterior
/^s enter Busca s al comienzo de las líneas
/s$ enter Busca s al final de las líneas
/s.t enter Busca s Cualquier caracter y t (Ej: Pe.o encontraría Pelo y Peso)

Folding

Comando Descripción
zc Cierra el “folding” actual
zo Abre el “folding” actual
za Cambia el estado del “folding”
zC Cierra todos los “foldings”
zO Abre todos los “foldings”
zA Cambia el estado de todos los “foldings”

Modos

Commands Mode
nmap, nnoremap, nunmap Normal mode
imap, inoremap, iunmap Insert and Replace mode
vmap, vnoremap, vunmap Visual and Select mode
xmap, xnoremap, xunmap Visual mode
smap, snoremap, sunmap Select mode
cmap, cnoremap, cunmap Command-line mode
omap, onoremap, ounmap Operator pending mode

Plugins y configuraciones propias

Modo Commands Descripción
n,i <A-k> vim-signature: Muestra lista de marcadores
n <leader>e scalpel: Reemplazo de la palabra activa
n gc<motion> Commentary para comentar, porej gcap para un parrafo
n gcc Commentary para comentar una línea

Plugins: vim-textobj

Plugin Mode  
vim-textobj-python norm <action>if inner function, por ej vif, dif
vim-textobj-python norm <action>ac a class, por ej vac, dac
vim-textobj-python norm <action>ic inner class, por ej vic, dic
vim-textobj-comment norm <action>ac a comment, por ej vac, dac
vim-textobj-comment norm <action>ic inner comment, por ej vic, dic

Comandos y Trucos

Comando Descripción
!nGsortEnter Ordena mediante sort las n líneas a partir del cursor
:marks Muestra las marcas activas
:view <f> Abre en modo Read only el archivo <f>
:ab Abreviaciones (por ej. :abreviate pm Patricio Moracho)
:g/^\s*$/d Elimina todas la líneas en blanco
:% s /b/r Remplaza primera ocurencia de <b> por <r>
:% s /b/r/g Remplaza todas las ocurencias de <b> por <r>
:%s/ \s*$/ Remplaza espacios de cada línea de un archivo
:%s/\t/ /g Remplaza tabs de cada línea de un archivo
:%retab! Retabular el archivo (convierte espacios en tabs)
:changes Lista los cambios e el archivo
:ju(mps) Lista movimientos por los archivos
:his c Historia de comandos
:his s Historia de búsquedas
Ctrl-w Ctrl-f open file under cursor in new window
<esc>nic<esc> Inserta nveces el caracter c
:<Ctr-f> Historia de comandos
gqap Reformatea parrafo actual

Plugin: vim-signature

Commands Mode
mx Toggle mark ‘x’ and display it in the leftmost column
dmx Remove mark ‘x’ where x is a-zA-Z
m, Place the next available mark
m. If no mark on line, place the next available mark. Otherwise, remove (first) existing mark.
m- Delete all marks from the current line
m<Space> Delete all marks from the current buffer
] Jump to next mark
[' Jump to prev mark
]’ Jump to start of next line containing a mark
[’ Jump to start of prev line containing a mark
'] Jump by alphabetical order to next mark
’] Jump by alphabetical order to start of next line having a mark
’[ Jump by alphabetical order to start of prev line having a mark
m/ Open location list and display marks from current buffer
m[0-9] Toggle the corresponding marker !@#$%^&*()
m<S-[0-9]> Remove all markers of the same type
]- Jump to next line having a marker of the same type
[- Jump to prev line having a marker of the same type
]= Jump to next line having a marker of any type
[= Jump to prev line having a marker of any type
m? Open location list and display markers from current buffer
m<BS> Remove all markers

Mapeos particulares

Modo Commando Descripción
n,i A-n Enciende o apaga el modo de numeración relativo
n <Leader>cd Configura el path de trabajo al del archivo abierto
n, i A-d Duplica la línea actual
v (,[,{,",<,' Cierra la selección visual con los caracteres mencionados
n, i F2 Salvar buffer
n, i F5 Maximizar ventana
n, i F6 Arranca un explorer de windows en el directorio actual
n, i F8 Enciende o apaga el navegador de “Tags” a la izquierda (requiere pluggin)
n, i F10 Enciende o apaga el exporador NerdTree (requiere pluggin)
n, i F11 Enciende o apaga el modo “Full Screen” en Windows
n, i F12 Abre el .vimrc
n, i A-w Selecciona la palabra
n, i A-<end> Abre el Buffer exlorer (requiere pluggin)
n, i A-X o A-x Salir de Vim
n, i A-<home> Muestra las sesiones de edición disponibles (requiere pluggin)
n, i C-n Abrir un nuevo buffer en blanco
n, i A-<Up> Mueve la línea actual hacia arriba
n, i A-<Down> Mueve la línea actual hacia abajo
n, i, v A-<Right> Identado de la línea o selección a derecha
n, i, v A-<Left> Identado de la línea o selección a izquierda
v j,, j;, j Join de líneas con separador ,, ; o ` `

Si te gustó o te resulto útil lo que has leído y tienes las ganas de colaborar con el autor, puedes hacerlo a través:

@pmoracho QR code
https://pmoracho.github.io/blog/2016/12/23/My-Vim-Tips/
23-Dec-16
BY-NC-SA 4.0 https://pmoracho.github.io/disclosure
https://pmoracho.github.io/blog/2016/12/23/My-Vim-Tips/