网页上说,有两种方法可以在HTML文件中使用tern_for_vim插件。
use tern_for_vim plugin in HTML files
这两种方法都可以工作,它们都无法自动弹出js完成菜单。
方法一:
1.vim test.html
2.:setlocal omnifunc=tern#Complete
3.To input `<C-X><C-O>` after `document.`
现在js完成弹出。
这种方法还有两个问题
1.在.vimrc中写setlocal omnifunc=tern#Complete
不能正常工作
为什么?
2.如何在document.
之后自动弹出js完成菜单,而不是输入<C-X><C-O>
?
方法2:
sudo cp .vim/bundle/tern_for_vim/after/ftplugin/javascript_tern.vim .vim/bundle/tern_for_vim/after/ftplugin/html_tern.vim
您应在<C-X><C-O>
之后输入document.
,以便为您编辑的html文件调用js完成菜单。
编辑的js文件的js完成菜单无法在document.
后自动弹出。
1.如何在document.
之后自动弹出js完成菜单,而不是输入<C-X><C-O>
? (与Method1中的第二项相同。)
答案 0 :(得分:0)
答案 1 :(得分:0)
我猜你正在使用Method 2
并且正在使用<C-X><C-O>
您需要inoremap
才能执行此操作,请参阅:What's the meaning of 'inoremap' in vimrc
并且由于Tern for Vim
被挂钩到omni completion
(作为https://github.com/ternjs/tern_for_vim),您可以修改它的键映射,使其表现得像您想要的那样。
来自文档:http://vimdoc.sourceforge.net/htmldoc/insert.html#ft-javascript-omni
您可以使用映射来使用弹出菜单 输入一个字符并满足某些条件。例如,用于打字 一个点:
inoremap <expr> . MayComplete()
func MayComplete()
if (can complete)
return ".\<C-X>\<C-O>"
endif
return '.'
endfunc
打开vim
并在命令模式下输入此功能可以解决问题:
:inoremap <expr> . ".\<C-X>\<C-O>"
这基本上会将.
变为触发器以启动<CTRL-X> <CTRL-O>
但最好将:map
命令放入~/.vim/ftplugin/{filetype}_mappings.vim
。 (这要求您拥有:filetype plugin on
。)
这适用于一般vim
键映射:http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)
选中此项以查看其有效:https://imgur.com/gpvzaUt
PS:我使用Pathogen
来安装Tern for Vim
(https://github.com/tpope/vim-pathogen)
我希望这能回答你的问题,或者至少给你一个想法。