我想调整 vim 以使用 cdo (气候数据运营商) 有效率的。因为我需要在(bash)脚本中使用 cdo,所以我想添加一个带有小描述的自动完成匹配(已实现!)(仍在搜索!)。
我设置了环境并且它在基本级别上运行。现在,我想知道是否可以操纵匹配字典关键字右侧弹出菜单的输出。
到目前为止我得到了一个简单的关键字匹配,见下图:
使用以下设置:
我的.vimrc:
set completeopt=longest,menuone
包含不同的字典,主要是cdo.dic:~/.vim/ftdetect/cdo.vim:
au BufRead,BufNewFile *.sh set dictionary+=~/.vim/dictionary/cdo.dic au BufRead,BufNewFile *.sh set dictionary+=~/.vim/dictionary/hamocc.dic au BufRead,BufNewFile *.sh set dictionary+=~/.vim/dictionary/mpiom.dic
我的字典文件 ~/.vim/dictionary/cdo.dic: with 与之匹配
abs -abs \
adisit -adisit \
...大约700多个...
目标:我希望得到的输出是显示在右侧的小描述,而不是字典文件的文件路径。因此最好对运算符进行简短的解释(也可能存储在字典文件中运算符之后?),例如。出于说明目的
selcode : Select parameters by code number {selcode,code ifile ofile}
从字典中读取一行:
selcode -selcode {Select parameters by code number [selcode,code ifile ofile]}\
因此基本上,我使用快速查找工具来查找操作员名称和简短描述,无需大量编程,也无需使用其他外部工具插件。所以这是一个“是否可能以及如何实现?”的问题...
到目前为止,我尝试了 vim 文档,并在谷歌上搜索了 vim、dictionary、complete、completeopt、pmenu,...
我很欣赏你的建议。
答案1
你不能影响字典补全的上下文信息(除非你直接改变Vim的源代码)。
然而,Vim 提供了实现自定义补全的能力。您可以在 找到所有相关信息和示例:help complete-functions
。这样,您就可以完全控制上下文(名为menu
, cp. :help complete-items
)。
您可以坚持使用字典文件作为源;你必须读入文件(例如通过readfile()
)并稍微解析它(matchlist()
),或者你直接将字典项定义为 Vim 列表,在实现自定义完成的 Vim 脚本中。
答案2
发现这个问题促使我写了一个插件:
https://github.com/jsit/vim-customcpt
它是由 aaron.spring 为响应 Ingo Karkat 接受的答案而构建的插件构建的,但接受任何任意 json 文件作为自动完成“字典”。