Repita el enésimo último comando en vim

13

He notado que vim puede ser bastante intuitivo, pero tengo problemas para encontrar una manera de repetir el comando penúltimo (o penúltimo, último penúltimo, etc.). Al escribir .en modo normal, se repetirá el último comando. Presionar 3.repetirá el último comando tres veces.

Digamos que escribo oHello<Esc>entonces A, World!<Esc>. Ahora consigo

Hello, World!

en la pantalla. Ahora, di que quiero conseguir

Hello, World!
Hello
Hello
Hello

sin escribir Hola ¿Vim almacena el historial más allá de un comando, por lo que podría escribir algo como 3,2.(es decir, repetir el penúltimo comando tres veces)?

redbmk
fuente
2
Recuerde que puede grabar cualquier cosa como una macro (y qaoHello<esc>qluego @arepetirla Hellocuando lo desee). También hay @@que repetir la última macro utilizada.
James McLaughlin
2
Supongo que también podría hacer 3@apara repetir la macro varias veces
redbmk

Respuestas:

8

No, el .comando en vimno tiene un historial, ni hay ningún tipo de historial de repetición para comandos en modo normal que yo sepa. Para la menor cantidad de pulsaciones de teclas, lo recomendaría 4oHello<Esc>3jA, World<Esc>. Si ya lo has hecho oHello<Esc>A, World<Esc>, puedes seguir eso con uyy<Ctrl-r>3p.

jw013
fuente
4

Existe un complemento llamado RepeatLast.vim que hace lo que quiere pero con un costo: su vim siempre está en modo macro de grabación. Puede instalarlo con el administrador de paquetes que está usando como cualquier otro paquete vim o simplemente puede clonarlo y soltarlo ~/.vim/pluginsi está usando vim o ~/.config/nvim/plguinsi está usando neovim. Para repetir la penúltima acción, debe escribir 2\.en modo normal y para repetir la última acción, debe escribir <n>\.en modo normal.

http://www.vim.org/scripts/script.php?script_id=4381 https://github.com/vim-scripts/RepeatLast.vim

Sassan
fuente
2
@Sassan, ¿podrías quizás editar tu respuesta y explicar rápidamente cómo instalar este complemento y cómo exactamente se puede usar para resolver el problema del OP?
terdon
2
@terdon si alguien lee mi respuesta y no sabe cómo usar un administrador de paquetes, es realmente mejor para él tener curiosidad y pasar el tiempo y aprender sobre los administradores de paquetes en vim. Lo mismo para quien lo lee y no sabe cómo obtener información de docs / README.md para los complementos vim.
Sassan
Ese no es el punto. Una respuesta que es solo un enlace no se considera una respuesta . Las respuestas deben ser independientes y ofrecer toda la información necesaria para aplicar la solución propuesta. Gracias por la edición!
terdon
1
De hecho, estoy de acuerdo, este complemento es demasiado hack para ser utilizado por personas que no saben cómo instalarlo :)
Boris Churzin