最新消息:

一个诡异的statusline展示的问题:airline插件和fugitive插件

vim niuge678 526浏览 0评论

问题描述

vim版本:7.4(在8以上版本,似乎没有问题),操作系统是centos7,在某些情况下,statusline被删除了,展示了默认的。

正常应该是这样的:

workround

1、vimrc有一句 set backgroud=dark,只有我注释掉此行,statusline就可以正确展示(但是,注释掉,打开vim会闪烁一下,我用的solarized colorscheme)。
2、注释掉插件 vim-fugitive,也可以解决问题。

原理

我想弄明白,到底是什么原因导致的问题,借此机会,学习一下vim plug的原理,这里记录一下调查问题的过程。

我搜索了github,发现有人已经会报了类似的问题:
https://github.com/tpope/vim-fugitive/issues/2000#issuecomment-1133665756

https://github.com/vim-airline/vim-airline/issues/2537

看起来跟我遇到的问题一模一样,并且,作者说已经做了一下修复:
https://github.com/tpope/vim-fugitive/commit/ad16275775ae9e11b8d5491a4cd893a12f32f241#diff-79618f4d459310b3eee3132d337abd2488119341afa5b70489cc62ce05d9ae64

我用的是最新的代码,好像还是有问题。

问题复现

1、FugitiveHead函数有问题,
进而 vim-airline/autoload/airline/extensions/branch.vm中 s:config_fugitive_branch函数有问题。

2、进一步定位到 s:vcs_config 这个定义里的 's:update_git_branch' 有问题。

3、进一步调查,步骤2的调查方向错了,其实步骤1里面FugitiveHead抛出了异常,但是诡异的是,抛完异常又继续往下运行了(所以调查问题不错调查了)。

4、找到一个关键点,只要给b:git_dir复制为'',就会报错。后面的函数调用并没有抛异常。

5、进一步定位到这里出了问题

转载请注明:牛哥678 » 一个诡异的statusline展示的问题:airline插件和fugitive插件

与本文相关的文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址