Используя scrollwheel на экране GNU

246
задан mivk 20 August 2019 в 04:32
поделиться

3 ответа

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
340
ответ дан 23 November 2019 в 03:04
поделиться

На экране необходимо сначала перейти "scrollback к режиму" (или "режиму копии"), чтобы быть в состоянии прокрутить вокруг в буфере scrollback: ключевая комбинация Ctrl - Esc или Ctrl - Ctrl - [. Тогда можно прокрутить вокруг использования истории Вверх и вниз по ключам (или Ctrl - b , Ctrl - f для перемещения страницы).

В том режиме, Ваш mousewheel должен также работать, если это работает в других приложениях. Вы заканчиваете "scrollback режим" Esc .

Что касается прокрутки scrollback буферизуют без первого ввода scrollback режим, который, вероятно, не возможен, не изменяя экран. Я никогда не слышал о способе получить доступ к буферу scrollback кроме scrollback режима.

68
ответ дан sleske 23 November 2019 в 03:04
поделиться

Отличная статья, на которую ссылается 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
24
ответ дан 23 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: