Respostas:
Pode haver outras maneiras, mas essa abordagem permite que você faça mais do que adicionar um pedaço, e é por isso que costumo usá-lo bastante.
Executar :Gdiffcomando. Ele abrirá uma divisão com a versão do arquivo atual que está atualmente no índice à esquerda / parte superior da janela original.
Enquanto estiver na janela original (direita ou inferior), faça a seleção visual das alterações que deseja git add.
Executar :diffputcomando, que pode operar em um intervalo. (a dpchave não funciona no modo Visual.)
Feche a segunda janela, salvando as alterações para atualizar o arquivo no índice. Aqui você pode editá-lo da maneira que desejar antes de salvar, pois não precisa corresponder exatamente à versão original ou nova do arquivo.
Lembre-se de que :diffputnem sempre você pode dar o que você esperaria, dependendo da estrutura das mudanças (especialmente se você está cometendo apenas parte do bloco contíguo de mudanças). Portanto, não esqueça de validar o commit. Na maioria das situações práticas, funciona bem.
O Vimcasts tem uma ótima série no Fugitive.vim . O episódio Fugitive.vim - trabalhar com o índice git seria o mais útil para sua pergunta.
Você pode usar :Gdiffpara preparar apenas partes de um arquivo. A execução :Gdiffmostrará o arquivo atual "diff-ed" com o estágio / índice. Você pode simplesmente usar comandos diff do Vim ( dp, do, :diffpute :diffget) para mover o galã ao palco / index. Então você escreve o arquivo de estágio / índice como faria com qualquer outro buffer, :w/ :x.
Como você perguntou especificamente sobre soluções que usam outros plug-ins, observarei que você também pode organizar seleções visuais usando o vimagit , que é um plug-in Git (baseado no popular plugin Magit do outro editor ), centrado em visualizar, preparar e confirmar alterações.
Para preparar uma seleção visual usando o Vimagit:
Execute o :Magitcomando para abrir um novo buffer que exibe todos os blocos alterados no seu repositório (não apenas em um arquivo),
Localize as linhas que você deseja preparar e faça sua visualseleção,
Pressione o mapeamento "palco": S.
vim-gitgutterEstágio Completo
<Leader>hs ou:GitGutterStageHunkEncenar parte de um pedaço só de adições (desde 8/2019)
Modo visual
{Visual}<Leader>hs:'<,'>GitGutterStageHunk'<,'>estão sempre inseridos para você)Alcance
:42,45GitGutterStageHunkEncenar parte de qualquer pedaço através da janela de visualização (desde 8/2019)
<Leader>hp:wincmd P<Leader>hsou:GitGutterStageHunkAtualizado: 17.8.2019 devido a recentes confirmações bc1d28d e b036fcf
:Gstatus+Dpara fazer o mesmo com o fugitivo. Dessa forma, também posso escolher o arquivo em que estou operando na lista de arquivos que foram modificados.