¿Usa retroceso para modificar el comando actual en modo normal?

9

A veces, al ingresar un comando en modo normal, puede hacer un error tipográfico, por ejemplo, si tengo la intención de escribir 10dk, puedo comenzar a escribir accidentalmente 19d.

Dado que el comando aún no se ha completado / confirmado, ¿es posible eliminar las teclas incorrectas usando la tecla de retroceso, como tal: en 19d<backspace><backspace>0dklugar de tener que presionar escape y volver a intentar el comando?

Pregunta secundaria: ¿Hay un término Vim para la estructura de datos que contiene el comando actual antes de que se confirme?

HellaMad
fuente
1
¡Probablemente, esto se puede pedir como una característica en versiones más nuevas!
SibiCoder
3
Relacionado: vi.stackexchange.com/questions/570/…
SibiCoder
44
AFAIK no es posible, pero, dado que estas secuencias son cortas, no estoy seguro de qué ganancia lograría tal característica. Cuando tienes que volver a intentar toda la secuencia, al menos estás "obligado" a repetirla hasta que no cometas tales errores;) (es decir, ¡repetir el personaje de construcciones! Juego de palabras intencionado).
VanLaser
1
@VanLaser La peor pesadilla de un Vimmer es ser "forzado" a repetir algo;) Además, soy un asco al escribir y tengo un teclado en blanco, por lo que no es raro que estropee un comando 256 veces antes de hacerlo bien.
HellaMad
44
¿Qué podría salir mal cuando un mecanógrafo malo usa un teclado en blanco?
romainl

Respuestas:

3

No hay forma de hacerlo y es normal que no lo haya: los comandos de modo normal generalmente son bastante cortos y pueden cancelarse Escsi lo estropea.

Una posible solución sería usar el :normalcomando. Hace que el proceso sea más largo pero, por ejemplo, si escribe :normal 10jen la línea de comando, Vim se ejecutará 10jcomo si lo hubiera escrito en modo normal. (Ver :h :normal)

También puede agregar estas líneas a su .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

Crean un mapeo (aquí F4pero usan lo que quieran) que llamará a la función NormalModeCommand().

La función le permite escribir una cadena en la línea de comando y luego ejecutar la cadena que escribió como comando de modo normal. A medida que escribe la cadena en la línea de comando, puede corregirla como cualquier otro comando. Por supuesto, no es ideal, pero una vez más, Vim no está destinado a hacer eso.

statox
fuente