Терминал Gnome, `less` открывает файл в позиции курсора, а не в верхней части терминала

Терминал Gnome, `less` открывает файл в позиции курсора, а не в верхней части терминала

Если я попытаюсь открыть файл с помощью less, его содержимое начнется с позиции курсора, а не с верхней части экрана.

Скриншот.

Это происходит только в gnome-terminal, например в Terminator все ок. Как это исправить?

решение1

Как сказал egmont, lessдолжно быть возможно позиционировать курсор, и действительно есть способ сделать это. Согласно lessman-странице:

Параметры также берутся из переменной окружения "LESS". Например, чтобы избежать ввода "less -options ..." каждый раз при вызове less, вы можете указать csh:

setenv МЕНЬШЕ "-опции"

или если вы используете sh:

LESS="-options"; экспорт LESS

Итак, чтобы lessперерисовать экран с курсором, расположенным сверху, выполните:

echo   'LESS="-c"; export LESS' >> ~/.bashrc

-cопция, которая означает «очистить экран», будет lessавтоматически добавлена ​​к каждому и будет работать даже в TTY, очищая экран и изменяя положение курсора

решение2

gnome-terminalи terminatorоба полагаются на vteвиджет для эмуляции терминала, хотя terminatorиспользует древний (на основе gtk2). Точнее, terminatorиспользует vteверсию 0.28.2 (как в Ubuntu 14.04, так и в 16.06), тогда как gnome-terminalиспользует vteверсию 0.34.9 в Ubuntu 14.04 и 0.42.5 в Ubuntu 16.04.

Как и в случае с большинством программного обеспечения, новые версии должны быть более стабильными, многофункциональными и содержать меньше ошибок (хотя время от времени могут появляться новые ошибки, регрессии, изменения, которые не нравятся пользователям, и т. д.). vteЗа последние 3 года было внесено огромное количество изменений (исправлений), включая это.

vteстремится использовать xtermв качестве эталона для поведения эмуляции (если только не видит веской причины для отклонения, что случается очень редко). В этом случае мы не увидели причины для отклонения (и, вероятно, у нас был действительный отчет об ошибке о том, что он vteне работает так, как ожидалось, относительно позиции курсора при переключении на альтернативный экран), поэтому мы исправили vteего так, чтобы он вел себя как xterm.

Другими словами, Ubuntu 14.04 gnome-terminal, а также 14.04 и 16.04 terminatorбыли сломаны, если предположить, что правильное поведение определяется xterm. terminatorзначительно отстает от vteверсии и получит это исправление (наряду со многими другими), когда они наконец выпустят версию на основе gtk3.

Я понимаю, что вам не нравится новое поведение less(на самом деле мне оно тоже не нравится, и я предпочитаю способ, которым оно случайно работало со старым vte), однако, было бы абсолютно неправильным подходом намеренно ломать vte, чтобы добиться предыдущего поведения. Вместо этого lessследует иметь возможность размещать курсор в верхней части экрана. Если текущее поведение вас действительно беспокоит, я рекомендую вам отправить отчет об ошибке / запрос на функцию против less.

Связанный контент