如何从 vim :scriptnames 文件中删除重复项?

问题描述 投票:0回答:3

我正在尝试学习 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 configuration configuration-files vim-plugin
3个回答
2
投票

大多数 Vim 插件由多个脚本文件组成。因此,在

:scriptnames
中看到多个引用是正常的。在您的输出中,基本航空公司目录是
~/.vim/bundle/vim-airline
;所有这些基本目录下都有一个共同的子结构(通常是
autoload/...
plugin/...
)。

所有者的意思是检查多个基本目录,例如

~/.vim/bundle/vim-airline
~/.vim/bundle/vim-another-airline
。根据您的输出,情况似乎并非如此。此外,该错误与航空公司的 Mundo 扩展有关,而不是与航空公司本身有关。难道你不应该寻找 Mundo 的多个安装吗?!


1
投票

如果安装了两个相同的插件,则需要卸载

vim-airline
。您将在
Plugin vim-airlines
中看到两行
vimrc
或类似的内容。插件的确切名称可能有所不同。删除所有重复的行并运行

:PluginUpdate
:PluginClean

希望这有帮助


0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.