Как использовать vim в качестве редактора git log?

Когда я запускаю git log, что именно использует редактор git log?

Также:

  1. Могу ли я использовать vim в качестве редактора по умолчанию для git log?
  2. Если я хочу выполнить поиск в журнале git, как лучше всего? Теперь я делаю что-то вроде: git log | grep bla.

person Shengjie    schedule 21.05.2013    source источник
comment
Вывод $ git log - это не то, что вы редактируете, так почему именно вы хотите использовать редактор для его просмотра?   -  person romainl    schedule 21.05.2013
comment
@romainl в основном просто попробуй поискать. Поскольку ребята указали, что less имеет подмножество функций поиска vim, я думаю, что теперь я могу жить с меньшим количеством.   -  person Shengjie    schedule 21.05.2013
comment
less имеет /, ?, n и N, он поддерживает поиск регулярных выражений. $ man less очень интересно читать.   -  person romainl    schedule 21.05.2013


Ответы (4)


Команда git log по умолчанию направляет вывод в пейджер, а не в редактор. Этот пейджер обычно имеет номер less или more в большинстве систем. Вы можете изменить пейджер по умолчанию на vim с помощью команды:

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

Теперь вы можете искать, используя функциональность vim с помощью /, как обычно.

person Community    schedule 21.05.2013
comment
less подчиняется подмножеству функций поиска vim - person Brian Agnew; 21.05.2013
comment
@honk 'vim -', что там делает '-'? - person Shengjie; 21.05.2013
comment
@Shengjie: это заставляет vim читать из STDIN. Обычно хорошей идеей является добавление -R для режима только для чтения в этом случае. - person Benjamin Bannier; 21.05.2013
comment
@Shengjie: для многих утилит - в качестве имени файла означает stdin или stdout в зависимости от контекста. - person mvp; 21.05.2013
comment
git config --global core.pager 'vim -R -' , -R важно для быстрого выхода - person Sérgio; 06.02.2021

Вы можете просмотреть журнал просмотра.

Это дает вам терминальный графический интерфейс для всех коммитов. Он также откроет файл в редакторе по вашему выбору. Вы можете искать соответствующие коммиты, используя флаг --grep.

person rouble    schedule 26.01.2016

Мне пришлось написать сценарий 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 вас удовлетворит.

person YongHao Hu    schedule 18.08.2016

Это сработало для меня: git log | vim -R -

person sr71 navy    schedule 04.07.2021