Como iniciar o Vim no modo de inserção no final da primeira linha ao confirmar mudanças no Git?

2

Qual seria a melhor maneira de configurar o Vim para sempre colocar o cursor no modo de inserção no final da primeira linha (para considerar os modelos de mensagem de confirmação) ao executar git commit ? Isso basicamente faria algo idêntico ao pressionar ggA todas as vezes. Idealmente, isso deve ser uma configuração do Vim (presumivelmente em ~ / .vim / after / ftplugin / gitcommit.vim ), porque eu confie em $VISUAL em vez de configurar editores para tudo separadamente.

Isso quase funciona:

call feedkeys('ggA', 'int')

No entanto, ao executar echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG , o cursor está na linha de status até que eu pressione algo:

1|startinsert!funcionaparaecho'sometext'>/tmp/COMMIT_EDITMSG&&vim-NuNONE--cmd'filetypepluginon'/tmp/COMMIT_EDITMSG,masaoexecutargitcommit-t/tmp/COMMIT_EDITMSG,elequebracompletamente-amensagemdeconfirmaçãonãoémostradaeomodelodeconfirmaçãoémostradoabaixodalinhadestatus:

Depoisdepressionarasetaparaadireita,amensagemdeconfirmaçãoeocursoraparecem,eoeditorestánomododeinserção,masocursorestánosegundocaractere,enãonofinaldalinha:

Eu preciso adicionar algo à configuração para dizer ao Vim para mostrar o conteúdo real do buffer?

    
por l0b0 13.10.2018 / 01:16

1 resposta

2

Adaptando um dos autocommands dados no Vim Wikia, isso parece funcionar bem com git commit -t /tmp/COMMIT_EDITMSG para mim:

" ~/.vim/ftplugin/gitcommit.vim
au! VimEnter COMMIT_EDITMSG exec 'norm gg' | startinsert!

Eu usei exec 'norm gg' | em vez de 1 | porque :1 | é equivalente a :1p | e há um pequeno atraso quando a linha é impressa.

    
por 13.10.2018 / 07:01