Vergleichen Verwenden Sie die volle Klemmenbreite im Side-by-Side-Modus


40

Die meisten Anwendungen nutzen die volle Breite des Terminals, das ihnen zur Verfügung steht. Meine Shell funktioniert, Bildschirm, vim, etc. Im diffSide-by-Side-Modus ( -y) jedoch nicht. Das ärgert mich. Es verwendet eine Breite von 126 Zeichen, was nicht einmal der Hälfte meines Terminals mit 270 Blockbreiten entspricht.

Ein Blick in die Manpage verrät nichts Besonderes über das automatische Anpassen der Breite, sondern nur das manuelle Festlegen über -W.

Gibt es vielleicht eine "versteckte Funktion" diff, mit der es automatisch auf die volle Breite des Terminals erweitert werden kann? Oder; Was ist der einfachste Weg, um automatisch -W <terminalsize>in meinen diff-Befehl einzufügen, wenn ich ihn starte?

Ich gehe davon aus, dass das automatische Anhängen von -W an alles nichts anhaben kann, da es immer nur bedeutet, dass $ x Spalten verwendet werden. Dies ist immer das, was ich möchte, unabhängig davon, ob ich mich im Side-by-Side-Modus befinde. oder andernfalls.

Antworten:


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

sollte es tun. Sie sollten es auch zu ~ / .bashrc hinzufügen.

Das - 2ist vor allem Paranoia, falls etwas erweitert genug , um den Zeilenumbruch zu machen (eingebetteten doppelte Breite Unicode?); Wenn Sie möchten, können Sie einfach verwenden

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

Ich bemerkte $ COLUMNS und dachte etwas in die gleiche Richtung. alias diff = "diff -W $ {COLUMNS}". Ich denke, ich würde lieber die Shell fragen, als mich auf die Umgebung zu verlassen.
VxJasonxV

1
tputberücksichtigt $COLUMNS, stty -aund die Terminalbeschreibung, wobei die erste von denen verwendet wird, die einen aussagekräftigen Wert haben. eval $(resize)kann verwendet werden, um zu erzwingen, dass sie mit der Größe des Terminals synchronisiert sind.
Geekosaurier

Beachten Sie, dass, wenn Sie nicht standardmäßige Tabstopps haben (z. B. tabs 2in Ihrem .bashrc), Sie auch das -t-Flag verwenden müssen oder diff eine sehr bizarre Ausgabe erzeugt
Jeff
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.