Ich weiß, dass ich .
damit den letzten Bearbeitungsbefehl wiederholen kann .
Gibt es eine Möglichkeit, den letzten UI-Manipulationsbefehl zu wiederholen? Zum Beispiel kann ich schreiben 10<C-W>-
, um ein Fenster um zehn Zeilen zu verkleinern. Es wäre schön, in der Lage zu sein, eine Taste zu drücken , um diesen Befehl einfach zu wiederholen, wenn ich ihn weiter verkleinern möchte.
repeated-commands
wchargin
quelle
quelle
fz
und dann10;
? Was ist:tabm +1
? Müssen diese alle speziell behandelt werden?Antworten:
Der Punktbefehl
.
funktioniert, weil Vim Befehle "verfolgt", die den Inhalt von Puffern ändern. Wenn Sie ausführen:echo b:changedtick
, wird es mit jeder Änderung des aktuellen Puffers inkrementiert.Vim "verfolgt" jedoch nicht die Befehle, die nicht bearbeitet wurden. Also, nein, was Sie verlangen, kann nicht getan werden.
quelle
Dies ist in vim standardmäßig nicht möglich, da vim das zuvor ausgeführte wincmd nicht verfolgt. Dies ist jedoch durch einige clevere Zuordnungen möglich:
Beachten Sie, dass Zuordnungen, die verwendet werden
<C-w>
, nur dann wiederholt werden können, wenn sie nicht dernore
Sorte sind. Mit ausgegebene WinCMDS:wincmd
werden nicht wiederholt. Wincmds, die mehr als ein Zeichen enthalten, können ebenfalls nicht ausgeführt werden (z. B.<C-w>gf
) .Relevante Hilfethemen
:help v:count
:help getchar()
:help nr2char()
:help expr1
:help :wincmd
:help :execute
:help :for
:help :map-<silent>
:help c_CTRL-U
:help <SID>
quelle
.
bei einer Zählung. Wenn eine Zählung an übergeben wird,.
wird die vorherige Zählung ignoriert. Also2dd
gefolgt von3.
würde 2 Zeilen und dann 3 Zeilen löschen; Im Gegensatz dazu würde mit Ihren Zuordnungen,2<C-w>-
gefolgt von3Q
, das Fenster um 2 Zeilen und dann um 6 (= 2x3) Zeilen verkleinert. Dieses Verhalten ist in Ordnung, aber es ist nett, analoge integrierte Vim-Befehle zu verwenden, wenn Sie festlegen, wie sich ein benutzerdefinierter Befehl verhalten soll.Das Submode- Plugin kann dabei helfen. Sie können einen "Untermodus" definieren, den Sie eingeben, indem
<C-W>-
Sie definieren-
(und möglicherweise+
), dass die Größe des Fensters weiter geändert werden soll.quelle
Es gibt ein weiteres Plugin namens repmo.vim ("Wiederholungsbewegungen"), das tun kann, was Sie wollen.
Aber Sie müssen die Bewegungen angeben (oder Aktionen im Allgemeinen) Sie wiederholen möchten. Meins ist derzeit so konfiguriert:
Nachdem 5 CTRL-W +ich das getan habe, kann ich ;es so oft wie möglich wiederholen.
Das Plugin erstellt Zuordnungen für jeden der angegebenen Schlüssel.
Wenn
f
odert
verwendet werden, werden die Zuordnungen;
und,
auf ihr Standardverhalten zurückgesetzt.Ich finde die Zuordnung
g;
besonders nützlich, um zu einem früheren Bearbeitungspunkt zurückzukehren. g; ; ; ;quelle
,
wirkt das Drücken sofort und5,
funktioniert auch wie erwartet. Ist es möglich , Sie haben Ihr Setmapleader
zu,
?