Gitgutter是讓我知道未提交的更改的好工具,但我經常忘記提交的完整文件。Vim:如果在Git中沒有跟蹤文件,則發出警告
我想在Vim狀態欄中發出警告,如果我正在編輯git存儲庫目錄中的文件但完全沒有跟蹤。
任何想法如何實現?
我目前使用的是Airline和Fugitive,所以如果可以使用它們,它會很好。
Gitgutter是讓我知道未提交的更改的好工具,但我經常忘記提交的完整文件。Vim:如果在Git中沒有跟蹤文件,則發出警告
我想在Vim狀態欄中發出警告,如果我正在編輯git存儲庫目錄中的文件但完全沒有跟蹤。
任何想法如何實現?
我目前使用的是Airline和Fugitive,所以如果可以使用它們,它會很好。
首先,定義一個函數是這樣的:
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
這將返回0,如果你不是一個Git倉庫或者如果你的文件沒有被跟蹤。誰知道,有一天你可能想用一個論點來稱呼它。只是踢,我改變狀態線的顏色。 (這需要一段時間來踢,這取決於你的設置爲'updatetime'
。你可以從功能刪除它,並使用BufEnter
自動命令來檢查的GitTracks()
值)。
接下來,決定你要如何表示這你的狀態線。例如,
:set stl+=%{GitTracks()?'tracked':'NOT\ tracked'}
您幾乎可以肯定地用powerline來做到這一點。這是一個非常可配置的工具,可以在vim中使用,爲您提供強大的狀態行,以及用於強大的提示顯示的bash/zsh。
這裏是我的樣子(股票配置),顯示以下信息:
{正常模式主動} | BR:{當前git分支} | {文件名}
我敢肯定就會有一種方式來獲得在那裏當前緩衝的文件狀態......
如果您使用的git fugitive插件可以很容易地安裝在狀態行。只需將以下內容添加到.vimrc文件中即可。
set statusline=%f
set statusline+=%{fugitive#statusline()}
當然,你可以如願以償。 http://learnvimscriptthehardway.stevelosh.com/chapters/17.html
fugitive#statusline()不打印文件跟蹤狀態。只有分支afaik。 – Epeli
正是我在找的東西。謝謝!這是我與航空公司做了什麼https://github.com/epeli/vimconfig/commit/dc7fdc6f79b4ddf81e1685c875105d010002f0b4 – Epeli
其實我不得不更新它,以避免渲染gliches https://github.com/epeli/vimconfig/blob/23d97ae6d668b22f3da56a5373744c9f579d117d/的vimrc#L149-L164 – Epeli