如何从命令行在 Kompare 中打开本地文件进行差异比较?

如何从命令行在 Kompare 中打开本地文件进行差异比较?

当我使用meld获取视觉差异时,我仅可以从命令行运行它:

$ meld file1.txt file2.txt

...并meld启动,在单独的子窗口中加载每个文件,并并排显示差异。

我正在尝试对 Kompare 做同样的事情:

$ kompare file1.txt file2.txt

...但我收到错误:“ Could not parse diff output.”。以下情况也出现同样的错误:

$ kompare -c file1.txt file2.txt
$ kompare -c file:///path/to/file1.txt file:///path/to/file2.txt

我也尝试过:

$ diff file1.txt file2.txt | kompare -o - 

... 这不会引发错误 - 但它显示源/目标文件夹为“ unknown”(否则,其他所有内容均为空白)?!

 

我是否可以按照自己的意愿使用 Kompare?如果可以,命令行应该如何格式化?

非常感谢您的任何回答,
干杯!

 

编辑:有大量与此相关的错误,结果是:

... 我猜可能是其中任何一个。

 

编辑2:我想越来越接近了;因为这是在 OpenSuse 11.2 上,

> kompare --version
Qt: 4.5.3
KDE: 4.3.1 (KDE 4.3.1) "release 6"
Kompare: 4.0.0
> diff --version
diff (GNU diffutils) 2.8.7-cvs

...我尝试在系统中寻找一些补丁:

> find / -xdev -name "*.patch" 2>/dev/null
...
/etc/YaST2/policy.patch
/etc/YaST2/liveinstall.patch

...因此我尝试查看以下其中一个:

kompare -o /etc/YaST2/policy.patch

...并且那个至少打开并显示了一些差异kompare,所以至少有一个参考差异文件可以进行比较......

答案1

尝试

$ kompare -c file1.txt file2.txt

管道命令不起作用的原因是,由于历史原因,diff它不会生成我们大多数人习惯的带有上下文和+和的补丁格式-。您必须使用diff -u才能获得此信息:

$ diff -u file1.txt file2.txt | kompare -o -

答案2

我想我明白了......

我的问题是我想区分 VHDL 文件;在 VHDL 中,注释是两个减号;所以说我在文件中有这样的注释file1.vhd

...
-- my comment A
...

我把它替换成了file2.vhd

...
-- my comment B
...

因此,现在如果我对这两个文件运行统一差异,我会得到类似的结果:

--- path/to/file1.vhd   2011-11-09 11:15:46.800513032 +0000
+++ path/to/file2.vhd   2011-11-09 12:17:35.764027670 +0000
@@ -1,5 +1,5 @@
 ...
--- my comment A
+-- my comment B
 -- ...
 -- ...
 --

 

注意到了吗?-来自(意思是“删除此行”)的,与(原始内容:文件中的注释)diff合并-以创建文件的标识符(参见上面代码片段中的第一行)!--.vhd---diff

 

因此,由于 Kompare 不会直接“打开”文件,即使通过 GUI 也是如此 - 即使您指定了两个文件,Kompare 也会首先通过 diff 运行它们,然后尝试解析该 diff - 显然,首先通过查找+++---识别参与文件;这会导致“VHDL 注释行”被错误解释。为了说明这一点,我只需在 diff 文件中插入一个空格:

- -- my comment A

...然后它可以在 Kompare 中加载。

好吧,这显然意味着我现在必须缩进全部我的 *.vhd 文件,使它们与diff->Kompare管道兼容......

相关内容