【问题标题】:How do I get git to display the changes in vim as hg does with the hgeditor script?如何让 git 显示 vim 中的更改,就像 hg 使用 hgeditor 脚本一样?
【发布时间】:2011-01-24 17:41:47
【问题描述】:

mercurial 中一个有趣的功能是能够查看将在 vim 拆分中提交的更改(请参阅 DiffsInCommitMessageInVIM)。

关于如何使用 git 的任何提示?

【问题讨论】:

  • 注意core.editor不仅用于提交,还用于标记、添加(交互)和提交-e。

标签: git vim mercurial


【解决方案1】:

假设您启用了语法,Vim 将 git 提交消息检测为文件类型。这应该从突出显示中显而易见。不太明显的部分是它还有一个用于 git 提交(和其他 git 东西)的文件类型插件。确保您已启用这些 (filetype plugin on),然后将定义一个有用的命令:DiffGitCached。只需运行它,它就会在预览窗口中显示一个差异。

插件中该命令定义旁边的注释:

可以通过以下方式自动区分:

autocmd FileType gitcommit DiffGitCached | wincmd p

文件类型插件存储在 /vimXX/ftplugin/git*.vim 中,例如/usr/share/vim/vim70/ftplugin/gitcommit.vim,有兴趣的可以看看!

【讨论】:

  • 做一个diff commit 和vim :set ft=gitdiff 然后:DiffGitCached,我确实有一个窗口打开,但没有任何信息。
  • @Alexis:您不必设置文件类型。只要您的 vimrc 中有 filetype plugin on,Git 应该会检测到它并自动启用该插件。而且,您实际上并不需要知道这一点,但 git 提交消息的文件类型是 gitcommit,而不是 gitdiff。
  • 即使没有指定文件类型(我可以看到 vim 检测到文件类型,关于突出显示),DiffGitCached 似乎不起作用。奇怪。
  • @Alexis:嗯,它对我来说很好用。故障排除...命令已定义,对吗?它试图运行,并弹出一个预览窗口?如果它是空的,则表明您实际上没有进行任何更改(不太可能),或者它无法运行适当的 git 命令...如果您只执行!!git diff --cached 会发生什么?也就是说,直接在你的提交消息窗口中调用 git 命令。
  • 啊啊!这是我的 vimrc 的自动更改目录选项导致麻烦 :) 感谢您的帮助!
【解决方案2】:

我已经修改了 HGEDITOR.SH 脚本来支持 Git,你可以在这里克隆它:

git clone git://github.com/dharrigan/giteditor.git

享受吧!

【讨论】:

  • 嘿大卫! :) 正是我想要的! (亚历山德罗)
【解决方案3】:

我强烈推荐 tpopes 的 vim-fugitive 插件来使用 git。

你可以找到它here

【讨论】:

    【解决方案4】:

    我使用来自 www.vim.org 的 Pierre Habouzit's git.vim。将它放到 ~/.vim/ftplugin 中,你应该已经准备好了(假设你的 ~/.vimrc 中通常是 filetype plugin indent on)。

    【讨论】:

      【解决方案5】:

      如果您使用的是 git 2.9 及更高版本,则可以通过运行 git config --global commit.verbose true 来获得此行为。

      来源:this answer。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        • 2011-05-03
        • 2021-06-27
        • 2014-05-12
        • 2013-04-20
        • 1970-01-01
        • 2019-12-11
        相关资源
        最近更新 更多