Vim奇怪的ocaml插件绑定甚至使用--noplugin运行



编辑ocaml文件(*.ml)时,每次使用<Leader>t打开CommandT时,vim都会说"找不到类型注释(.annot)文件"。当我使用<Leader>s切换Syntastic时,vim转到当前文件的接口文件(x.ml到x.mli)。

当我运行:map时,我看到了那些绑定:

x  t           @<Plug>OCamlPrintType
n  t           @<Plug>OCamlPrintType                                                            
n  S           @<Plug>OCamlSwitchNewWin
n  s           @<Plug>OCamlSwitchEdit
x  C           @<Plug>BUncomOff
n  C           @<Plug>LUncomOff
x  c           @<Plug>BUncomOn
n  c           @<Plug>LUncomOn
x  <Plug>OCamlPrintType * :<C-U>call Ocaml_print_type("visual")<CR>`<
n  <Plug>OCamlPrintType * :<C-U>call Ocaml_print_type("normal")<CR>
n  <Plug>OCamlSwitchNewWin * :<C-U>call OCaml_switch(1)<CR>
n  <Plug>OCamlSwitchEdit * :<C-U>call OCaml_switch(0)<CR>

然后我运行vim --noplugin,这些映射仍然存在
~/.vim/after/ftplugin/ocaml.vim中,我只有一行设置ocaml缩进,所以问题一定在其他地方
创建这些绑定的原因是什么?我怎样才能关掉它们?

--noplugin只需设置noloadplugins选项。这个选项唯一能做的就是禁止从&runtimepath加载plugin/目录中的文件。

因此

  1. 如果这些映射是在ftplugin/目录中的某个位置定义的,并且您的vimrc中有filetype … on,那么--noplugin不会阻止它们被加载。具体地说,CCD_ 12定义在与Vim一起分布的ftplugin/ocaml.vim中。您可以使用

    echo globpath(&runtimepath, 'ftplugin/ocaml*')
    

    获取所有有ocaml ftplugin的地方。~/.vim/after并不是ftplugin可能所在的唯一位置

  2. 如果在你的vimrc中有set loadplugins行,那么--noplugin是完全无用的,不会影响任何事情
  3. 它也不会对存储在.vimrc中的内容做任何事情

最新更新