我可以在 Vim 自动完成词汇表中添加一组单词吗?

mad*_*adh 16 vim autocomplete

在 Vim 中,我知道使用 CTRL-n 和 CTRL-p 来自动完成文档中找到的单词。这对于促进使用描述性方法和变量名称非常有用。

我想添加一组我经常但不在我当前正在编辑的源文件中的单词来自动完成。我目前的解决方案是将单词列表添加到模板文件底部的评论中,但这充其量似乎有点浪费和笨拙。

有没有办法将单词添加到 Vim 的自动完成词汇表中,每个 Vim 会话都可以访问?

Joh*_*n T 13

您可以在~/.vimrc文件中使用缩写词来表示几个词:

:abbr 超级超级用户
:abbr autoc 自动完成
:abbr que 问题

这些将在按Space或后自动完成Enter。因此,如果您输入que然后按下,Space或者Enter它会为您完成“问题”一词。

如果你添加了很多并且想要这个界面:

替代文字

您可以使用字典。简单地设置一个每行一个单词的文件,然后在你的 .vimrc 中添加这样一行:

set dictionary+=/home/john/dict.txt
Run Code Online (Sandbox Code Playgroud)

用字典文件的位置替换路径。然后您可以使用Ctrl+xCtrl+k来提出建议。Ctrl+nCtrl+p从多个选择中选择下一个/上一个。


Rub*_*una 6

Ctrl常规自动完成的“来源”(从+获得的来源N)取自选项complete(请参阅:h 'complete'),默认值为

complete=.,w,b,u,t
Run Code Online (Sandbox Code Playgroud)

意思是

  1. .扫描当前缓冲区
  2. w从其他窗口扫描缓冲区
  3. b扫描缓冲区列表中的其他已加载缓冲区
  4. u扫描缓冲区列表中已卸载的缓冲区
  5. t标签补全

你可以添加你自己的字典

set complete+=k~/.vim/keywords.txt
Run Code Online (Sandbox Code Playgroud)

并在 中每行添加一个关键字~/.vim/keywords.txt。这样,您可以直接使用Ctrl+访问完成N(无需使用Ctrl+ X, Ctrl+显式调用字典完成K)。我发现这对于代码完成特别有用,其中我拥有所有常用的函数名称keywords.txt