una tutorial sheet printable palabra keybindings duplicate cómo con commands cheat busquedas buscar borrar archivo vim keyboard-shortcuts

tutorial - vim shortcuts pdf



¿Cómo aumentas un número*directamente*debajo del cursor? (8)

Como supongo que 3 [9] 42 se convertirá en 4042 (de lo contrario, la solución de Xavier es casi perfecta (*)), usaría lo siguiente:

s//d*/%#/d//=(submatch(0)+1)

Que podría ser mapeado en:

nnoremap <silent> µ :<c-u>s//d*/%#/d//=(submatch(0)+v:count1)<cr>``

para aceptar un conteo. El único problema que veo es que no puede soportar la repetición (como en :h . )

(*) En el sentido de que repetir el comando no nos ayudará a incrementar una serie de números diferentes en la misma cantidad.

En vim et al, puede aumentar o disminuir el número en el que se encuentra su cursor utilizando CTRL A y CTRL X. Sin embargo, esto aumenta el número entero, pero me gustaría simplemente aumentar el número directamente debajo del cursor. Es un poco difícil de describir, así que esto es lo que quiero decir:

Ctrl+A usage, cursor is over the "6": [6]5 -> 66 What I need: [6]5 -> 75 or: 3[8]90 -> 3990

Espero que tenga sentido.

Busqué en Google un poco, pero no estoy seguro de que exista un atajo así que ¡cualquier consejo es muy apreciado!


En el comando global use Ctrl v para insertar Ctrl literal que significa que en modo normal aumente cada número /d/+ en 10

:g//d/+/norm! 10 Ctrl-v Ctrl-a

En el modo normal simplemente puedes hacer:

10 Ctrl-a


En este caso, normalmente escribo r y luego el dígito que quiero.


Probablemente hay una mejor manera, pero puedes hacer una macro o algo que se asigne a esto:

noremap <LEADER>a a <ESC>h<C-a>lxh noremap <LEADER>z a <ESC>h<C-z>lxh

Básicamente hace que el "65" "6 5", incremente el 6 y elimine el espacio. Probablemente hay una versión más corta de esto que también funcionaría.


Puedes hacerlo como (usa lo que sea antes de F9 ):

:nnoremap <F9> :exec ''s@^/(./{'' . (col(".")-1) . ''/}/)/(./)/(.*/)@/1'' . (getline(".")[col(".")-1]+1) . ''/3@''<CR>

Básicamente, solo encuentra la posición de los cursores en las filas, construye una cadena de expresiones regulares en ella y usa el carácter en esa posición para agregar 1.


Si no te importa desordenar el " registro " , aquí hay otra secuencia que lo hace:

s<C-R>=<C-R>"+1<CR>


<Ca> y <Cx> funcionan en números enteros (1 o más dígitos) pero no en "partes" de un número. Sin embargo, toma una "cuenta", por lo que 10<Ca> convierte [6]5 en 75 .

Otra opción, ya que solo desea cambiar un dígito, sería hacer r7 para convertir [6]5 en 75 .


v <CA/X> funciona bien ya que <CA/X> funciona en la palabra en la que se encuentra el cursor (es decir, un número) o en la selección visual (es decir, un número).