【问题标题】:How do I use vim as 'git log' editor?如何使用 vim 作为“git log”编辑器?
【发布时间】:2013-05-15 23:37:34
【问题描述】:

当我运行git log 时,编辑器git log 到底在使用什么?

还有:

  1. 无论如何我可以使用vim 作为git log 的默认编辑器吗?
  2. 如果我想搜索 git 日志,最好的方法是什么?现在我正在做类似的事情:git log | grep bla

【问题讨论】:

  • $ git log 的输出不是您编辑的,那么您为什么要使用编辑器查看它?
  • @romainl 主要只是尝试搜索它。既然这些家伙指出,less 具有 vim 搜索功能的子集,我想我现在可以忍受 less。
  • less有/?nN,它支持正则表达式搜索。 $ man less 是一本非常有趣的读物。

标签: git vim pager git-log


【解决方案1】:

git log 命令默认将其输出到 pager,而不是编辑器。在大多数系统上,此寻呼机通常为 lessmore。您可以使用以下命令将默认寻呼机更改为vim

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

现在您可以像往常一样使用vim 功能和/ 进行搜索。

【讨论】:

  • less 遵循 vim 搜索功能的子集
  • @honk 'vim -', '-' 有什么作用?
  • @Shengjie:它使vim从STDIN读取。通常在只读模式下添加-R 也是一个好主意。
  • @Shengjie:对于许多实用程序,- 作为文件名意味着 stdinstdout 取决于上下文
  • git config --global core.pager 'vim -R -' , -R 快速退出很重要
【解决方案2】:

你可能想看看viewlog

它为您提供了所有提交的终端 gui 界面。它还将在您选择的编辑器中打开文件。您可以使用 --grep 标志搜索相关提交。

【讨论】:

    【解决方案3】:

    我写了一个 bash 脚本来从使用 vim 作为编辑器切换到 diff-so-fancy。

    VT() {
        gitlogflag=true
        if [ -e "$HOME/.myscriptvar" ] ; then
            gitlogflag=$(cat "$HOME/.myscriptvar")
        fi
        if [ "$gitlogflag" = true ]; then
            git config --global pager.show "vim -c '%sm/\\e.\\{-}m//g' -c 'setlocal buftype=nofile' -c 'set ft=diff' +3 -";
            gitlogflag=false
        else
            git config --global pager.show "diff-so-fancy | less --tabs=1,5 -RFX";
            gitlogflag=true
        fi
        echo "$gitlogflag" > $HOME/.myscriptvar
    }
    

    我建议你使用diff-so-fancy

    如果你只是想用 vim 作为你的 git 日志编辑器git config --global pager.show "vim -c '%sm/\\e.\\{-}m//g' -c 会满足你的。

    【讨论】:

      【解决方案4】:

      这对我有用: git log | vim -R -

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-10
        • 2019-01-30
        • 1970-01-01
        • 2021-10-11
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多