Зробити різницю Використовуйте повну ширину клеми в режимі «бік-о-бок»


40

Більшість додатків розумно використовувати повну ширину доступного для них терміналу. Моя оболонка робить, екран, vim тощо. Однак diffу режимі «бік» ( -y), це не так. Це мене злить. Він використовує ширину 126 символів, що не становить навіть половини мого терміналу шириною блоку 270.

Переглядаючи сторінку чоловіка, не виявляє нічого конкретного щодо автоматичного регулювання ширини, лише вручну вказуючи її через -W.

Чи може бути "прихована функція" diffдозволити їй автоматично розширюватися на повну ширину терміналу? Або; Який найпростіший шлях до автоматичного вставлення -W <terminalsize>в свою команду diff, коли я її виконую?

Я припускаю, що автоматично додавання -W до всього нічого не могло завдати шкоди, оскільки це колись означатиме "використовувати $ x стовпці", що завжди те, що я хочу, чи перебуваю в режимі "бік", або іншим чином.

Відповіді:


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

повинен це зробити. Ви також хочете додати його до ~ / .bashrc.

В - 2основному параноїя, якщо щось (вбудований Unicode подвійної ширини?) Розшириться достатньо, щоб обернути лінію; якщо хочете, ви можете просто використовувати

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

Я почав помічати $ COLUMNS і думав щось у тому ж руслі. псевдонім diff = "diff -W $ {COLUMNS}". Я думаю, я вважаю за краще попросити снаряд, а не покладатися на навколишнє середовище.
VxJasonxV

1
tputвважає $COLUMNS, stty -aі опис терміналу, використовуючи перше з тих , що має значиму величину. eval $(resize)можна використовувати, щоб змусити їх синхронізуватися з тим, що термінал вважає його розміром.
geekosaur

зверніть увагу , що якщо у вас є нестандартний символ табуляція (наприклад , tabs 2в вашому .bashrc) , ви також повинні використовувати прапор -t або диф буде виробляти дуже дивний висновок
Джефф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.