Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Vim快速查看Mercurial或Git更改_Git_Vim_Mercurial - Fatal编程技术网

如何使用Vim快速查看Mercurial或Git更改

如何使用Vim快速查看Mercurial或Git更改,git,vim,mercurial,Git,Vim,Mercurial,当我在Vim中编辑一个文件时,我想快速突出显示自上次提交以来所做的任何更改,同时仍然能够编辑该文件。有什么可以做到这一点吗?有一个网站介绍如何将git和vim结合使用: 我使用git.vim one,每次需要差异时,我都可以使用\gd检查它,其中一种方法是执行以下操作: :!吉特差异 这将显示(所有文件)相对于HEAD的更改 做一个文件 :!git diff path/to/file 这是一种快速的方法,无需切换不同的应用程序或安装任何插件(在某些您无法控制的系统上,这并不总是容易做到) 它不

当我在Vim中编辑一个文件时,我想快速突出显示自上次提交以来所做的任何更改,同时仍然能够编辑该文件。有什么可以做到这一点吗?

有一个网站介绍如何将git和vim结合使用:


我使用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 #