サイドバイサイドモードでdiffが全端子幅を使用するようにする


40

ほとんどのアプリケーションは、利用可能な端末の全幅を使用することに優れています。私のシェルはscreen、vimなどを実行します。ただし、diffサイドバイサイドモード(-y)では実行しません。これは私を怒らせます。126文字幅を使用しますが、これは270ブロック幅の端末の半分でもありません。

マニュアルページを調べても、幅を自動的に調整することに関する特別なことは明らかにせず、を介して手動で指定するだけ-Wです。

おそらくdiff、ターミナルの幅全体に自動的に拡張できるようにするための「隠し機能」がありますか?または; -W <terminalsize>diffコマンドを実行するたびに自動的に挿入する最も簡単な方法は何ですか?

-Wをすべてに自動的に追加しても何も害はないという仮定の下にあります。これは、「$ x列を使用する」ことを意味するためです。もしくはそうでないか。

回答:


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

それをするべきです。〜/ .bashrcにも追加したいと思うでしょう。

これ- 2は主にパラノイアです。何か(埋め込まれた倍幅のユニコード?)が行を折り返すのに十分に拡張する場合です。必要に応じて、使用することができます

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

私は$ COLUMNSに気付き始め、同じ方向に沿って何かを考えていました。エイリアスdiff = "diff -W $ {COLUMNS}"。私は環境に頼るよりもシェルに尋ねることを好むと思います。
VxJasonxV

1
tput、、および端末の説明を考慮し$COLUMNSstty -a意味のある値を持つ最初のものを使用します。 eval $(resize)端末がそのサイズであると考えるものと強制的に同期させるために使用できます。
ギーコサウルス

あなたが(例えば、非標準のタブストップしている場合ことに注意してくださいtabs 2あなたの.bashrcの中を)あなたも-tフラグやdiffを使用する必要がありますが、非常に奇妙な出力を生成します
ジェフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.