我正在尝试学习 vim。当我打开程序时,我遇到了这个:
The airline statusline funcref function('airline#extensions#mundo#statusline') has already been added.The airline statusline funcref function('airline#extensions#mundo#statusline') has already been added.
店主说:
该错误消息表明您安装了两次航空公司...
您是否通过 vundle 或其他方式在全球范围内安装了航空公司? :scriptnames 告诉你什么?谢谢。
OP 就是这种情况,对我来说也是如此。我运行 :scriptnames 并获得了以下对航空公司的引用:
56: ~/.vim/bundle/vim-airline/plugin/airline.vim
57: ~/.vim/bundle/vim-airline/autoload/airline.vim
58: ~/.vim/bundle/vim-airline/autoload/airline/init.vim
59: ~/.vim/bundle/vim-airline/autoload/airline/parts.vim
60: ~/.vim/bundle/vim-airline-themes/plugin/airline-themes.vim
78: ~/.vim/bundle/vim-airline/autoload/airline/extensions.vim
79: ~/.vim/bundle/vim-airline/autoload/airline/extensions/quickfix.vim
80: ~/.vim/bundle/vim-airline/autoload/airline/extensions/netrw.vim
81: ~/.vim/bundle/vim-airline/autoload/airline/extensions/ctrlp.vim
82: ~/.vim/bundle/vim-airline/autoload/airline/extensions/commandt.vim
83: ~/.vim/bundle/vim-airline/autoload/airline/extensions/branch.vim
84: ~/.vim/bundle/vim-airline/autoload/airline/extensions/syntastic.vim
85: ~/.vim/bundle/vim-airline/autoload/airline/extensions/whitespace.vim
86: ~/.vim/bundle/vim-airline/autoload/airline/extensions/wordcount.vim
87: ~/.vim/bundle/vim-airline/autoload/airline/extensions/tmuxline.vim
88: ~/.vim/bundle/vim-mundo/autoload/airline/extensions/mundo.vim
89: ~/.vim/bundle/vim-airline/autoload/airline/section.vim
90: ~/.vim/bundle/vim-airline/autoload/airline/highlighter.vim
91: ~/.vim/bundle/vim-airline/autoload/airline/themes/dark.vim
92: ~/.vim/bundle/vim-airline/autoload/airline/themes.vim
93: ~/.vim/bundle/vim-airline/autoload/airline/util.vim
99: ~/.vim/bundle/vim-airline/autoload/airline/builder.vim
100: ~/.vim/bundle/vim-airline/autoload/airline/extensions/default.vim
我不知道(以及我认为我需要帮助)的是文件的位置:scriptnames引用以及如何删除重复项。
感谢您的想法。
大多数 Vim 插件由多个脚本文件组成。因此,在
:scriptnames
中看到多个引用是正常的。在您的输出中,基本航空公司目录是 ~/.vim/bundle/vim-airline
;所有这些基本目录下都有一个共同的子结构(通常是 autoload/...
和 plugin/...
)。
所有者的意思是检查多个基本目录,例如
~/.vim/bundle/vim-airline
和 ~/.vim/bundle/vim-another-airline
。根据您的输出,情况似乎并非如此。此外,该错误与航空公司的 Mundo 扩展有关,而不是与航空公司本身有关。难道你不应该寻找 Mundo 的多个安装吗?!
如果安装了两个相同的插件,则需要卸载
vim-airline
。您将在 Plugin vim-airlines
中看到两行 vimrc
或类似的内容。插件的确切名称可能有所不同。删除所有重复的行并运行
:PluginUpdate
:PluginClean
希望这有帮助
vim-airline 模块正在从各种插件添加多个状态行功能。
如果尝试将该函数两次添加到 airline#add_statusline_funcref 内的 statusline
,则实际上是正确处理的因此,最简单的解决方案是注释掉文件中的警告,直到正确解决行为算法:
/usr/share/vim/addons/autoload/airline.vim
function! airline#add_statusline_funcref(function)
if index(g:airline_statusline_funcrefs, a:function) >= 0
" echohl WarningMsg
" echo 'The airline statusline funcref '.string(a:function).' has already been added.'
echohl NONE
return
endif
call add(g:airline_statusline_funcrefs, a:function)
endfunction