我一直希望能够获得一个相当优雅的方式让vimdiff使用CVS控制文件.我在互联网上找到了许多(有点hacky)脚本(这里最好的例子)基本上将你正在编辑的文件从CVS检出到临时文件,并vimdiff这两个.这些都没有考虑到分支,并且总是假设你在MAIN工作,这对我来说完全没用.
所以,我的问题是这样的:有没有人在那里找到一个不错的解决方案比这个脚本更多?
或者失败了,是否有人对他们如何实现这一点有任何想法,或者建议您认为哪些功能对于这样做至关重要?我的意图是,如果没有人可以建议已经构建的解决方案来使用或构建,我们从这里开始构建一个.
我通过添加以下行来设置'vimdiff'作为我的默认svn-diff工具 ~/.subversion/config
diff-cmd = /home/ravikirn/svndiff/diffwrap.sh
Run Code Online (Sandbox Code Playgroud)
diffwrap.sh
!/bin/sh
# Configure your favorite diff program here.
DIFF="/usr/local/bin/vimdiff"
# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}
# Call the diff command (change the following line to make sense for
# your merge program).
$DIFF $LEFT $RIGHT
Run Code Online (Sandbox Code Playgroud)
但是,vimdiff将所有难看的颜色都显示出来.我有黑色背景和绿色字体颜色,如何修改vimdiff以显示此差异的自定义颜色?我想要一个更愉快的经历.
美好的一天,
我正在BASHRC文件中编写一个简单的脚本,以容纳在上一个问题中无法完全解决的问题:
我基本上会生成所有具有“已修改” SVN状态的文件的列表。对于这些文件,我想创建一个并排的视觉差异,将其转换为HTML,然后将其附加到运行的HTML文件中。
例如:
MODIFIED_FILES="$(svn status | grep "^M" | cut -c9-)"
for i in ${MODIFIED_FILES}; do
# Generate a side-by-side diff in vim via VIMDIFF
# Convert via ToHTML
# Append the HTML file to a file called "overall_diff.html"
done
Run Code Online (Sandbox Code Playgroud)
通过创建文件的干净副本并拥有修改后的文件的副本,我可以轻松完成vimdiff。
vimdiff 首先有一个问题,即:
2 files to edit
Error detected while processing /Users/Owner/.vimrc:
line 45:
E474: Invalid argument: listchars=tab:>-,trail:.,extends:>,precedes:«
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
因此,我试图超越这一点,这样就不必ENTER为列表中的每个文件命中目标。
接下来,我需要vimdiff调用ToHTML命令,然后发出命令以将HTML缓冲区附加到正在运行的文件中:
:'<,'>w! >>overall_diff.html
Run Code Online (Sandbox Code Playgroud)
简而言之,我该如何:
我无法vimdiff在Windows 10计算机上工作。我正在Powershell中运行vim。Powershell也被声明$myvimrc为我的选择外壳:
set shell=C:\WINDOWS\system32\WindowsPowershell\v1.0\powershell.exe
Run Code Online (Sandbox Code Playgroud)
我尝试比较的文档未保存为文件。我打开两个垂直拆分,在每个拆分中输入文本,然后运行:windo diffthis。输出为E97: Cannot create diffs。
本文说我可能需要下载并使用不同于diff.exegvim所安装的软件。我已经下载了推荐的“ GnuWin32 diff”软件包,并将安装目录添加到了Windows路径($env:path)。继续遵循这些指示,我注释掉了默认diffexpr声明,但仍然得到E97。
我也曾尝试调用自己的函数无济于事。在此尝试中,我确保转义了反斜杠,并且还将下载diff.exe的文件复制到了我确信自己具有全部权限的目录中。为了帮助进行故障排除,我暂时保存了我想比较的两个文件,并显式指定了它们的完整路径,而不是使用vim v:fname_in和和v:fname_new(和v:fname_out)。
set diffexpr=TestDiff()
function TestDiff()
silent execute "!& " . "C:\\diff.exe" . " -a --binary " "C:\\a.edi" . " " . "C:\\b.edi" . " > " . "C:\\tmp.txt"
endfunction
Run Code Online (Sandbox Code Playgroud)
我通过运行来研究此错误,该错误:h E97返回以下信息:
如果diff输出看起来没问题,Vim会进行测试。如果没有,您将收到一条错误消息。可能的原因:
- 无法执行“ diff”程序。
- “ diff”程序不会产生普通的“ ed”风格的差异(请参见上文)。
- 'shell'和相关选项设置不正确。尝试使用“:!sort”之类的命令进行过滤。
- 您正在使用“ diffexpr”,它不起作用。如果不清楚是什么问题,请将“详细”选项设置为一个或多个,以查看更多消息。
自安装的MS-Windows Vim包含一个diff程序。如果没有,您可能需要下载diff.exe。例如,来自http://gnuwin32.sourceforge.net/packages/diffutils.htm …
vimdiff显示两个或多个相同文件之间的差异.是否可以看到两对文件的差异.例如,当在.H文件和.C文件中查看差异时,可以方便地来回查看差异.一种方法是old.C new.C old.H new.H使用vim 打开然后拆分它们并:diffthis在每个缓冲区中运行.有没有更好的办法?
我正在从我的基本命令行程序分析来自二进制数据转储的十六进制数据.我基本上将结构的确切内容(实际上是一大堆结构)转储到文本文件中.
然后,我创建第二个二进制转储,并在比较两个文件vim使用xxd创建原始数据的二进制到文本表示.
两个文件都是完全相同的字节大小,我试图以有意义的方式比较这两个文件.在转储文件之前,即使数据发生微小变化,也会导致文件其他部分发生较大变化,因为其他部分包含散列,基于我更改的值的函数等等.
是否有可能告诉diff或者vimdiff说,比较两个文件,并只向我显示原始文件中的文件部分(即:文件1)设置的值1,在第二个文件中,该值设置为32?
谢谢!
当我运行时,vimdiff我得到一个非常糟糕的语法突出显示(不可读):

