送出 Git 更改時,如何在第一行末尾以插入模式啟動 Vim?
在執行時將 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 顯示緩衝區的實際內容?
調整 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 |
列印行時有一個小的延遲。
startinsert
您可以告訴 git 使用該命令呼叫 vim 。把它放在你的~/.bashrc
文件中:export GIT_EDITOR="vim -c 'startinsert'"
但是請注意,當您必須送出合併時必須按轉義鍵會很煩人,因為已經為這些生成了送出消息。