Я намагаюся визначити макрос, який швидко формує список випадкових результатів слів.
Я хочу, щоб макрос перетворив це на такий собі список
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
.. тоді воно працює чудово на виконанні макросу