Rob*_*udi 2 git vim vim-fugitive
我正在使用lightline.vim,我想展示当前的git分支.目前,我正在使用vim-fugitive这样做,但是,我根本不使用这个插件,除了在状态行中显示git分支.
我的问题是:
有没有办法在不使用逃犯的情况下在状态行中显示git分支?
我试图创建一个我挂钩到lightline的自定义函数.该函数使用systemvimscript函数获取当前git分支.它(没有)运行良好,除了状态线在每次击键时刷新,这打破了其他一切并使vim无法使用.从本质上讲,git分支是system在每次击键时使用该函数获取的......
所以这不是一个可行的解决方案.我"可以"做的是,创建一个全局变量,说明是否获取了git分支,并阻止自定义函数在已经获取的情况下再次获取分支名称.然后每次MacVim失去焦点时我都可以再次获取分支名称(不知道如何使用终端vim进行此操作).虽然这不太理想......
关于如何解决这个问题的任何想法好吗?
我创建了一个专注于你想要的功能的插件.
https://github.com/itchyny/vim-gitbranch
您可以按gitbranch#name()功能获取分支名称.
代码非常小,您可以在一分钟内阅读.
是的,使用全局变量是正确的方法。
\n\n不明显的部分是如何/何时更新该变量的值。安autocmd似乎是最明显的选择,但对什么事件着迷呢?BufEnter似乎是一个好的开始。
现在,既然你不使用逃亡者,那么你如何切换分支呢?在 Vim 之外?在 Vim 的命令行上?
\n\n如果您在 Vim 的命令行 上执行此操作,:!git checkout foo则可以编写一个命令,该命令采用分支名称作为参数来执行正确的 shell 命令并g:git_branch一次性更改 的值,甚至无需使用autocmd.
如果您在 Vim 之外执行此操作(<C-z>、:sh、另一个终端窗口或 tmux 窗格、GUI 应用程序\xe2\x80\xa6),您将需要找到一种可靠的方法来通知 Vim 该更改或使用system()带有autocmd.