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 :Gdiffcommande. 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 :diffputcommande, qui peut fonctionner sur une plage. (la dpclé 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 :diffputcela 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 :Gdiffpour mettre en scène uniquement des parties d'un fichier. Running :Gdiffvous montrera le fichier actuel "diff-ed" avec la scène / index. Vous pouvez simplement utiliser Vim les commandes diff ( dp, do, :diffputet :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 :Magitcommande 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 visualsélection,
Appuyez sur la cartographie « de scène »: S.
vim-gitgutterStage Complete Hunk
<Leader>hs ou:GitGutterStageHunkStage 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,45GitGutterStageHunkMettre 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>hsou:GitGutterStageHunkMise à jour: 17.8.2019 en raison de validations récentes bc1d28d et b036fcf
:Gstatus+Dpour 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.