Je sais que je peux utiliser .
pour répéter la dernière commande d'édition.
Existe-t-il un moyen de répéter la dernière commande de manipulation de l'interface utilisateur? Par exemple, je peux écrire 10<C-W>-
pour réduire une fenêtre de dix lignes. Ce serait bien de pouvoir appuyer sur ⟨ une touche ⟩ de répéter facilement cette commande si je veux réduire plus.
repeated-commands
wchargin
la source
la source
fz
et ensuite10;
? Et alors:tabm +1
? Est-ce que tout cela devra être dans un boîtier spécial?Réponses:
La commande dot
.
fonctionne parce que Vim "garde la trace" des commandes qui modifient le contenu des tampons. Si vous exécutez:echo b:changedtick
, vous le verrez incrémenter à chaque modification du tampon actuel.Mais Vim ne "garde pas" la trace des commandes non éditables. Ainsi, non, ce que vous demandez ne peut pas être fait.
la source
Il n'y a aucun moyen de le faire par défaut dans vim car vim ne garde pas la trace du wincmd précédemment exécuté. Cependant, il est possible de le faire grâce à des mappages intelligents:
Notez que si vous avez des mappages qui les utilisent,
<C-w>
ils ne peuvent être répétés que s'ils ne sont pas de lanore
variété. Aucun wincmds émis à l'aide de:wincmd
ne sera répété. De plus, aucun wincmds contenant plus d'un caractère ne peut être exécuté (tel que<C-w>gf
) .Rubriques d'aide pertinentes
:help v:count
:help getchar()
:help nr2char()
:help expr1
:help :wincmd
:help :execute
:help :for
:help :map-<silent>
:help c_CTRL-U
:help <SID>
la source
.
se comporte avec un nombre. Lorsqu'un compte est fourni à.
, le compte précédent est ignoré. Donc2dd
suivi de3.
supprimerait 2 lignes puis 3 lignes; en revanche, avec vos mappages,2<C-w>-
suivi de3Q
réduirait la fenêtre de 2 lignes, puis de 6 (= 2x3) lignes. Ce comportement est correct, mais il est agréable de s'inspirer des commandes Vim intégrées analogues lors du choix du comportement d'une commande personnalisée.Le plugin de sous- mode peut vous aider. Vous pouvez définir un "sous-mode" que vous entrez en tapant
<C-W>-
, dans lequel vous avez défini-
(et peut-être+
) de continuer à redimensionner la fenêtre.la source
Il existe un autre plugin appelé repmo.vim ("répéter les mouvements") qui peut faire ce que vous voulez.
Mais vous devrez spécifier les mouvements (ou actions en général) que vous souhaitez répéter. Le mien est actuellement configuré comme ceci:
Donc, après l'avoir fait, 5 CTRL-W +je peux le ;répéter autant de fois que nécessaire.
Le plugin fonctionne en créant des mappages pour chacune des clés spécifiées.
Lorsque
f
out
sont utilisés, les mappages;
et,
sont réinitialisés à leur comportement par défaut.Je trouve le mappage
g;
particulièrement utile pour revenir à un point de montage antérieur. g; ; ; ;la source
,
agit immédiatement et5,
fonctionne aussi comme prévu. Est - il possible que vous avez défini votremapleader
à,
?