¿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?


1
¡Probablemente, esto se puede pedir como una característica en versiones más nuevas!
— 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.