正如标题所示,1000行对于使用diff来说有点太多了,所以vimdiff是最好的选择。我的第一个想法是,如果vimdiff提供这个函数作为内置函数。如果没有,一个简单的方法是将vimdiff和head组合起来,作为一个单行程序,而不创建两个缓冲文件。
vimdiff
head
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 …),它会出现在第一行。要给状态行分配自定义名称,以便它们显示在标尺上,你可以这样启动它:
gvimdiff
/proc/123456/fd/11
/proc/123456/fd/12
vimdiff -c 'windo set syn=bash' <(head …) <(head …)
<(echo "file1.txt"; head …)
$ vimdiff -c "windo setlocal statusline=$file1" <(head -n 1000 "$file1") \ +"setlocal statusline=$file2" <(head -n 1000 "$file2")
...但请注意,文件名中的空格在状态行中不起作用(它们必须转义而不是用引号括起来)。
1条答案
按热度按时间wlwcrazw1#
假设您正在运行bash,则可以将其作为
(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 …)
,它会出现在第一行。要给状态行分配自定义名称,以便它们显示在标尺上,你可以这样启动它:...但请注意,文件名中的空格在状态行中不起作用(它们必须转义而不是用引号括起来)。