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