Antworten:
Es mag andere Möglichkeiten geben, aber mit diesem Ansatz können Sie mehr als nur einen Block hinzufügen, weshalb ich ihn häufig verwende.
:Gdiff
Befehl ausführen . Es wird ein Split mit der Version der aktuellen Datei geöffnet, die sich derzeit im Index links / oben im Originalfenster befindet.
Führen Sie im Originalfenster (rechts oder unten) eine visuelle Auswahl der gewünschten Änderungen durch git add
.
Führen Sie den :diffput
Befehl aus, der für einen Bereich ausgeführt werden kann. ( dp
Taste funktioniert im visuellen Modus nicht.)
Schließen Sie das zweite Fenster und speichern Sie die Änderungen an der Aktualisierungsdatei im Index. Hier können Sie es vor dem Speichern nach Ihren Wünschen bearbeiten. Es muss nicht genau mit der ursprünglichen oder neuen Version der Datei übereinstimmen.
Beachten :diffput
Sie, dass dies je nach Struktur der Änderungen möglicherweise nicht immer das bietet, was Sie erwarten würden (insbesondere, wenn Sie nur einen Teil eines zusammenhängenden Änderungsblocks festlegen). Vergessen Sie also nicht, das Commit zu validieren. In den meisten praktischen Situationen funktioniert es jedoch gut.
Vimcasts hat eine großartige Serie auf Fugitive.vim . Die Episode Fugitive.vim - Arbeiten mit dem Git-Index wäre die hilfreichste für Ihre Frage.
Sie können :Gdiff
nur Teile einer Datei bereitstellen. Beim Ausführen :Gdiff
wird die aktuelle Datei "diff-ed" mit der Stufe / dem Index angezeigt. Sie können einfach Vims diff Befehle (verwenden Sie dp
, do
, :diffput
, und :diffget
) das große Stück auf die Bühne / Index zu bewegen. Dann schreiben Sie die Bühne / Index - Datei wie jeder anderen Puffer, :w
/ :x
.
Da Sie speziell nach Lösungen gefragt haben, die andere Plugins verwenden, können Sie auch visuelle Auswahlen mit vimagit durchführen , einem Git-Plugin (basierend auf dem beliebten Magit-Plugin des anderen Editors ), das sich auf das Anzeigen, Staging und Festschreiben von Änderungen konzentriert.
So inszenieren Sie eine visuelle Auswahl mit Vimagit:
Führen Sie den :Magit
Befehl aus, um einen neuen Puffer zu öffnen, in dem alle geänderten Hunks in Ihrem Repository angezeigt werden (nicht nur in einer Datei).
Suchen Sie die Linien, die Sie inszenieren möchten, und führen Sie Ihre visual
Auswahl durch.
Drücken Sie die Zuordnung "Bühne" : S
.
vim-gitgutter
Stage Complete Hunk
<Leader>hs
oder:GitGutterStageHunk
Bühnenteil eines nur für Ergänzungen bestimmten Stücks (seit 8/2019)
Visueller Modus
{Visual}<Leader>hs
:'<,'>GitGutterStageHunk
'<,'>
werden wie immer für dich eingefügt)Angebot
:42,45GitGutterStageHunk
Bühnenteil eines Hunks über das Vorschaufenster (seit 8/2019)
<Leader>hp
:wincmd P
<Leader>hs
oder:GitGutterStageHunk
Aktualisiert: 17.8.2019 aufgrund der letzten Commits bc1d28d und b036fcf
:Gstatus
+D
, um dasselbe mit Flüchtlingen zu tun. Auf diese Weise kann ich auch die Datei, mit der ich arbeite, aus der Liste der geänderten Dateien auswählen.