Buat berbeda Gunakan Lebar Terminal Penuh dalam Mode Berdampingan

40

Sebagian besar aplikasi pintar menggunakan lebar terminal yang tersedia untuk mereka. Shell saya tidak, layar, vim, dll. Namun, diffdalam mode berdampingan ( -y), tidak. Ini membuatku marah. Ia menggunakan lebar 126 karakter, yang bahkan tidak setengah dari terminal lebar 270 blok saya.

Melihat melalui halaman manual tidak mengungkapkan sesuatu yang khusus tentang menyesuaikan lebar secara otomatis, hanya secara manual menentukan melalui -W.

Apakah mungkin ada "fitur tersembunyi" diffuntuk memungkinkannya secara otomatis memperluas ke lebar penuh terminal? Atau; Apa jalan termudah untuk secara otomatis memasukkan -W <terminalsize>ke dalam perintah diff saya setiap kali saya menjalankannya?

Saya berada di bawah asumsi bahwa secara otomatis menambahkan -W ke segala sesuatu tidak ada salahnya, karena itu hanya akan berarti "menggunakan $ x kolom", yang selalu saya inginkan, apakah saya dalam mode berdampingan, atau sebaliknya.

VxJasonxV
sumber

Jawaban:

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

seharusnya melakukannya. Anda juga ingin menambahkannya ke ~ / .bashrc.

Ini - 2terutama paranoia, dalam hal sesuatu (tertanam Unicode lebar ganda?) Cukup berkembang untuk membuat garis bungkus; Jika Anda ingin, Anda bisa menggunakan

$ alias diff='diff -W $(tput cols)'
geekosaurus
sumber
Saya mulai memperhatikan $ COLUMNS dan memikirkan sesuatu dengan cara yang sama. alias diff = "diff -W $ {COLUMNS}". Saya pikir saya lebih suka meminta shell daripada mengandalkan lingkungan sekalipun.
VxJasonxV
1
tputmempertimbangkan $COLUMNS,, stty -adan deskripsi terminal, menggunakan yang pertama dari yang memiliki nilai bermakna. eval $(resize)dapat digunakan untuk memaksa mereka agar sinkron dengan apa yang menurut terminal ukurannya.
geekosaur
perhatikan bahwa jika Anda memiliki tabstop yang tidak standar (misalnya tabs 2di .bashrc), Anda juga harus menggunakan flag -t atau diff akan menghasilkan output yang sangat aneh
Jeff