Réponses:
Il peut y avoir d'autres façons, mais cette approche vous permet de faire plus que d'ajouter un morceau, c'est pourquoi j'ai tendance à l'utiliser beaucoup.
Exécuter la :Gdiff
commande. Il ouvrira une scission avec la version du fichier actuel qui est actuellement dans l'index à gauche / en haut de la fenêtre d'origine.
Dans la fenêtre d'origine (à droite ou en bas), effectuez une sélection visuelle des modifications que vous souhaitez git add
.
Exécuter la :diffput
commande, qui peut fonctionner sur une plage. (la dp
clé ne fonctionne pas en mode visuel.)
Fermez cette deuxième fenêtre en enregistrant les modifications pour mettre à jour le fichier dans l'index. Ici, vous pouvez le modifier comme vous le souhaitez avant de l'enregistrer, il ne doit pas nécessairement correspondre exactement à la version originale ou nouvelle du fichier.
N'oubliez pas que :diffput
cela ne vous donnera pas toujours ce à quoi vous vous attendez en fonction de la structure des changements (surtout si vous n'engagez qu'une partie d'un bloc contigu de changements). N'oubliez donc pas de valider le commit. Dans la plupart des situations pratiques, cela fonctionne bien.
Vimcasts a une grande série sur Fugitive.vim . L'épisode Fugitive.vim - travailler avec l'index git serait le plus utile pour votre question.
Vous pouvez utiliser :Gdiff
pour mettre en scène uniquement des parties d'un fichier. Running :Gdiff
vous montrera le fichier actuel "diff-ed" avec la scène / index. Vous pouvez simplement utiliser Vim les commandes diff ( dp
, do
, :diffput
et :diffget
) pour déplacer le gros morceau à l'étape / index. Ensuite, vous écrivez le fichier stage / index comme vous le feriez pour tout autre tampon, :w
/ :x
.
Comme vous l'avez spécifiquement demandé sur les solutions qui utilisent d'autres plugins, je noterai que vous pouvez également organiser des sélections visuelles en utilisant vimagit , qui est un plugin Git (basé sur le plugin Magit populaire de l'autre éditeur ) centré sur l'affichage, la mise en scène et la validation des modifications.
Pour organiser une sélection visuelle à l'aide de Vimagit:
Exécutez la :Magit
commande pour ouvrir un nouveau tampon qui affiche tous les morceaux modifiés dans votre référentiel (pas seulement dans un fichier),
Localisez les lignes que vous souhaitez mettre en scène et effectuez votre visual
sélection,
Appuyez sur la cartographie « de scène »: S
.
vim-gitgutter
Stage Complete Hunk
<Leader>hs
ou:GitGutterStageHunk
Stage Stage of a Additions-only Hunk (depuis le 8/2019)
Mode visuel
{Visual}<Leader>hs
:'<,'>GitGutterStageHunk
'<,'>
sont comme toujours insérés pour vous)Intervalle
:42,45GitGutterStageHunk
Mettre en scène une partie de n'importe quel morceau via la fenêtre d'aperçu (depuis le 8/2019)
<Leader>hp
:wincmd P
<Leader>hs
ou:GitGutterStageHunk
Mise à jour: 17.8.2019 en raison de validations récentes bc1d28d et b036fcf
:Gstatus
+D
pour faire de même avec les fugitifs. De cette façon, je peux également choisir le fichier sur lequel j'opère parmi la liste des fichiers qui ont été modifiés.