vim:如何自定义上下文相关的自动完成?

vim:如何自定义上下文相关的自动完成?

例如,对于以 结尾的任何文件.foo,我希望 vim 中出现以下行为:

  • 如果用户输入i.,我希望 vim 的自动完成功能提供列表dogs, cats, mice
  • 如果用户输入i.dogs.,我希望 vim 的自动完成功能提供列表poodle,dachshund,pitbull

仅供参考,我需要以定制语言使用此功能以便于打字/学习。

答案1

'omnifunc'您可以通过或编写自定义插入模式补全'completefunc'。阅读 了解详细信息:help complete-functions;其中还有示例。

Vim 使用文件类型(例如java,, )作为文件扩展名的抽象,文件扩展cmarkdown只是表示文件类型的一种方式(其他方式例如#!/bin/bash可执行脚本顶部的 hashbang 行)。您可以编写自定义文件类型检测,如下所示:

:autocmd BufNewFile,BufRead *.foo setf foo

然后将自定义的补全内容放入~/.vim/ftplugin/foo_completion.vim如下内容中:

:setlocal completefunc=FooCompletion

我希望这些指针有所帮助;请参阅帮助和现有文件类型了解详细信息。

相关内容