Если я попытаюсь открыть файл с помощью less
, его содержимое начнется с позиции курсора, а не с верхней части экрана.
.
Это происходит только в gnome-terminal, например в Terminator все ок. Как это исправить?
решение1
Как сказал egmont, less
должно быть возможно позиционировать курсор, и действительно есть способ сделать это. Согласно less
man-странице:
Параметры также берутся из переменной окружения "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
.