l0b*_*0b0 5 vim configuration git
将 Vim 设置为在运行时始终将光标置于第一行末尾的插入模式(以考虑提交消息模板)的最佳方法是什么git commit
?ggA这基本上会做与每次按下相同的事情。理想情况下,这应该是 Vim 配置(大概在~/.vim/after/ftplugin/gitcommit.vim中),因为我依赖$VISUAL
而不是单独配置编辑器。
这几乎有效:
call feedkeys('ggA', 'int')
Run Code Online (Sandbox Code Playgroud)
但是,运行时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 显示缓冲区的实际内容?
改编 Vim Wikia 中给出的自动命令之一,这似乎对git commit -t /tmp/COMMIT_EDITMSG
我来说效果很好:
" ~/.vim/ftplugin/gitcommit.vim
au! VimEnter COMMIT_EDITMSG exec 'norm gg' | startinsert!
Run Code Online (Sandbox Code Playgroud)
我exec 'norm gg' |
之所以使用它,是1 |
因为:1 |
相当于:1p |
并且在打印该行时有一个小的延迟。