我正在尝试定义一个宏,该宏可以快速生成随机单词列表。
我希望宏将其转换为类似的列表
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
),按下进入并然后Esc+j+q
..然后在执行宏时效果很好