Répéter la nième dernière commande dans vim

13

J'ai remarqué que vim peut être assez intuitif, mais j'ai du mal à trouver un moyen de répéter l'avant-dernière commande (ou l'avant-dernier, l'avant-dernier, etc.). En tapant .en mode normal, il répétera la dernière commande. Appuyez sur 3.pour répéter la dernière commande trois fois.

Disons que je tape oHello<Esc>alors A, World!<Esc>. Je reçois maintenant

Hello, World!

sur l'écran. Maintenant, dis que je veux

Hello, World!
Hello
Hello
Hello

sans taper Bonjour. Est-ce que vim stocke l'historique au-delà d'une commande, donc je pourrais taper quelque chose comme 3,2.(c'est-à-dire répéter l'avant-dernière commande trois fois)?

redbmk
la source
2
N'oubliez pas que vous pouvez enregistrer n'importe quoi en tant que macro ( qaoHello<esc>qpuis @arépéter Helloquand vous le souhaitez.) Il y a aussi @@de répéter la dernière macro utilisée.
James McLaughlin
2
Je suppose que vous pouvez également 3@arépéter la macro plusieurs fois
redbmk

Réponses:

8

Non, la .commande dans vimn'a pas d'historique, et il n'y a aucune sorte d'historique de répétition pour les commandes en mode normal que je connaisse. Pour le moins de frappes, je recommanderais 4oHello<Esc>3jA, World<Esc>. Si vous l'avez déjà fait oHello<Esc>A, World<Esc>, vous pouvez suivre cela avec uyy<Ctrl-r>3p.

jw013
la source
4

Il y a ce plugin appelé RepeatLast.vim qui fait ce que vous voulez mais avec un coût: votre vim est toujours en mode macro d'enregistrement. Vous pouvez l'installer avec le gestionnaire de packages que vous utilisez comme tout autre package vim ou vous pouvez simplement le cloner et le déposer ~/.vim/pluginsi vous utilisez vim ou ~/.config/nvim/plguinsi vous utilisez neovim. Pour répéter l'avant-dernière action, vous devez taper 2\.en mode normal et pour répéter la dernière action, vous devez taper <n>\.en mode normal.

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

Sassan
la source
2
@Sassan, pourriez-vous peut-être modifier votre réponse et expliquer rapidement comment installer ce plugin, et comment exactement il peut être utilisé pour résoudre le problème du PO?
terdon
2
@terdon si quelqu'un lit ma réponse et ne sait pas comment utiliser un gestionnaire de paquets, il est vraiment préférable pour lui de devenir curieux et d'aller passer du temps et de se renseigner sur les gestionnaires de paquets dans vim. Idem pour celui qui le lit et ne sait pas comment obtenir des informations de docs / README.md pour les plugins vim.
Sassan
Ce n'est pas le propos. Une réponse qui n'est qu'un lien n'est pas considérée comme une réponse . Les réponses doivent être autonomes et offrir toutes les informations nécessaires pour appliquer la solution proposée. Merci pour l'édition!
terdon
1
En fait, je suis d'accord, ce plugin est trop piraté pour être utilisé par des gens qui ne savent pas comment l'installer :)
Boris Churzin