Fusionner les modifications externes apportées lors de l'édition

10

S'il y a des modifications externes apportées à un fichier en cours d'édition dans Vim, je comprends que je peux recharger le contenu du fichier par :edit. Mais, supposez que (en interne) j'ai apporté des modifications au fichier que je souhaite conserver. Existe-t-il un moyen d'intégrer les deux ensembles de changements (externe et interne)? D'après ce que je comprends, :editprend simplement les changements externes.

fuzzybear3965
la source
3
Faut lire :h autoread? C'est ça que vous cherchez?
statox
2
:autoreadlit les modifications externes mais si des modifications sont apportées au fichier lu automatiquement, vim m'informera que des modifications ont été apportées en externe au fichier depuis que j'ai effectué mes modifications internes. Je cherche un moyen de fusionner les changements externes avec les changements internes.
fuzzybear3965
5
Cherchez-vous :h :DiffOrig?
Christian Brabandt le
@ChristianBrabandt, il n'est jamais trop tard, non? Ce fut une excellente réponse. Je ne savais pas que cela existait.
fuzzybear3965

Réponses:

3

Pour approfondir le commentaire de Christian Brabandt , voici une décomposition de la DiffOrigcommande:

Commande complète:

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

Décomposition:

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

Une version alternative utilise l' ++editoption pour la lecture, elle conserve les valeurs des options comme si vous éditiez un fichier.

Références:

nobe4
la source