Próbuję zdefiniować makro, które szybko generuje listę losowych słów.
Chcę, aby makro przekształciło to w taką listę
a
b
c
d
e
zaangażowany w to
arezzo
bywords
czars
détente
eyrie
Co mam do tej pory:
- umieść kursor na literze
a
- rozpocznij rejestrowanie makra
qq
a
wejdź w tryb wstawiania<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letter
a`<C-p>
wybierz ostatni element z wyświetlonej listy ukończeń, w moim systemie jest to słowoarezzo
. (Uwaga:longest
Uwzględniłem w swoim'completeopt'
ustawieniu, które jest wymagane<C-p>
do pracy w ten sposób podczas ukończenia:)'set completeopt=longest,menuone,preview'
.<C-y>
zaakceptować zakończenie^[^[
wyjdź z trybu wstawianiaj
przejdź w dół do następnej linii, gotowy do wykonania tej samej operacji w następnej liniiq
Zatrzymaj nagrywanie
kiedy tworzę makro i wykonuję kroki ręcznie, wszystko działa dobrze, jednak kiedy wykonuję makro, widzę komunikat migający w linii poleceń coś takiego:
skanowanie pliku słownika
i nic się nie dzieje, polecenia j
są uruchamiane tylko w makrze , tzn. kursor przesuwa się w dół linii, ale nie uruchamia się żadne polecenie zakończenia.
Czy można używać uzupełnień w trybie wstawiania w makrze, a jeśli tak, to jak to zrobić?
set completeopt=longest,menuone,preview
jej longest
opcji, która powoduje <C-p>
natychmiastowe wstawienie. Jeśli usunę longest
z completeopt
łańcucha, otrzymam takie samo zachowanie jak ty. Także tak, klawisze strzałek działały! dzięki (zapomniałem, że można ich użyć do poruszania się po liście ukończenia)
:set completeopt=
i a<c-x><c-k><esc>j
jako makro.
<C-p>
kroku ... kiedy to robię w moim vimie, to po prostu daje komunikatback at original
- nie wybiera ostatniego elementu. Użyłem dwa razy klawisza strzałki w górę, aby wybrać ostatnie słowo (moja sprawaazures
), nacisnąłem enter i potemEsc+j+q
.. to działa całkiem dobrze na uruchamianiu makr