我有VIM設置爲我的外部比較工具:如何取消外部git diff?
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "$2" "$5"
說我有已修改300個文件;通過bash,我輸入「git diff」。它連續發射300個vimdiffs,如何中止它?
我有VIM設置爲我的外部比較工具:如何取消外部git diff?
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "$2" "$5"
說我有已修改300個文件;通過bash,我輸入「git diff」。它連續發射300個vimdiffs,如何中止它?
如果停止進程是不夠的,殺死shell本身(在其中啓動git diff
)可能會更有效。
沒有準備好去全速進入使用
vimdiff
(我只是新手的話),我把下面的在'gitvimdiff
'中。
結果是,我可以使用vimdiff
通過運行'gitvimdiff
'來查看git-diff,但正常調用'git diff
'的行爲與我以前一樣。
#!/bin/sh
if [ -n "${GIT_EXTERNAL_DIFF}" ]; then
[ "${GIT_EXTERNAL_DIFF}" = "${0}" ] ||
{ echo 「GIT_EXTERNAL_DIFF set to unexpected value」 1>&2; exit 1; }
exec vimdiff 「$2″ 「$5″
else
GIT_EXTERNAL_DIFF=」${0}」 exec git –no-pager diff 「[email protected]」
fi
但是,如果你仍然想修改git diff
,一個git status
可能推出之前幫助;)
而且,您可以設置是否需要一個函數來獲取舊git diff
行爲:
我仍然可以通過
--no-ext-diff
標誌訪問默認的git diff行爲。這裏有一個功能,我把我的bash配置文件:
function git_diff() {
git diff --no-ext-diff -w "[email protected]" | vim -R -
}
--no-ext-diff
:防止使用vimdiff同時-w
:忽略空白-R
:在只讀啓動Vim模式-
:使vim充當尋呼機
只要殺死父進程即可。打開一個終端,使用pstree -p
來查找git
進程的進程ID(PID),然後使用kill -9
它。在我的系統上,它看起來像這樣:
$ pstree -p
...
├─gnome-terminal(20473)─┬─bash(10302)───git(10331)───pager(10332)
...
$ kill -9 10331
不完全優雅,但它的工作原理。在您的系統上,pager
可能會有所不同,但它會有git
作爲父級進程。
使用:cquit退出vim並顯示錯誤代碼。 Git會檢測錯誤並停止打開新的vimdiffs。你可能想要在你的.vimrc中爲它創建一個映射:
if &diff
map Q :cquit<CR>
endif
然後只要點擊Q就可以早點退出git diff運行。
爲了這個工作,你必須編輯gitconfig:
git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true
這是一個奇妙的問題有:) – vfclists 2017-08-21 14:04:33