Dans Vim, existe-t-il un moyen de répéter la dernière commande, que ce soit une modification ou non, et sans avoir la prévoyance d'enregistrer d'abord une macro?
Par exemple. dis que je tape :bn
, et je veux recommencer (ce n'était pas le bon fichier). Appuyez sur .
ne le fait évidemment pas. Ou peut-être que je fais gE
et que je veux répéter (avec une seule touche car clairement gE
est un peu pénible à taper).
Peut-être qu'il y a des plugins? Similaire à cette question .
(Encore plus cool serait de lier rétroactivement un certain nombre de commandes à une macro, donc on pourrait taper 5qa@a
ou quelque chose pour répéter les 5 dernières commandes ...)
Pour répéter une commande de ligne de commande, essayez @:
, Pour répéter une commande en mode normal/insertion, essayez .
,
Ajoutez le mappage ci-dessous à votre .vimrc si vous souhaitez raccourcir le même: -
:noremap <C-P> @:<CR>
- Ceci mappera Ctrl + P à la commande de ligne de commande précédente. Vous pouvez mapper n'importe quel autre combo.
:help repeating
fournira les commandes de répétition typiques (comme., @ :, etc.). Vous pouvez essayer repeat.vim . Cela pourrait vous rapprocher de ce que vous recherchez.
Pour les commandes de mouvement, aucun mécanisme n'est intégré à Vim. Les commandes Find et To (f
/F
/t
/T
) ont ;
et ,
pour répéter et inverser. Il existe quelques plugins qui étendent ces liaisons pour répéter d'autres commandes de mouvement:
http://www.vim.org/scripts/script.php?script_id=2174
http://www.vim.org/scripts/script.php?script_id=3665
Ce dernier devrait prendre en charge la répétition de gE
en utilisant ;
Vous pouvez simplement utiliser "."
Exemple: Vous avez "abc" à 10 endroits dans votre fichier et vous voulez le remplacer par "def" à 5 endroits de celui-ci.
Étape 1: Trouvez la première occurrence de abc en tapant la commande "/ abc"
Étape 2: Une fois le curseur sur "abc", remplacez abc par la commande "cw" pour supprimer le mot "abc"
Étape 3: Tapez "def" comme remplacement et appuyez sur Entrée pour passer en mode commande
Étape 4: Pour répéter cette action, tapez simplement la commande "n" pour passer à la prochaine occurrence de abc et tapez la commande ".". La commande se souvient que vous avez remplacé "abc" par "def" la dernière fois et effectuera la même chose ici.
Vous pouvez mapper @:
à une touche pour plus de commodité:
:map <F2> @:
puis il est plus facile de l'utiliser avec des répétitions.