如何使用vimdiff比较两个非常大的文件(比如a.txt和b.txt)的前1000行

ss2ws0br  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(419)

正如标题所示,1000行对于使用diff来说有点太多了,所以vimdiff是最好的选择。我的第一个想法是,如果vimdiff提供这个函数作为内置函数。如果没有,一个简单的方法是将vimdiffhead组合起来,作为一个单行程序,而不创建两个缓冲文件。

wlwcrazw

wlwcrazw1#

假设您正在运行bash,则可以将其作为

$ vimdiff <(head -n 1000 "file1.txt") <(head -n 1000 "file2.txt")

(or gvimdiff)。这使用bash进程替换来获取保存这些head命令的输出的临时命名管道,并在vimdiff中比较它们。
在我的Linux系统上,它们看起来像/proc/123456/fd/11/proc/123456/fd/12(其中123456是父bash shell的进程ID)。请记住,最左边的是第一个,最右边的是最后一个-我这么说是因为您还可以放入第三个)。考虑使用vimdiff -c 'windo set syn=bash' <(head …) <(head …)这样的命令,例如,将它们都设置为使用bash格式进行突出显示。
如果你想要更好的标签,你可以在其中插入一个echo,比如<(echo "file1.txt"; head …),它会出现在第一行。要给状态行分配自定义名称,以便它们显示在标尺上,你可以这样启动它:

$ vimdiff -c "windo setlocal statusline=$file1" <(head -n 1000 "$file1") \
                  +"setlocal statusline=$file2" <(head -n 1000 "$file2")

...但请注意,文件名中的空格在状态行中不起作用(它们必须转义而不是用引号括起来)。

相关问题