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 awejdź w tryb wstawiania<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the lettera`<C-p>wybierz ostatni element z wyświetlonej listy ukończeń, w moim systemie jest to słowoarezzo. (Uwaga:longestUwzglę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 wstawianiajprzejdź w dół do następnej linii, gotowy do wykonania tej samej operacji w następnej liniiqZatrzymaj 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 jsą 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,previewjej longestopcji, która powoduje <C-p>natychmiastowe wstawienie. Jeśli usunę longestz 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>jjako 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