微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vim-fugitive – 如何运行`git diff -staged`与Fugitive?

命令:Gdiff相当于在该文件上运行git diff.

git diff -staged或git diff –cached的等价物是什么?

虽然vim-fugitive不提供git diff -staged或git diff -cached的直接类似程序,但它提供了一个通用的Vim命令,用于将任意git命令的输出配置为只读Vim缓冲区:Git!

不适用答案

在我们明白之前,让我们明确地重申一下这个问题. git diff -staged和git diff –cached是相同底层操作的同义词:将索引的内容(所有分段更改的集合)与HEAD的内容(当前分支的最近提交)进行差异化,通常用于在提交之前检查更改.所提出的问题就是:

What is the most effective means of reviewing all staged changes in vim-fugitive?

应该清楚的是,目前接受的自我回答未能解决这个问题.下一个最高评分的自我回答没有更好.

:Gstatus绑定仅适用于当前行中的文件,因此无法定义用于查看所有分段更改.此外,Gstatus D绑定甚至不会查看当前行中文件的所有分段更改.它只会分辨该文件的索引和工作树副本,而不是分辨该文件(这是完全不同的野兽)的索引和最近提交的副本.

:Gdiff HEAD同样不适用.它只会使与当前缓冲区对应的文件的最近提交和工作树副本不同. :没有参数的Gdiff等价于:Gstatus D绑定,再次分割该文件的索引和工作树副本.也不会审查所有分段更改.

适用答案

对于最后一个答案,这个评论最接近于一个工作的解决方案:

:Git diff --staged

现在我们逼近真相!

:将传递的git命令的输出管道传输到当前的外部寻呼机,允许对Vim外部的所有分阶段更改进行实质性审查.但是有一个擦除:Vim外部.这意味着没有Vim绑定,缓冲区或语法突出显示.理想情况下,我们更喜欢只读Vim缓冲区语法,突出显示git diff -staged的输出.我们可以做到吗

解决方

我们可以,或者Tim Pope不是Vim教皇. !的补码变体:Git只是这样,允许对Vim中所有分阶段更改进行谎言审查,完整的基于Vim的语法突出显示变化差异:

:Git! diff --staged

是啊.这真的很棒

但是让我们走得更远.在任何地方懒惰的懒惰者的悠久传统中,我们定义一个新的Vim命令:Greview封装此操作和运行此命令的新绑定< leader> gr.只需将以下内容存入您的.vimrc:

command Greview :Git! diff --staged
nnoremap <leader>gr :Greview<cr>

假设< leader>要查看所有分阶段的变化减少到,gr.它不能得到任何维米尔.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