Я намагаюся визначити макрос, який швидко формує список випадкових результатів слів.
Я хочу, щоб макрос перетворив це на такий собі список
a
b
c
d
e
в це
arezzo
bywords
czars
détente
eyrie
Що я маю досі:
- поставити курсор на письмі
a - почати запис макросу
qq aувійти в режим вставки<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letterа`<C-p>виберіть останній пункт у списку завершень, який з’являється, у моїй системі його словоarezzo. (Примітка. Яlongestвключив у свою'completeopt'установку, яка необхідна для<C-p>роботи таким чином під час завершення:)'set completeopt=longest,menuone,preview'.<C-y>прийняти завершення^[^[вихід в режим вставкиjперехід до наступного рядка, готовий зробити таку ж операцію на наступному рядкуqприпинити запис
коли я створюю макрос і виконую кроки вручну, все працює добре, але коли я виконую макрос, я бачу повідомлення, що в командному рядку блимає щось на кшталт:
сканування файлу словника
і нічого не відбувається, команд у макросі jвиконується тільки , тобто курсор рухається вниз по рядку, але жодна з команд завершення не виконується.
Чи можна використовувати завершення режиму вставки в макросі, і якщо так, то як це зробити?
set completeopt=longest,menuone,previewйого longestваріант, який викликає <C-p>негайне вставлення. Якщо я видаляю longestз completeoptрядка, я отримую таку ж поведінку, як і ви. Крім того, так спрацювали клавіші зі стрілками! дякую (я забув, що ви можете використовувати їх для навігації по списку завершень)
:set completeopt=і a<c-x><c-k><esc>jяк ваш макрос.
<C-p>кроку ... коли я роблю це у своєму vim, воно просто дає повідомленняback at original- не вибирає останній елемент. Я двічі використовував клавішу зі стрілкою вгору, щоб вибрати останнє слово (мій випадокazures), натиснув клавішу Enter і тоEsc+j+q.. тоді воно працює чудово на виконанні макросу