Wiem, że mogę użyć .
do powtórzenia ostatniego polecenia edycji.
Czy istnieje sposób na powtórzenie ostatniego polecenia manipulowania interfejsem użytkownika? Na przykład mogę pisać, 10<C-W>-
aby zmniejszyć okno o dziesięć wierszy. Byłoby miło, aby móc prasie ⟨ jakiegoś klucza ⟩ łatwo powtórzyć tę komendę, jeśli chcę go więcej kurczyć.
repeated-commands
wchargin
źródło
źródło
fz
, a potem10;
? Co:tabm +1
? Czy to wszystko będzie musiało być w specjalnej obudowie?Odpowiedzi:
Polecenie kropkowe
.
działa, ponieważ Vim „śledzi” polecenia zmieniające zawartość buforów. Jeśli uruchomisz:echo b:changedtick
, zobaczysz, że zwiększa się on z każdą zmianą w bieżącym buforze.Ale Vim nie „śledzi” poleceń, które nie są edytowane. Zatem nie, czego nie można zrobić, o co prosisz.
źródło
W vimie nie ma takiej możliwości, ponieważ vim nie śledzi poprzednio wykonanego programu wincmd. Można to jednak zrobić za pomocą sprytnych mapowań:
Zauważ, że jeśli używasz mapowań,
<C-w>
można je powtórzyć tylko wtedy, gdy nie sąnore
odmiany. Wszelkie wydane za pomocą wincmds:wincmd
nie będą się powtarzać. Ponadto nie można wykonać żadnych wincmds zawierających więcej niż jedną postać (np.<C-w>gf
) .Odpowiednie tematy pomocy
:help v:count
:help getchar()
:help nr2char()
:help expr1
:help :wincmd
:help :execute
:help :for
:help :map-<silent>
:help c_CTRL-U
:help <SID>
źródło
.
z liczeniem. Po dostarczeniu.
licznika poprzednie liczenie jest ignorowane. Tak więc2dd
następuje3.
usunięcie 2 linii, a następnie 3 linii; w przeciwieństwie do twoich mapowań,2<C-w>-
po których następuje3Q
zmniejszenie okna o 2 linie, a następnie o 6 (= 2x3) linii. Takie zachowanie jest w porządku, ale dobrze jest czerpać z analogicznych wbudowanych poleceń Vima, wybierając sposób, w jaki powinno się zachowywać polecenie niestandardowe.Podtryb Wtyczka może w tym pomóc. Możesz zdefiniować „podtryb”, który wpisujesz
<C-W>-
, wpisując , w którym zdefiniowałeś-
(i być może+
), aby kontynuować zmianę rozmiaru okna.źródło
Istnieje inna wtyczka o nazwie repmo.vim („powtarzaj ruchy”), która może robić, co chcesz.
Ale trzeba będzie określić, które wnioski (lub działania w ogóle) chcesz powtórzyć. Mój jest obecnie skonfigurowany w następujący sposób:
Więc po zrobieniu 5 CTRL-W +mogę uderzyć, ;aby powtórzyć to tyle razy, ile razy.
Wtyczka działa poprzez tworzenie odwzorowań dla każdego określonego klucza.
Gdy
f
lubt
są używane, odwzorowania;
i,
są przywracane do ich domyślnego zachowania.Uważam, że mapowanie jest
g;
szczególnie przydatne, aby wrócić do wcześniejszego punktu edycji. g; ; ; ;źródło
,
natychmiastowe działanie działa, a5,
także działa zgodnie z oczekiwaniami. Czy to możliwe, że ustawiłeśmapleader
TO,
?