Ввод режима вставки автоматически при редактировании сообщений git
Если я делаю git commit
, когда Vim открывается, я хочу быть в режиме вставки сразу.
Я заметил, что при редактировании filetype
устанавливается gitcommit
, поэтому я думал, что смогу добиться этого с помощью автокоманды.
au BufRead gitcommit startinsert!
Это не работает, но что я делаю неправильно?
Решение
Я установил au FileType gitcommit execute "normal! O" | startinsert
, чтобы добавить новую строку выше текущей, а затем введите режим вставки, готовый для ввода сообщения.
Ответы
Ответ 1
В :au Event pattern command
шаблон обычно сопоставляется с именем буфера. Вместо BufRead gitcommit
вы можете использовать BufRead COMMIT_EDITMSG
. Если вы хотите сопоставить параметр filetype, используйте событие FileType
.
Я имею тенденцию писать многострочные сообщения фиксации, и у меня есть автокоманда (из vimrc_example.vim), которая делает
exe "normal! g`\""
всякий раз, когда я вхожу в новый буфер, так как насчет
au FileType gitcommit 1 | startinsert
чтобы перейти к первой строке перед входом в режим Insert? Теперь, когда я протестировал его, я думаю, что сохраню его.:)
Ответ 2
Альтернативный подход:
export GIT_EDITOR='vim +startinsert'
или добавить !
в конце, чтобы начать с конца сообщения (полезно при использовании git hooks для завершения сообщения)
export GIT_EDITOR='vim +startinsert!'
Ответ 3
Это, вероятно, немного сложнее, чем должно быть, но вы можете сделать это с помощью отдельного плагина filetype:
$ mkdir -p ~/.vim/ftplugin/gitcommit
$ echo 'startinsert!' > !$/git-commit-insert.vim