Vim

送出 Git 更改時,如何在第一行末尾以插入模式啟動 Vim?

  • January 22, 2021

在執行時將 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我按下某些東西之前,游標一直在狀態行上:

Vim 缺少游標


1 | startinsert!適用於echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG,但在執行git commit -t /tmp/COMMIT_EDITMSG時完全中斷 - 未顯示送出消息,並且送出模板顯示在狀態行下方:

<code>git commit</code> 破壞視圖

按下右箭頭後,送出消息和游標出現,編輯器處於插入模式,但游標位於第二個字元而不是行尾:

<code>git commit</code> 移動游標後

我是否需要在配置中添加一些東西來告訴 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'"

但是請注意,當您必須送出合併時必須按轉義鍵會很煩人,因為已經為這些生成了送出消息。

引用自:https://unix.stackexchange.com/questions/475187