Executa um comando quando o vim sai

1

Existe uma configuração que eu possa adicionar a um arquivo .vimrc que fará com que o vim execute um comando quando um arquivo for fechado?

Por exemplo, suponha que eu esteja editando um arquivo que está sob controle de versão. Quando terminar de editar, eu gostaria que um comando para confirmar que minhas alterações fossem executadas imediatamente antes do vim ser totalmente fechado, sem ter que executá-lo separadamente após salvar / encerrar o arquivo.

Estou curioso sobre isso, pois tenho a tendência de esquecer de enviar minhas alterações.

Como alternativa, e se não for possível fazer o que estou perguntando, é possível configurar um comando interno vim: que executará o commit a partir do vim antes de eu fechar o arquivo?

    
por theillien 03.10.2013 / 00:39

4 respostas

4

Embora não seja uma boa ideia enviar alterações imediatamente após editar e sair do arquivo, você pode tentar comandos automáticos do vim.

augroup autocom
    autocmd!
    "executes the command on quit
     autocmd VimLeave *.cpp !your_command

    "execute the command on write
    autocmd BufWritePost,FileWritePost *.cpp !your_commad
augroup END
    
por 25.07.2014 / 07:45
2

A confirmação automática na saída parece uma má ideia. Você está essencialmente incentivando suas próprias más práticas.

Para confirmar a partir do vim, você faria da mesma forma que executaria qualquer outro comando:

 :!git commit -m "look ma I remembered to commit" my_dir/my_file.c

Depois de executar:

 :w

para salvar ofc

    
por 03.10.2013 / 06:43
0

Por que não criar seu próprio comando? Eu já não sou familliar com isso, mas deve parecer no seu vimrc:

command Wc w | Gcommit

Depois de editar seu arquivo, digite: Wc

Wc "custom name for Write commit
Gcommit " it s a command that exist from the excellent vim plugin 'fugitive' written by tpope
| "(pipe) allow you to add a second command
w " write
    
por 03.10.2013 / 07:38
0

O plug-in de integração vcscommand.vim - CVS / SVN / SVK / git / hg / bzr fornece um comando :VCSCommit .

Para conectar quando um arquivo é fechado, você pode usar um :autocmd no evento BufDelete .

Mas eu concordo com Nanzikambe que esta é uma má ideia, e você deve trabalhar para melhorar suas práticas. Por exemplo, existem plugins que podem mostrar o estado sujo da cópia de trabalho na statusline do Vim, e várias publicações no blog explicam como adicionar um indicador desse tipo ao prompt do seu shell.

    
por 03.10.2013 / 10:56

Tags