我的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
等;并将它们视为可接受的代码建议,而这些建议显然不是。我怎样才能过滤掉它们?
发布于 2013-04-26 14:53:36
Vim有许多适合不同需求的补全机制:关键字补全、文件名补全…和泛补全,这是最适合编程的补全。
Omni补全通常通过按<C-x><C-o>
键启动,并且肯定不会从文件中的注释中选取建议。你确定你使用的是全补全,而不是其他的吗?也许是<C-n>
或者<C-p>
?完整列表请参见:h ins-completion
。
而且,这行代码完全没有用。假设您的~/.vimrc
中有filetype plugin indent on
,则完全没有必要告诉Vim在JS文件中使用JS完成。
发布于 2013-04-26 13:53:13
JS自动完成需要动态类型推断,这对于非IDE文本编辑器来说是困难的。(JS没有静态类,您知道的!)Vim可能只是实现了一个模糊匹配算法来完成。(我只是猜测,因为我个人并不使用vim )。我认为Vim也会考虑注释,因为它可能不会解释js!
你可以尝试新的Ternjs插件。你需要node.JS,确保你的Vim支持Python.
在线演示在http://ternjs.net/上
通常,由于javascript语言的动态特性,很难实现javascript自动完成。Ternjs使类型推断类似于javascript引擎,从而使自动补全更好。(就我个人而言,我曾在SublimeText中尝试过tern。除了初始加载和没有内置函数(如document.body.appendChild)之外,体验非常棒)
https://stackoverflow.com/questions/16238056
复制相似问题