Rozważać:
apple
pear
Umieść kursor w pierwszym wierszu i wpisz Yp
, tworząc:
apple
apple
pear
Umieść kursor na pear
linii i wpisz, .
aby powtórzyć ostatnie polecenie. Powtarza to tylko p
(a nie kombinację Yp
), tworząc:
apple
apple
pear
apple
Chciałbym opowiedzieć .
o powtórzeniu ostatnich N poleceń. Coś jak 2.
powtórzyć kombinację, Yp
aby uzyskać:
apple
apple
pear
pear
Ofc to nie zadziała - powtarza p
dwa razy. Pomysł polegałby jednak na „powtórzeniu sekwencji ostatnich 2 poleceń”.
Wiem, że mogę q
nagrywać sekwencje poleceń i powtarzać je @@
, ale to rozwiązanie nie jest idealne, ponieważ wymaga planowania od zawsze, podczas gdy w praktyce często nie zdajesz sobie sprawy, że musisz coś powtórzyć zrobiłeś to.
Czy jest jakiś sposób na osiągnięcie tego, czego chcę?
Nagroda pocieszenia: Jeśli powyższe nie jest możliwe, czy istnieje sposób na powtórzenie ostatniego odtwarzania makra? Na przykład, jeśli wpisałem, @@
aby odtworzyć moje ostatnie makro, chciałbym, aby kolejne .
były równoważne z @@
ponownym wpisaniem - co nie jest (np. Jeśli wynik @@
zależy od linii, na której jesteś)
źródło
nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>
jednak działało, musisz zainstalować tę wtyczkę: github.com/tpope/vim-repeatOdpowiedzi:
Vim przechowuje tylko ostatnie wykonane polecenie i tylko to jest powtarzane przez
.
; moim zdaniem wszystko inne byłoby trudne do opanowania.Jeśli czujesz potrzebę powtórzenia
Yp
kombinacji jako pojedynczego elementu, musisz zrobić to jedno polecenie. Wtyczka repeat.vim Tima Pope'a pozwala to zrobić z łatwością dla niestandardowych mapowań. Oczywiście, jeśli wybierzesz krótki klawisz [sekwencję] do mapowania, możesz po prostu szybko go wpisać (zamiast.
), a nawet uniknąć integracji z powtórzeniem. Vim.BTW, moja wtyczka LineJuggler zapewnia
]d
mapowanie w celu zduplikowania bieżącej linii i obsługuje powtarzanie za pośrednictwem repeat.vim.źródło
W
Yp
jedyną „zmianą” do powtórzenia jestp
. Jedynym sposobem, w jaki wiem, aby zmienić zachowanie.
w trybie normalnym, jest dodaniey
docpoptions
opcji:co pozwala powtórzyć ostatni szarpnięcie, a także ostatnią zmianę.
Ale to nic nie zmienia w twoim problemie, ponieważ
Yp
wciąż są dwa polecenia: szarpnięcie, po którym następuje zmiana.Nie sądzę, że możesz dostać to, co chcesz bez skromnych skryptów. Czy rzuciłeś okiem na sekcję skryptów vim.org ?
źródło
Często używam
map
do osiągnięcia tego efektu. Na przykład:Następnie
F12
kilkakrotne naciśnięcie spowoduje wykonanieYpYpYp
itd. Jeśli chcesz przejść do następnego wiersza po każdej wklejaniu, zamapujYp+
zamiast niego klawisz .źródło
Niezwykłe urządzenie, jakim jest wtyczka RepeatLast (przez nasz własny @joeytwiddle ), zapewnia właśnie tę funkcjonalność, dzięki bezbożnej metodzie rejestrowania wszystkiego, co robisz jako makro.
To zapewnia szereg nowych odwzorowań, ale jeśli mam poprawnie czytać dokumentację, aby wykonać można opisać można użyć sekwencji poleceń (zakładając używasz domyślnego edycje
<leader>
z\
):Yp
Yank i wstaw / wklej linięapple
,j
Przesuń w dół linii, aby kursor był teraz napear
linii,\D
zapomnij oj
rozkazie,2\.
Powtórz dwa poleceniaY
ip
źródło