如何使用 vim 作为 'git show' 编辑器?

How do I use vim as 'git show' editor?

How do I use vim as 'git log' editor? 中描述的所有内容不适用于 git show 。 我经常使用

git show HEAD

ctrl+z 

ps 

  PID TTY          TIME CMD
 7083 pts/8    00:00:06 bash
31758 pts/8    00:00:00 git
31759 pts/8    00:00:00 less
31762 pts/8    00:00:00 ps

更新我找到了解决方案:

git config --global pager.color false
git config --global pager.show 'vim -R -'

更好 (2021-02-05)

git config --global core.pager 'vim -R -'

这里有一个 Twitter post 可以解决这个问题。

https://twitter.com/oliviergay/status/179692941063888896

Using git show with vim and syntax highlighting: vimgitshow() { git show "" | vim - "+set filetype=${1##*.}"; }

这对我有用:

git config --global pager.show "vim -c '%sm/\e.\{-}m//g' -c 'set ft=diff' +1 -"

疯狂的 vim 参数在这里找到:

您可以使用以下命令:

PAGER='vim -' git -c color.ui=false show

您可能还想使用比仅补丁语法高亮显示更好的差异。它允许您使用 git show 并查看 vimdiff 中每个文件的差异。看到这个 answer.

可以简单地在编辑 mod 中使用 git show bf9f84042 | vim -,或者在只读 mod 中使用 git show bf9f84042 | vim -R -,无需更改 gitconfig

git config --global diff.tool vimdiff 使用 vimdiff 作为 diff.tool,然后 git difftool bf9f042 232wf2f 到 diff