Führen Sie externe Änderungen ein, die während der Bearbeitung vorgenommen wurden

10

Wenn externe Änderungen an einer Datei vorgenommen werden, die in Vim bearbeitet wird, kann ich den Inhalt der Datei von neu laden :edit. Nehmen wir jedoch an, dass ich (intern) Änderungen an der Datei vorgenommen habe, die ich beibehalten möchte. Gibt es eine Möglichkeit, die beiden Änderungssätze (extern und intern) zu integrieren? Soweit ich weiß, werden :editeinfach die externen Änderungen vorgenommen.

fuzzybear3965
quelle
3
Müssen Sie lesen :h autoread? Ist es das, wonach du suchst?
Statox
2
:autoreadliest die externen Änderungen ein, aber für den Fall, dass Änderungen an der Datei vorgenommen werden, die automatisch gelesen wird, benachrichtigt mich vim, dass Änderungen an der Datei vorgenommen wurden, seit ich meine internen Änderungen vorgenommen habe. Ich suche nach einer Möglichkeit, die externen Änderungen mit den internen Änderungen zusammenzuführen.
Fuzzybear3965
5
Suchen Sie :h :DiffOrig?
Christian Brabandt
@ChristianBrabandt, es ist nie zu spät, oder? Dies war eine großartige Antwort. Ich wusste nicht, dass es das gibt.
Fuzzybear3965

Antworten:

3

Um auf den Kommentar von Christian Brabandt einzugehen, folgt eine Zerlegung des DiffOrigBefehls:

Voller Befehl:

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

Zersetzung:

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

In einer alternativen Version wird die ++editOption zum Lesen verwendet. Die Optionswerte bleiben so erhalten, als würde eine Datei bearbeitet.

Verweise:

nobe4
quelle