jordelver
jordelver

Reputation: 8432

Entering insert mode automatically when editing git commit messages

If I do a git commit, when Vim opens, I want to be in insert mode straight away.

I noticed that the filetype is set to gitcommit when editing, so I thought I could achieve this with an autocommand.

au BufRead gitcommit startinsert!

This doesn't work though, what am I doing wrong?

SOLUTION

I settled on au FileType gitcommit execute "normal! O" | startinsert to add a new line above the current and then enter insert mode ready for entering a message.

Upvotes: 16

Views: 2510

Answers (3)

user2404501
user2404501

Reputation:

An alternate approach:

export GIT_EDITOR='vim +startinsert'

or add ! in the end to start from the end of message (useful, when using git hooks for message completion)

export GIT_EDITOR='vim +startinsert!'

Upvotes: 13

benjifisher
benjifisher

Reputation: 5122

In :au Event pattern command, the pattern is usually matched against the buffer name. Instead of BufRead gitcommit, you could use BufRead COMMIT_EDITMSG. If you want to match against the filetype option, then use the FileType event.

I tend to write multi-line commit messages, and I have an autocommand (from vimrc_example.vim) that does

exe "normal! g`\""

whenever I enter a new buffer, so how about

au FileType gitcommit 1 | startinsert

to go to the first line before entering Insert mode? Now that I have tested it, I think I will keep it. :)

Upvotes: 12

Explosion Pills
Explosion Pills

Reputation: 191809

This is probably a bit more complex than it needs to be, but you can do this with an individual filetype plugin:

$ mkdir -p ~/.vim/ftplugin/gitcommit
$ echo 'startinsert!' > !$/git-commit-insert.vim

Upvotes: 3

Related Questions