Горизонтальна прокрутка в терміналі


12

Тож, я вважаю, вже два питання з цього приводу. Усі вони мають відношення, tail -fа значить, люди дають дотичну відповідь "використовуйте менше".

Мені це потрібно для всього, кожної команди і т. Д. Проблема в тому, що мені потрібно запустити багато консольних вікон і навіть за допомогою декількох моніторів все ще потрібно зменшити їх. Як наслідок, майже кожен вихід вибивається обертанням рядків і незручно читати.

Одне із запропонованих рішень - це echo -ne '\e[?7l', яке працює. Проблема зараз, чи є спосіб отримати смуги прокрутки на консолі?

Ubuntu 12.10, термінал


Як приклад (у відповідь на всі коментарі "це не так, як працюють термінали"!) Я зазначу, що консоль Ubuntu для Windows підтримує цю функцію. Такі програми, як, lsі mceditв ньому добре працюють, оскільки ширина екрана та ширина буфера обробляються окремо.
cz

Відповіді:


10

Що ви запитуєте - це термінал нескінченної ширини, частина якого відображається. Це не те, як традиційно працюють термінали, а не в тому, як програми очікують їх роботи.

Наприклад, якщо термінал має нескінченну ширину, як мають працювати візуальні додатки, коли вони хочуть щось відобразити посередині екрана?

Щось наближається, що ви можете зробити, хоча використовувати GNU screen(ви повинні мати змогу приєднати сеанс на екрані з кількох терміналів різного розміру, щоб екран знав, як відобразити невелике вікно більшого терміналу) і встановити screenширину вікон на щось дуже великі, а потім наводять візуальні програми на думку, що ширина екрана є оригінальною.

Як (у межах screen)

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

Деякі візуальні програми будуть працювати добре, деякі не так добре (для встановлення, коли вони роблять відносне позиціонування або коли вони покладаються на обгортку терміналу). vimздається, працює добре.

Потім для прокрутки і копіювати вставити дані, єдиним варіантом є використання screen«s копіювати режим. ( <prefix>]) і переміщатися по курсору (див. info -f screen -n Movementпересування в режимі копіювання ).

tmux можуть мати подібні можливості.

Цей terminatorтермінальний емулятор (на базі java), який не є тим, terminatorщо поставляється з ubuntu, також робить це лише з нескінченною шириною терміналу:

  • лінії ніколи не загортаються
  • візуальним програмам повідомляється, що ширина екрана не залежатиме від вікна, а не нескінченність.
  • це також буде працювати краще, ніж screenбазоване вище рішення, оскільки його запис терміна вказує, що він не робить обертання рядків, тому програми знають про це, і BS на початку рядка не рухається до кінця попереднього рядка.

Я вже в середовищі gui, тому якщо я хочу відкрити файл у візуальному редакторі, я можу просто запустити gui з терміналу. Копіювати в них простіше, то це все-таки в терміналі, оскільки ви не можете дуже просто просто перетягнути вибраний блок у терміналі, з його відсіканням. Працює screen -X width -w 1000прибуток No screen session found., якісь ідеї?
srcspider

@srcspider Як я вже говорив, вам потрібно зробити це всередині screen. Почніть screenспочатку.
Стефан Шазелас

гаразд, я думаю, що я тебе зараз отримую, в основному я повинен бігтиscreen -X width -w 1000 <mycommand>
srcspider

1
@srcspider. № screen- термінальний емулятор терміналу. Тож вам потрібно запустити його спочатку так, як потрібно було би почати xtermабо gnome-terminalспочатку, запустивши screenкоманду. Потім, всередині цього нового емулятора терміналу, ви запускаєте цю screen -Xкоманду, щоб сказати screenзмінити ширину вікна. Дивіться також мою відредаговану відповідь на terminatorемулятор, який, мабуть, вам подобається.
Стефан Шазелас

Дякую! Навіть якщо я якось не змушую їх працювати, принаймні зараз я знаю, чому я не можу змусити їх працювати так.
srcspider

6

Хоча Emacs є головним редактором та IDE¹, це, як правило, дуже добре відповідає вашій проблемі. Ви можете запустити програму всередині вікна Emacs, і Emacs відобразить її у тупому терміналі нескінченної ширини та висоти. Якщо курсор знаходиться в кінці буфера, вікно прокручується, коли програма виробляє вихід; якщо перемістити курсор навколо, вікно залишатиметься поміщеним у міру зростання виходу.

Введіть M-x shell RET(тобто Alt+ x shell Return), щоб запустити оболонку в буфер Emacs. Введіть C-u M-x shell RETабо M-1 M-x shell RETдля запуску іншої оболонки. Ви можете запустити програму в кожній оболонці і розташувати буфери в декількох вікнах за вашим бажанням.

Sometimes Іноді говорять про кращу ОС, ніж редактор, але лише люди, які її не використовують - це лише жарт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.