Risposte:
Potrebbero esserci altri modi, ma questo approccio ti consente di fare di più che aggiungere un pezzo, motivo per cui tendo a usarlo abbastanza.
Esegui :Gdiff
comando. Si aprirà una divisione con la versione del file corrente che è attualmente nell'indice a sinistra / in alto nella finestra originale.
Mentre sei nella finestra originale (a destra o in basso), esegui la selezione visiva delle modifiche che desideri git add
.
Esegui :diffput
comando, che può operare su un intervallo. (la dp
chiave non funziona in modalità Visual.)
Chiudi quella seconda finestra salvando le modifiche per aggiornare il file nell'indice. Qui puoi modificarlo come preferisci prima di salvare, non è necessario che corrisponda esattamente alla versione originale o nuova del file.
Tieni presente che :diffput
potrebbe non darti sempre quello che ti aspetteresti a seconda della struttura delle modifiche (soprattutto se stai commettendo solo una parte del blocco contiguo delle modifiche). Quindi non dimenticare di convalidare il commit. Nella maggior parte delle situazioni pratiche funziona bene però.
Vimcasts ha una grande serie su Fugitive.vim . L'episodio Fugitive.vim - lavorare con l'indice git sarebbe il più utile per la tua domanda.
È possibile utilizzare :Gdiff
per mettere in scena solo parti di un file. In esecuzione :Gdiff
ti mostrerà il file corrente "diff-ed" con lo stage / indice. Si può semplicemente utilizzare i comandi diff di Vim ( dp
, do
, :diffput
e :diffget
) per spostare il pezzo alla fase / index. Quindi scrivi il file stage / index come faresti con qualsiasi altro buffer, :w
/ :x
.
Come hai chiesto in particolare sulle soluzioni che utilizzano altri plug-in, noterò che puoi anche mettere in scena selezioni visive usando vimagit , che è un plug-in Git (basato sul popolare plug-in Magit dell'altro editor ) incentrato sulla visualizzazione, la gestione temporanea e il commit delle modifiche.
Per mettere in scena una selezione visiva usando Vimagit:
Esegui il :Magit
comando per aprire un nuovo buffer che visualizza tutti gli hunk modificati nel tuo repository (non solo in un file),
Individua le linee che desideri mettere in scena ed esegui la visual
selezione,
Premere la mappatura "palcoscenico": S
.
vim-gitgutter
Hunk completo da palcoscenico
<Leader>hs
o:GitGutterStageHunk
Stage parte di un pezzo solo aggiunte (dall'8 / 2019)
Modalità visiva
{Visual}<Leader>hs
:'<,'>GitGutterStageHunk
'<,'>
sono come sempre inseriti per te)Gamma
:42,45GitGutterStageHunk
Parte dello stage di qualsiasi pezzo tramite finestra di anteprima (dall'8 / 2019)
<Leader>hp
:wincmd P
<Leader>hs
O:GitGutterStageHunk
Aggiornato: 17.8.2019 a causa di recenti commit bc1d28d e b036fcf
:Gstatus
+D
per fare lo stesso con il fuggitivo. In questo modo posso anche scegliere il file su cui opero nell'elenco dei file che sono stati modificati.