我正在为我的 vim-statusline 制作这个功能:
function! GitCommitSymbol(timer_id)
let l:uncommited = system('echo -n $(git checkout | grep -oP "(\M+)" -c)')
if (uncommited == number)
let g:uncommited = ''
hi MyGitSymbol ctermfg=11
else
let g:uncommited = ''
hi MyGitSymbol ctermfg=7
endif
call timer_start(30000, 'GitCommitSymbol')
endfunction
我git checkout | grep -oP "(\M+)" -c
专门制作了这个命令,只返回一些未提交的更改(这就是我使用 grep 的原因)。
所以基本上,如果我在一个 git 存储库的位置并且我在 shell 上键入命令,它会返回“0”、“1”等等,这取决于我有多少未提交的更改。
但是,如果我在不是 git 存储库的位置键入它,它会返回如下内容:
fatal: not a git repository (or any parent up to mount point /) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 0
所以,在函数的这一行:if (uncommited == number)
,我需要一个条件来显示一些如果命令的输出是数字的,“else”是用于当它不是数字的时候(就像我上面放的“致命”输出) . 但我不知道如何使这个有条件。