如何使用Vim快速查看Mercurial或Git更改
当我在Vim中编辑一个文件时,我想快速突出显示自上次提交以来所做的任何更改,同时仍然能够编辑该文件。有什么可以做到这一点吗?有一个网站介绍如何将git和vim结合使用:如何使用Vim快速查看Mercurial或Git更改,git,vim,mercurial,Git,Vim,Mercurial,当我在Vim中编辑一个文件时,我想快速突出显示自上次提交以来所做的任何更改,同时仍然能够编辑该文件。有什么可以做到这一点吗?有一个网站介绍如何将git和vim结合使用: 我使用git.vim one,每次需要差异时,我都可以使用\gd检查它,其中一种方法是执行以下操作: :!吉特差异 这将显示(所有文件)相对于HEAD的更改 做一个文件 :!git diff path/to/file 这是一种快速的方法,无需切换不同的应用程序或安装任何插件(在某些您无法控制的系统上,这并不总是容易做到) 它不
我使用git.vim one,每次需要差异时,我都可以使用
\gd
检查它,其中一种方法是执行以下操作:
:!吉特差异
这将显示(所有文件)相对于HEAD的更改
做一个文件
:!git diff path/to/file
这是一种快速的方法,无需切换不同的应用程序或安装任何插件(在某些您无法控制的系统上,这并不总是容易做到)
它不会给你“内联”突出显示,但应该工作正常
另一种快速执行的方法是执行:r!git diff
查看更改,然后键入u
撤消添加。这也很有效,特别是如果你想从头上抓取一些文本,看看Tim Pope的插件
我是一个git纯粹主义者,通常会进入git的命令行,但当我在vim中时,我发现这做了我需要做的大部分事情,但我仍然可以直接调用git命令。尝试插件,使用:VCSVimDiff
查看当前版本的差异(同时支持hg和git,可能还支持其他一些SCM系统)和内部:bdelete
(:bd
)(当然是在打开的缓冲区上,而不是在已经存在的缓冲区上)来停止扩散。如果您使用的是gentoo,它可以在存储库中找到:app vim/vcscommand
这个怎么样(不需要插件):
这将在当前缓冲区的文件名上运行hg注释,然后将输出转储到新的缓冲区中
这种形式的命令显然不是git和hg特有的。您可以通过这种方式捕获任何shell命令的结果。编辑2020-01-23:快速搜索,仅供参考,我发现另一个插件似乎更不了解VCS:
有一个新插件可以做到这一点:。无论何时保存文件,它都会将更改放在Vim槽中。下面是它在运行中的样子:
这对Hg和Git都有效:
对于Mercurial而言,相当于逃犯的一个词是lawrencium
:
它支持并排的diff和突出显示的diff
类视图(基本上是从hg diff
中获得的)
(免责声明:我是作者)接受这个,因为它可以在git和hg(以及其他)上运行。不过,我更喜欢Tim Pope的《逃犯》的git版。我更喜欢《逃犯》而不是vcscommand插件,但我需要hg的支持,所以我接受了另一个答案。不过,感谢你让我打开《逃犯》,我很高兴我喜欢它。直到一位朋友建议我自己试用它,我才确定它能满足我的需要。@Abizern,很抱歉,我意识到这是错误的这是一个老问题,但如何使用逃犯来突出显示OP的问题之类的更改行?@JamesMcMahon抱歉-自从我写了这个答案后,我已经转到Emacs和Magit。我的逃犯知识已经消失了。@JamesMcMahon您可能已经明白了这一点,但是:Gdiff显示了差异。有关另一个有用的信息,请参阅关于Gitgoolt的答案工具。对于当前文件,只需执行:!git diff%
或:!hg diff%
。很好。如果问题只在git上,我会接受这一点。这正是我想要的。我只使用了一段时间,它非常有用。这使得查看文件的哪些部分已更改非常容易。一个好的项目可能是将其移植到其中汞的变化。
:new | r ! hg annotate -un #