I believe you can just add a line like this to your ~/.screenrc
:
termcapinfo xterm* ti@:te@
Where "xterm*" is a glob match of your current TERM. To confirm it works, ^A^D to detach from your screen, then screen -d -r
to reattach, then ls
a few times, and try to scroll back. It works for me.
What is this magic? Well, let's consult the manual pages.
screen(1)
says:
termcapinfo term terminal-tweaks [window-tweaks]
[..]
The first argument specifies which terminal(s) should be affected by this
definition. You can specify multiple terminal names by separating them with
`|'s. Use `*' to match all terminals and `vt*' to match all terminals that
begin with "vt".
[..]
Some examples:
termcap xterm* LP:hs@
Informs screen that all terminals that begin with `xterm' have firm
auto-margins that allow the last position on the screen to be updated (LP),
but they don't really have a status line (no 'hs' - append `@' to turn
entries off). Note that we assume `LP' for all terminal names that start
with "vt", but only if you don't specify a termcap command for that terminal.
From termcap(5)
:
String capabilities
[..]
te End program that uses cursor motion
ti Begin program that uses cursor motion
На экране необходимо сначала перейти "scrollback к режиму" (или "режиму копии"), чтобы быть в состоянии прокрутить вокруг в буфере scrollback: ключевая комбинация Ctrl - Esc или Ctrl - Ctrl - [. Тогда можно прокрутить вокруг использования истории Вверх и вниз по ключам (или Ctrl - b , Ctrl - f для перемещения страницы).
В том режиме, Ваш mousewheel должен также работать, если это работает в других приложениях. Вы заканчиваете "scrollback режим" Esc .
Что касается прокрутки scrollback буферизуют без первого ввода scrollback режим, который, вероятно, не возможен, не изменяя экран. Я никогда не слышал о способе получить доступ к буферу scrollback кроме scrollback режима.
Отличная статья, на которую ссылается Jon Z, больше недоступна, но я смог выловить ее текстовую версию из кэша Google. Я сохраняю ее здесь на случай, если в будущем Google откажется и от этой версии. Оригинальное сообщение было написано Микаэлем Столдалом (Mikael Ståldal), так что отдавайте должное.
--
Как использовать колесо мыши в GNU Screen
В GNU Screen есть поддержка прокрутки назад, но по умолчанию для этого нужно использовать неудобные клавиши. Я хотел бы иметь возможность использовать Shift-PageUp, Shift-PageDown и колесо мыши для прокрутки, как в xterm.
Настроить Screen для этого оказалось непросто, и это предполагает сотрудничество с эмулятором терминала. Но в конце концов мне удалось добиться решения, которое работает довольно хорошо. Добавьте это в ваш файл ~/.Xresources (вам нужно выйти из системы, чтобы это вступило в силу):
XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
@Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
<Btn4Down>: string(0x1b) string("[5S") \n\
Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
@Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
<Btn5Down>: string(0x1b) string("[5T") \n\
Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
Shift <KeyPress> Next: string(0x1b) string("[25T") \n
Затем добавьте это в ваш файл ~/.screenrc:
defscrollback 1000
# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025
# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004
# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025
# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004
Это работает в xterm. Я не уверен, что это работает в других эмуляторах терминала.
Обратите внимание, что это отключает нормальную поддержку прокрутки в xterm, вы сможете прокручивать только при использовании Screen. Возможно, вы захотите запустить xterm так, чтобы всегда использовать Screen:
xterm -e screen