我通过fugitive.vim进行了检查,但我没有找到方法。
有可能吗?还是有其他插件可以做到?
#1 楼
可能还有其他方法,但是这种方法除了添加块之外,还可以做更多的事情,这就是为什么我倾向于大量使用它的原因。它将打开一个包含当前文件版本的拆分,该版本当前位于原始窗口左侧/顶部的索引中。在原始窗口(右侧或底部)中,直观地选择要更改的内容
:Gdiff
。运行
git add
命令,该命令可以在一定范围内运行。 (:diffput
键在可视模式下不起作用。)关闭第二个保存更改以更新索引中文件的窗口。在这里,您可以按自己喜欢的方式对其进行编辑,然后再保存,它不必与文件的原始版本或新版本完全匹配。
请注意,
dp
可能并不总是能提供您期望的结果,具体取决于更改的结构(特别是如果您仅提交连续更改块的一部分)。因此,不要忘记验证提交。在大多数实际情况下,它仍然可以正常工作。#2 楼
Vimcasts在Fugitive.vim上有很多文章。 Fugitive.vim情节-使用git索引将对您的问题最有用。您可以使用
:Gdiff
暂存文件的一部分。运行:Gdiff
将显示带有阶段/索引的当前文件“ diff-ed”。您可以简单地使用Vim的diff命令(dp
,do
,:diffput
和:diffget
)将大块移至舞台/索引。然后,您将像其他缓冲区:w
/ :x
一样写入阶段/索引文件。#3 楼
带有vim-gitgutter
的阶段完整或部分大块阶段完整大块
<Leader>hs
或:GitGutterStageHunk
仅附加块的阶段部分(自8/2019起)
Visual模式
{Visual}<Leader>hs
:'<,'>GitGutterStageHunk
(
'<,'>
总是为您插入)范围
:42,45GitGutterStageHunk
舞台的任何部分都通过预览窗口(自8/2019)
预览大块头,例如
<Leader>hp
移动到预览窗口,例如
:wincmd P
删除您不想暂存的行
剩余的行,例如
<Leader>hs
或:GitGutterStageHunk
更新:17.8.2019由于最近提交了bc1d28d和b036fcf
评论
它要求vim逃犯,而不是vim-gitgutter
–giggi__
20年5月12日15:37
#4 楼
当您特别询问使用其他插件的解决方案时,我会注意到您还可以使用vimagit进行视觉选择,这是一个Git插件(基于其他编辑器中流行的Magit插件),主要围绕查看,暂存和提交更改。要使用Vimagit进行视觉选择:
运行
:Magit
命令打开一个新缓冲区,该缓冲区显示存储库中所有更改的块(不仅仅是一个文件),找到要暂存的行并执行
visual
选择,按“暂存”映射:
S
。#5 楼
fugitive.vim现在允许在可视模式下分阶段选择一个大块。用
:Git
(或:G
)打开git摘要展开包含要暂存的行的文件
>
(或=
进行切换)。这只会显示已更改的块,以及已更改的行上方和下方的一些额外的上下文行。v
以启动可视模式并选择要与hjkl
过渡的行s
进行视觉选择(或-
切换)根据需要重复2-4次
cc
提交
评论
我使用:Gstatus + D对逃犯做同样的事情。这样,我还可以从修改过的文件列表中选择正在处理的文件。
–卢克·赫米特(Luc Hermitte)
17年1月25日在12:23