答案 0 :(得分:1)
首先,定义一个类似这样的函数:
fun! GitTracks(...)
let file = a:0 ? a:1 : expand('%')
let message = system('git ls-files -- ' . file)
let is_tracked = (message =~ '^fatal:') ? 0 : strlen(message)
if is_tracked
hi StatusLine guibg=blue
else
hi StatusLine guibg=black
endif
return is_tracked
endfun
如果您不在git存储库中或者未跟踪您的文件,则返回0。谁知道,有一天你可能想用一个参数来称呼它。只是为了踢,我改变了状态行的颜色。 (这需要一段时间才能启动,具体取决于您对'updatetime'
的设置。您可以将其从函数中删除,并使用BufEnter
自动命令检查GitTracks()
的值。)
接下来,决定如何在状态行中指明这一点。例如,
:set stl+=%{GitTracks()?'tracked':'NOT\ tracked'}
答案 1 :(得分:0)
您几乎可以肯定使用powerline执行此操作。它是一个非常可配置的实用程序,可以在vim中使用,为您提供非常强大的状态行,以及bash / zsh中强大的快速显示。
这是我的样子(库存配置),显示以下信息:
{normal mode active} | BR:{current git branch} | {文件名}
我确信有一种方法可以获取当前缓冲区文件的状态......
答案 2 :(得分:0)
如果您使用git fugitive插件,则可以在状态行上轻松设置。只需将以下内容添加到.vimrc文件中即可。
set statusline=%f
set statusline+=%{fugitive#statusline()}
当然,你可以像希望一样喜欢。 http://learnvimscriptthehardway.stevelosh.com/chapters/17.html