我的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
等;并将它们视为可接受的代码建议,但它们显然不是。我怎样才能过滤掉它们?
答案 0 :(得分:1)
JS自动完成需要动态类型推断,这对于非IDE文本编辑器来说很难。(JS没有静态类,你知道!)Vim可能只是实现模糊匹配算法来完成。 (我猜,因为我不亲自使用vim)。我认为Vim也会考虑评论,因为它可能不解释js!
您可以为Vim尝试新的Ternjs插件。你需要node.JS.确保你的Vim有Python支持。
在线演示在http://ternjs.net/
通常,由于该语言的动态特性,javascript自动完成很难实现。 Ternjs像javascript引擎一样进行类型推断,从而使自动完成更好。 (就个人而言,我在SublimeText中尝试过。除了初始加载和没有内置函数之外的很棒的经验,例如document.body.appendChild)
答案 1 :(得分:1)
Vim有许多适合不同需求的完成机制:关键字完成,文件名完成......和 omni completion ,这种完成最适合编程。
Omni完成通常是通过按<C-x><C-o>
启动的,并且肯定永远不会从您的文件中的评论中选择建议。你确定你使用的是全向完成而不是别的吗?可能是<C-n>
或<C-p>
?有关完整列表,请参阅:h ins-completion
。
另外,那条线完全没用。假设您的filetype plugin indent on
中有~/.vimrc
,则完全没必要告诉Vim在JS文件中使用JS完成。