В настоящее время экран GNU будет ошибаться определенными нажатиями клавиш, например CTRL, нажатым в сочетании с клавишами со стрелками, так что, например, в режиме вставки vim CTRL-PGUp будет прописными буквами следующее / текущее слово (или что-то в этом роде). Я бы хотел, чтобы он работал в значительной степени прозрачно, чтобы функциональность была такой же, как когда он не запущен (за очевидным исключением управляющих последовательностей CTRL-a) ... возможно ли это?
Кроме того - и я подозреваю, что это более или менее отдельная проблема - я бы хотел, чтобы колесо прокрутки возвращалось в журнал сеанса, а не циклически просматривал историю, как сейчас. Выполнимо? Или, возможно, он может быть настроен на эмуляцию гораздо большего размера экрана, чтобы приложение терминала, под которым оно работает, могло сохранять этот текст в своем журнале сеанса. в любом случае цель состояла бы в том, чтобы иметь возможность использовать колесо мыши и / или сдвигать стрелку вверх для прокрутки назад в журнале сеанса.
Вы можете изменить нажатия клавиш по умолчанию на экране, но вы столкнетесь с такими же проблемами, только с другими нажатиями клавиш. Бёбу упрощает настройку основных нажатий клавиш для экрана. В byobu также активируется циклическое возвращение в журнал сеанса с помощью колесика мыши, поэтому вы можете либо использовать его, либо посмотреть, как он установлен в /usr/share/byobu/profiles/common
.
Для колеса прокрутки вы хотите, чтобы это было в вашем ~/.screenrc
:
# scrollback by inhibiting switching to terminal emulator's alternate screen
termcapinfo xterm*|rxvt*|kterm*|Eterm*|putty ti@:te@
# then turn on alternate windows within screen
altscreen on
Что касается клавиш курсора, это зависит от того, насколько точна эмуляция вашего терминала для заявленного типа терминала в окне, в котором вы вызываете экран, чтобы он мог правильно выполнить свое отображение. Многие эмуляторы терминала утверждают, что через $TERM
, чтобы быть "xterm". Но это не так, и они недостаточно имитируют xterm, чтобы справедливо заявить об этом. Часто переходя к заявлению о чем-то вроде vt220
этого было достаточно, чтобы улучшить ситуацию, но я не припоминаю ситуацию с экраном - я просто использую сам xterm. Существуют различные тесты на пытки, которые вы можете запустить, чтобы увидеть, насколько плохо ваш эмулятор терминала притворяется xterm, когда это не так.
Чтобы исправить ситуацию постфактум, используйте bindkey
экранная команда. Это задокументировано на экране (1), и если вы используете ^ A: (или что-то еще, на что вы указали escape-последовательность экрана, если не ^ A (я использую ^])), вы можете ввести ^A:bindkey -d
чтобы увидеть текущую карту.
Не идеально, но вы можете поместить это в свой .vimrc
как немедленное исправление:
nmap <ESC>[5;5~ <C-PageUp>
nmap <ESC>[6;5~ <C-PageDown>
Источник из этого отчет об ошибке.
В качестве альтернативы вы можете сказать vim
чтобы изменить распознавание PgUp / PgDn:
set t_kN=<ESC>[6;*~
set t_kP=<ESC>[5;*~
Первое в некотором смысле лучше, потому что это означает, что ваш PgUp / PgDn все еще работает вне screen
.