3

我的 vimrc 中有以下行来启用 Javascript 完成:

autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS

问题是,如果我正在处理包含大量注释的 JS 文件,例如:

// draws the map and the pieces depending on the state of the game

Vim 从这些评论中挑选单词,例如draws,map等;并将它们视为可接受的代码建议,但显然不是。我怎样才能过滤掉它们?

4

2 回答 2

1

JS 自动补全需要动态类型推断,这对于非 IDE 文本编辑器来说很难。(JS 没有静态类,你知道的!)Vim 可能只是实现了一个模糊匹配算法来完成。(我只是猜测,因为我个人不使用 vim)。我认为 Vim 也考虑了注释,因为它可能不解释 js!

你可以试试 Vim 的新Ternjs插件。你需要node.JS。确保你的 Vim 支持 Python。

在线演示在http://ternjs.net/

通常,由于该语言的动态特性,javascript 自动完成很难完成。Ternjs 像 javascript 引擎一样进行类型推断,从而使自动完成更好。(我个人在 SublimeText 中尝试过 tern。除了初始加载和没有内置函数如 document.body.appendChild 外,体验很棒)

于 2013-04-26T13:53:13.230 回答
1

Vim 有许多适合不同需求的补全机制:关键字补全、文件名补全……和向补全,最适合编程的补全。

Omni 补全通常是通过按下来启动的,<C-x><C-o>并且肯定不会从您文件中的评论中选择建议。您确定您使用的是全方位完成而不是其他东西吗?<C-n>或者<C-p>,也许?查看:h ins-completion完整列表。

而且,那条线完全没用。假设你filetype plugin indent on在你~/.vimrc的 JS 文件中,完全没有必要告诉 Vim 在 JS 文件中使用 JS 补全。

于 2013-04-26T14:53:36.183 回答