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

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

Также:

В любом случае я могу использоватьvim как мой редактор по умолчанию для?git logЕсли я хочу искать в журнале git, чтолучший способ? Сейчас я'Я делаю что-то вроде:git log | grep bla
 romainl21 мая 2013 г., 14:26
меньше имеет,/?n а такжеN, он поддерживает поиск регулярных выражений.$ man less этоочень интересно читать.
 romainl21 мая 2013 г., 12:07
Выход из$ git log это не то, что вы редактируете, так почему именно вы хотите использовать редактор для просмотра?
 Shengjie21 мая 2013 г., 12:19
@romainl в основном просто попробуйте найти его. Поскольку ребята отметили, что у less есть подмножество функций поиска vim, я думаю, что теперь я могу жить с меньшим.

Ответы на вопрос(3)

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

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

Решение Вопроса

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

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

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

 mvp21 мая 2013 г., 11:47
@Shengjie: для многих утилит,- как означает имя файлаstdin или жеstdout в зависимости от контекста
 Shengjie21 мая 2013 г., 11:36
@honk 'Вим - ', что значит '-' там делать?
 Benjamin Bannier21 мая 2013 г., 11:47
@Shengjie: это делает VIM читать изSTDIN, Обычно хорошая идея добавить-R для режима только для чтения в этом случае также.
 Brian Agnew21 мая 2013 г., 11:27
меньше подчиняется подмножеству функций поиска vim
 Benjamin Bannier21 мая 2013 г., 11:14
/ прекрасно работает вless Кстати.

Мне пришлось написать скрипт 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-так фантазия.

Если вы просто хотите использовать vim в качестве редактора журнала gitgit config --global pager.show "vim -c '%sm/\\e.\\{-}m//g' -c удовлетворит вас.

Ваш ответ на вопрос