将 Vim 设置为始终的最佳方式是什么将光标置于第一行末尾的插入模式(考虑提交消息模板)运行时git commit
?这基本上会做与ggA每次按下相同的事情。理想情况下,这应该是一个 Vim 配置(大概在〜/.vim/after/ftplugin/gitcommit.vim),因为我依赖$VISUAL
而不是单独为所有内容配置编辑器。
这几乎有效:
call feedkeys('ggA', 'int')
但是,运行时echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG
光标位于状态行上,直到我按下某键:
1 | startinsert!
适用于echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG
,但运行时git commit -t /tmp/COMMIT_EDITMSG
它完全中断 - 未显示提交消息,并且提交模板显示在状态行下方:
按向右箭头后,将显示提交消息和光标,并且编辑器处于插入模式,但光标位于第二个字符而不是行尾:
我是否需要在配置中添加一些内容来告诉 Vim 显示缓冲区的实际内容?
答案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 |
并且在打印该行时有一个小的延迟。
答案2
您可以使用命令告诉 git 调用 vim startinsert
。将其放入您的~/.bashrc
文件中:
export GIT_EDITOR="vim -c 'startinsert'"
但请注意,当您必须提交合并时必须按转义键会很烦人,因为已经为这些生成了提交消息。