我有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