我无法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.exe
gvim所安装的软件。我已经下载了推荐的“ 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 …
我正在使用 vim 编辑文档 - 其中摘录是:
--
aaa bbb
ccc ddd
eee fff
--
ggg hhh
iii jjj
kkk lll
--
Run Code Online (Sandbox Code Playgroud)
我想选择带有“--”和新行的(两行)行之后的所有行。在这个例子中,我想选择“aaa bbb”和“ggg hhh”。在正则表达式中是否可以进行行级“后视”?