¿Hay alguna manera de aumentar / disminuir el primer dígito después / debajo del cursor, no el número entero?
Sé que no es cómo funciona vim, pero ¿hay un complemento que lo haga? No pude encontrarlo.
Es muy útil al editar CSS y en otros casos también.
Dado:
▐margin: 10px
Cuando presiono CTRL-Aquiero ver:
▐margin: 20px
Real:
▐margin: 11px
key-bindings
arithmetic
firedev
fuente
fuente

10<C-a>agregar 10 or2reemplazar el 1 con un 2.Respuestas:
Esto parece funcionar bastante bien, y hace cosas bastante sensatas cuando se usa
<C-a>en un 9 (95 se convierte en 105), o<C-x>en un 0 (105 se convierte en 95):search()tiene la ventaja de no reiniciar@/.a <Esc>h- Vaya al modo de inserción, agregue un espacio después del dígito y vaya a la izquierda para que el cursor esté en la parte superior del dígito.<C-a>o<C-x>.lxhpara eliminar el espacio que agregamos.He asignado esto a
g<C-a>yg<C-x>, por lo que aún puede llamar al original.Una versión ligeramente diferente que solo buscará números en la línea actual (pero dejará un espacio colgante si no hay un número en la línea actual):
Y aquí hay otra versión que usa el mismo concepto que antes, pero también agrega un espacio antes del dígito. Esto hará
g<C-a>caso omiso de cualquier signo munis antes del número (por defecto,<C-a>en la-42voluntad 'incremento' a-41.También acepta un recuento, por lo que
5g<C-a>incrementará el número en 5:fuente
Incremento básico
Aquí hay una macro simple para realizar la acción:
En modo normal usted
m`Marque su ubicaciónlmover un personaje a la derechav$xcortar hasta el final de la líneahvolver a la posición original<c-a>incremento (o decremento)ppegar tu corte``volver a tu marcaSalta al siguiente número
Si desea saltar al siguiente número (o permanecer en su posición actual si está en un número), necesita una función que verifique el carácter de curso actual y el posible salto al siguiente número.
NextNumcoloca el carácter debajo del cursor, comprueba si es un número y, si no, busca el siguiente número. Después de eso, el resto es igual. Si desea que el mapeo sea diferente, simplemente cambie elnnoremap <leader>aque desee, por ejemplonnoremap <c-a>.Ignorando negativos y números superiores a 9
Si desea simplemente recorrer los dígitos y no hacer que actúen como enteros con signo, las siguientes funciones aumentarán y disminuirán y se desplazarán a 0 y 9.
Ahora, cuando estás encendido
8y tecleas<leader>a, obtienes9. Hacerlo nuevamente da como resultado0. Si pulsa<leader>xen0llegar9. Lo mismo ocurre con los números negativos. Las funciones cortan un solo carácter, incrementan, disminuyen o vuelcan y luego pegan en su lugar.fuente
<c-a>/<c-x>también.<c-a>y hacen<c-x>algo más porque el comportamiento predeterminado no es tan útil.<c-a>y<c-x>mucho. Cada vez que actualizo una versión o aumento una variable de rango, simplemente en[N]<c-a>lugar de eliminar y reemplazar.<c-a>y<c-x>que debería descartarse para una función que hace lo mismo pero ignora el guión.Aquí hay una versión que escribí usando una expresión sustituta:
Cada uno solo busca el primer dígito en la línea y suma o resta uno si está en el rango [0-8] o [1-9], respectivamente. Tiene tres problemas:
"/y si tiene hlsearch activado, todos los números en el búfer actual se resaltarán cuando lo use. Puede agregar:noh<CR>a cada uno de losmapcomandos anteriores para detener el resaltado, pero no sé cómo detener bien el registro.Además, si fuera yo, mapearía lo anterior a
<leader>ay<leader>x, en lugar de hacerloCTRL-A/X. De esta manera, tiene ambos comportamientos disponibles para usted.<leader>es, por defecto, la tecla de barra invertida (\).fuente
:noh. Pero el verdadero problema es que no puede usar la posición del cursor como base y, por lo tanto, solo puede incrementar el primer dígito de la línea.noremap) y nuncamap. Vea esta página para una explicación más detallada de eso.