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'"
그러나 병합을 커밋해야 할 때 Esc 키를 눌러야 하는 것은 성가실 수 있다는 점에 유의하세요. 병합에 대한 커밋 메시지가 이미 생성되어 있기 때문입니다.