如何在HTML文件中自动弹出js完成?

时间:2018-03-15 08:06:28

标签: javascript html autocomplete vim-plugin

网页上说,有两种方法可以在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中的第二项相同。)

2 个答案:

答案 0 :(得分:0)

Here是对同一问题的回答。

您可以使用AutoComplPop之类的插件在您输入时自动完成代码。

2015年编辑:我个人现在使用YouCompleteMe

答案 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 Vimhttps://github.com/tpope/vim-pathogen

我希望这能回答你的问题,或者至少给你一个想法。