v2k*_*v2k 16 git vim vimdiff external
我已经将vim设置为我的外部差异工具:
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "$2" "$5"
Run Code Online (Sandbox Code Playgroud)
假设我有300个已修改过的文件; 通过bash,我输入"git diff".它按顺序启动了300个vimdiff,我该如何中止?
jsh*_*sha 18
使用:cquit退出vim并显示错误代码.Git将检测错误并停止打开新的vimdiff.你可能想在.vimrc中为它创建一个映射:
if &diff
map Q :cquit<CR>
endif
Run Code Online (Sandbox Code Playgroud)
然后从git diff运行中点击Q到早期中止.
要使其工作,您必须编辑您的gitconfig:
git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true
Run Code Online (Sandbox Code Playgroud)
如果停止进程还不够,杀死 shell 本身(您在其中启动了git diff)可能会更有效。


\n\n\n还没准备好全速使用
\nvimdiff(我\xe2\x80\x99m刚刚接触它),我将以下内容放入\xe2\x80\x98gitvimdiff\xe2\x80\x99。
\n 结果是我可以vimdiff通过运行 \xe2\x80\x98 \xe2\x80\x98 来查看 git-diffgitvimdiff,但是 \xe2\x80\x98git diff\xe2\x80\x99 的正常调用的行为与我相同\xe2\x80\x99m 习惯了。
#!/bin/sh\n\nif [ -n "${GIT_EXTERNAL_DIFF}" ]; then\n[ "${GIT_EXTERNAL_DIFF}" = "${0}" ] ||\n{ echo \xe2\x80\x9cGIT_EXTERNAL_DIFF set to unexpected value\xe2\x80\x9d 1>&2; exit 1; }\nexec vimdiff \xe2\x80\x9c$2\xe2\x80\xb3 \xe2\x80\x9c$5\xe2\x80\xb3\nelse\nGIT_EXTERNAL_DIFF=\xe2\x80\x9d${0}\xe2\x80\x9d exec git \xe2\x80\x93no-pager diff \xe2\x80\x9c$@\xe2\x80\x9d\nfi\nRun Code Online (Sandbox Code Playgroud)\n\n但如果您仍然想要修改git diff,git status在启动之前可能会有所帮助;)
如果需要,您可以设置一个函数来获取旧git diff行为:
\n\n\n我仍然可以使用该
\n--no-ext-diff标志访问默认的 git diff 行为。Here\xe2\x80\x99s 是我放入 bash 配置文件中的函数:
function git_diff() {\n git diff --no-ext-diff -w "$@" | vim -R -\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n
\n- \n
--no-ext-diff: 防止使用 vimdiff- \n
-w: 忽略空格- \n
-R: 以只读模式启动vim- \n
-: 让vim充当寻呼机
| 归档时间: |
|
| 查看次数: |
4734 次 |
| 最近记录: |