То, что вы спрашиваете, это терминал бесконечной ширины, часть которого отображается. Дело не в том, как традиционно работают терминалы, и как приложения ожидают их работы.
Например, если терминал имеет бесконечную ширину, как должны работать визуальные приложения, когда они хотят что-то отобразить в середине экрана?
Что-то подходящее, что вы можете сделать, это использовать 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основанное выше решение в том смысле, что его запись terminfo утверждает, что не выполняет перенос строки, поэтому приложения знают об этом, и BS в начале строки не перемещается в конец предыдущей строки.
lsиmceditпрекрасно работают в нем, потому что ширина экрана и буфера ширина обрабатываются отдельно.