¿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-A
quiero ver:
▐margin: 20px
Real:
▐margin: 11px
key-bindings
arithmetic
firedev
fuente
fuente
10<C-a>
agregar 10 or2
reemplazar 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>
.lxh
para 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-42
voluntad '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ónl
mover un personaje a la derechav$x
cortar hasta el final de la líneah
volver a la posición original<c-a>
incremento (o decremento)p
pegar 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.
NextNum
coloca 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>a
que 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
8
y tecleas<leader>a
, obtienes9
. Hacerlo nuevamente da como resultado0
. Si pulsa<leader>x
en0
llegar9
. 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 losmap
comandos 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>a
y<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.