我想知道我是否可以在可视模式下选择一些代码并对其进行编码?

我通过fugitive.vim进行了检查,但我没有找到方法。

有可能吗?还是有其他插件可以做到?

#1 楼

可能还有其他方法,但是这种方法除了添加块之外,还可以做更多的事情,这就是为什么我倾向于大量使用它的原因。它将打开一个包含当前文件版本的拆分,该版本当前位于原始窗口左侧/顶部的索引中。
在原始窗口(右侧或底部)中,直观地选择要更改的内容:Gdiff
运行git add命令,该命令可以在一定范围内运行。 (:diffput键在可视模式下不起作用。)
关闭第二个保存更改以更新索引中文件的窗口。在这里,您可以按自己喜欢的方式对其进行编辑,然后再保存,它不必与文件的原始版本或新版本完全匹配。

请注意,dp可能并不总是能提供您期望的结果,具体取决于更改的结构(特别是如果您仅提交连续更改块的一部分)。因此,不要忘记验证提交。在大多数实际情况下,它仍然可以正常工作。

#2 楼

Vimcasts在Fugitive.vim上有很多文章。 Fugitive.vim情节-使用git索引将对您的问题最有用。

您可以使用:Gdiff暂存文件的一部分。运行:Gdiff将显示带有阶段/索引的当前文件“ diff-ed”。您可以简单地使用Vim的diff命令(dpdo:diffput:diffget)将大块移至舞台/索引。然后,您将像其他缓冲区:w / :x一样写入阶段/索引文件。

评论


我使用:Gstatus + D对逃犯做同样的事情。这样,我还可以从修改过的文件列表中选择正在处理的文件。

–卢克·赫米特(Luc Hermitte)
17年1月25日在12:23

#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提交