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


14

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

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

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

Answers:


11

您可以在~/.vimrc文件中仅使用几个单词的缩写:

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

Space或后,这些将自动完成Enter。因此,如果您键入que然后按SpaceEnter它将为您完成单词“ question”。

如果要添加很多内容并需要此界面:

替代文字

您可以使用字典。只需在每行上设置一个单词,然后在.vimrc中添加如下行:

set dictionary+=/home/john/dict.txt

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


1
太棒了!我要用字典!
madh 2010年

这工作了!我没有那个漂亮的菜单。我正在使用VIM 6.3.82,它不是最新版本。
madh

啊...更新有帮助吗?您需要按顺序Ctrl-x,Ctrl-k来调出菜单。虽然很高兴能提供帮助:)
约翰·T

这是正确的方法。
在。

刚刚检查了它在VIM 7.2中是否有效。再次感谢!
madh 2010年

3

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

complete=.,w,b,u,t

意思是

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

您可以使用添加自己的字典

set complete+=k~/.vim/keywords.txt

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.