在MacVim上运行有点好,但仍然很糟糕.
这是因为我的配色方案(目前正在使用明天之夜)吗?
如果是这样,有没有办法修改vimdiff主题外部使用的颜色,或者可能安装另一个ftplugin支持这个更好的颜色(不确定这个set filetype显示vim而不是diff或类似)?
我喜欢使用vim和vimdiff.我目前正在比较vimdiff中的两个文件,我经常遇到我想在两个缓冲区中删除相同行的情况.在以下示例中,我想删除第40和41行.
39 text_a | 39 text_b
40 text_aa | 40 text_aa
41 text_bb | 41 text_bb
42 text_c | 42 text_d
Run Code Online (Sandbox Code Playgroud)
执行dd Ctrl-W-W,dd Ctrl-W-W删除当前窗口中的行,跳转到另一个窗口,删除那里的行并跳回我的原始窗口感觉很繁琐.
有谁知道这个的捷径?
因此,我是使用vimdiff的新手,但是我感觉有些错误。每当我尝试使用以下命令从远程存储库中选择更改时:
:diffg RE
Run Code Online (Sandbox Code Playgroud)
我得到错误:
E93: More than one match for RE
Run Code Online (Sandbox Code Playgroud)
不知道这来自哪里或如何解决。我很惊讶堆栈溢出似乎没有在任何地方发布此问题。在此先感谢任何可以提供帮助的人:)
与 进行比较时,我将其用作vimdiff工具git difftool。
我想将 2 次提交与git difftool <commit1> <commit2>. 今天,我必须退出每个 vimdiff 视图:qa才能进入下一个文件对。有时,这种类型的比较的文件对列表可能会很大。然后,我必须输入:qa数十次(或:cq完成后)。
有没有办法在 或类似的东西中显示所有比较的文件对(至少有 1 个更改QuickFix)Location List?
然后,必须更容易获得概述并滚动所有更改并仅显示所选文件的差异。
我的摘录.gitconfig:
[diff]
tool = vimdiff
[difftool]
prompt = false
# Be able to abort all diffs with `:cq` or `:cquit`
trustExitCode = true
Run Code Online (Sandbox Code Playgroud)
vimdiff --version:
[diff]
tool = vimdiff
[difftool]
prompt = false
# Be able to abort all diffs with `:cq` or …Run Code Online (Sandbox Code Playgroud)