Как запустить Vim в режиме вставки в конце первой строки при фиксации изменений в Git'е?

Я делаю что-то подобное в своих make-файлах:

if (mycommand) &> mycommand.log; then 
  echo success 
else 
  c=$?; 
  echo;echo -e "Bad result from previous command, see mycommand.log for more details";echo;
  command_to_run_on_fail
  (exit $c)
fi

Адаптируя это к вашей ситуации, вы можете сделать что-то вроде этого:

if ! (mycommand) &> mycommand.log; then 
  c=$?; 
  cat mycommand.log
  rm mycommand.log
  (exit $c)
fi

Итак, «if» запускает команду и направляет вывод в mycommand.log. Если вам нужно поймать stdout vs stdout vs что-то еще, вам может потребоваться изменить команду канала '&>' на '>'. Если команда не выполняется, запишите код ошибки, распечатайте содержимое mycommand.log, удалите mycommand.log и, наконец, вернитесь с исходным кодом ошибки.

Без (exit $ c) вы вернетесь с кодом выхода, который соответствует тому, что вернула команда 'rm'.

Наконец, если вам нужен однострочник, подойдет что-то вроде этого.

mycommand &> mycommand.log || cat mycommand.log; rm mycommand.log
2
13.10.2018, 04:14
1 ответ

Адаптация одной из автокоманд, приведенных в Vim Wikia, у меня, похоже, работает нормально с git commit -t /tmp/COMMIT_EDITMSG:

" ~/.vim/ftplugin/gitcommit.vim
au! VimEnter COMMIT_EDITMSG exec 'norm gg' | startinsert!

Я использовал exec 'norm gg' |вместо 1 |, потому что :1 |эквивалентно :1p |и есть небольшая задержка при печати строки.

4
27.01.2020, 22:08

Теги

Похожие вопросы