Mesclar alterações externas feitas durante a edição

10

Se houver alterações externas feitas em um arquivo que está sendo editado no Vim, entendo que posso recarregar o conteúdo do arquivo :edit. Mas, suponha que (internamente) eu tenha feito alterações no arquivo que quero preservar. Existe uma maneira de integrar os dois conjuntos de mudanças (externas e internas)? Pelo que entendi, :editsimplesmente pega as mudanças externas.

fuzzybear3965
fonte
3
Tem que ler :h autoread? É isso que você está procurando?
statox
2
:autoreadlê as alterações externas, mas no caso de serem feitas alterações no arquivo que está sendo lido automaticamente, o vim me notificará que houve alterações feitas externamente no arquivo desde que eu fiz minhas edições internas. Estou procurando uma maneira de mesclar as mudanças externas com as internas.
Fuzzybear3965
5
Você está procurando :h :DiffOrig?
Christian Brabandt
@ChristianBrabandt, nunca é tarde demais, certo? Essa foi uma ótima resposta. Eu não sabia que isso existia.
precisa saber é o seguinte

Respostas:

3

Para elaborar o comentário de Christian Brabandt , aqui está uma decomposição do DiffOrigcomando:

Comando completo:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis

Decomposição:

command DiffOrig        " create a new command named DiffOrig
vert new                " open a new buffer splitted vertically
| set bt=nofile         " set buffer type to scratch 
| r #                   " read the alternate buffer (opened file to diff)
| 0d_                   " delete the first line
| diffthis              " diff the current buffer
| wincmd p              " move cursor to opened file 
| diffthis              " diff the current buffer

Uma versão alternativa usa a ++editopção para leitura, mantém os valores das opções como se estivesse editando um arquivo.

Referências:

nobe4
fonte