Vim:如果在Git中没有跟踪文件,则发出警告

时间:2014-01-15 14:43:33

标签: git vim

Gitgutter是让我了解未提交更改的好工具,但我经常忘记提交的完整文件。

如果我正在编辑一个位于git存储库目录但完全没有跟踪的文件,我想在Vim状态栏中发出警告。

有任何想法如何实现这个?

我目前正在使用AirlineFugitive,所以如果能够实现这些功能会很好。

3 个答案:

答案 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} | {文件名} vim-powerline-example

我确信有一种方法可以获取当前缓冲区文件的状态......

答案 2 :(得分:0)

如果您使用git fugitive插件,则可以在状态行上轻松设置。只需将以下内容添加到.vimrc文件中即可。

set statusline=%f
set statusline+=%{fugitive#statusline()}

当然,你可以像希望一样喜欢。 http://learnvimscriptthehardway.stevelosh.com/chapters/17.html