将 vimdiff 与 diff 文件结合使用
如何使用 vimdiff 查看 diff 文件中描述的差异?
How can I use vimdiff to view the differences described in a diff file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何使用 vimdiff 查看 diff 文件中描述的差异?
How can I use vimdiff to view the differences described in a diff file?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
不要使用
/usr/bin/vimdiff
命令,而是尝试以下命令:(简称
:vert diffpa
。)这相当于在原始文件和随后修补的文件上调用
vimdiff
,但vim
为您在临时文件上调用patch
。编辑
如果您希望自动进入
vim
的 diff 模式,请使用以下命令:其中
+command
要求vim
执行“命令”。 (+123
跳转到第 123 行,+/abc
跳转到“abc”的第一个匹配项,这些都已记录。)关于 Ken 的查询:如果 diff 文件包含 hunks应用于除您当前正在编辑的文件之外的文件,不用担心;
vim
调用下面的patch
可执行文件,它会询问这些神秘丢失的文件的位置,你可以告诉patch
跳过这些大块。Instead of using
/usr/bin/vimdiff
command, try this:(
:vert diffpa
for short.)This is equivalent to calling
vimdiff
on the original file and the subsequently patched file, butvim
callspatch
on a temporary file for you.Edit
If you want
vim
's diff-mode to be entered automatically, use this:where
+command
asksvim
to execute "command". (+123
jumps to line 123,+/abc
jumps to the first match for "abc", it's all documented.)Regarding Ken's query: if the diff file includes hunks applying to files other than the file you're currently editing, no worries;
vim
calls thepatch
executable underneath, which will ask for the locations of these mysteriously missing files, and you can tellpatch
to just skip those hunks.从另一个方向过来。 我编写了一个 Vim 插件,以 vimdiff 或统一 diff 格式显示自上次保存以来对文件所做的更改。
在这里获取它: diffchanges.vim
Coming from the other direction. I wrote a Vim plugin that shows the changes that have been made to a file since the last save in either vimdiff or unified diff format.
Get it here: diffchanges.vim
复制原始文件,应用差异,然后
您还可以查看 vim.org 脚本 已编写用于处理 svn diff 输出。 如果您从版本控制系统生成差异,请查看 vcs 命令.vim :CVS/SVN/SVK/git 集成插件。
Make a copy of the original file, apply the diff and then
You could also look at vim.org scripts which have been written to deal with svn diff output. If you are generating your diff from a version control system then take a look at the vcscommand.vim : CVS/SVN/SVK/git integration plugin.
您能详细说明一下为什么要使用 vimdiff 吗?
例如,您想要可视化(统一)差异文件中每个字符的差异?。 如果是这样,有人回答了我的问题与 一个建议基本上只是在差异上启动 emacs 并按
ALT-n
循环显示大块,很好地突出显示每个单词或每个字符的变化(类似于vimdiff)。 它工作得很好,但是仅仅为了做到这一点而启动 emacs 就太糟糕了。 我只知道足够的 emacs 来做到这一点,然后退出而不会弄乱补丁。 :)不管怎样,emacs 的回答给了我一些想法。 我确信 Vim 可以被诱骗为 diff 文件提供更好的突出显示,也许更像 ediff。 我不久前研究过这个问题,vim 用户列表上的某个人对 合并 google-diff-match-patch。 例如,Python 接口可以从 Python Vim ftplugin 中使用。
很抱歉,当这可能不是一个很好的答案时,使用“答案”来回复,“添加评论”的格式对于我想说的内容来说太有限了。
对于后人来说,这里引用了另一个类似的问题(也已经链接到这里)。
Would you say more about why you want to use vimdiff for this?
For instance, do you want to visualize per-character differences in a (unified) diff file?. If so, someone answered my question about same with a suggestion to basically just fire up emacs on the diff and hit
ALT-n
to cycle through hunks, nicely highlighting per-word or per-characters changes along the way (similar to vimdiff). It works well, but it's a bummer to fire up emacs just to do this. I only know enough emacs to do that then exit without mucking up the patch. :)Anyway, the emacs answer gave me some ideas. I'm sure Vim can be cajoled into providing better highlighting for diff files, maybe something more like ediff. I looked into this a while back, and someone on the vim user list had the excellent suggestion to incorporate google-diff-match-patch. The Python interface could be used from a Python Vim ftplugin, for instance.
Sorry about using an "answer" to reply when this may not be a great answer, the formatting for "add comment" was too limited for what I wanted to say.
For posterity, here's a reference to another similar question (which already links here as well).