Mis tips de Vim
23 Dec 2016 13 mins vim 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:
|
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
|
 |