使diff在并排模式下使用完整端子宽度


40

大多数应用程序都很聪明地使用了终端可用的全部宽度。我的外壳程序有屏幕,vim等。但是,diff在并排模式(-y)中则没有。这激怒了我。它使用126个字符的宽度,这甚至不是我的270块宽度终端的一半。

浏览手册页并没有发现有关自动调整宽度的任何细节,仅通过手动指定宽度-W

是否可能有一项“隐藏功能” diff允许它自动扩展到终端的整个宽度?要么; -W <terminalsize>每当我运行diff命令时,最简单的方法是什么?

我假设自动将-W附加到所有内容不会有什么坏处,因为它只会意味着“使用$ x列”,这始终是我想要的,无论我处于并排模式,否则。

Answers:


51
$ alias diff='diff -W $(( $(tput cols) - 2 ))'

应该这样做。您也希望将其添加到〜/ .bashrc中。

- 2主要是偏执,在一些情况下扩展足以使换行(嵌入的双宽度的Unicode); 如果需要,您可以使用

$ alias diff='diff -W $(tput cols)'

我开始注意到$ COLUMNS,并在沿着相同的思路思考。别名diff =“ diff -W $ {COLUMNS}”。我想我宁愿问外壳而不是依赖环境。
VxJasonxV 2011年

1
tput使用具有有意义值的第一个来考虑$COLUMNSstty -a和终端描述。 eval $(resize)可以用来迫使它们与终端认为的大小同步。
geekosaur 2011年

请注意,如果您使用非标准的制表符(例如tabs 2,.bashrc中的制表符),则还需要使用-t标志,否则diff会产生非常奇怪的输出
Jeff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.