Использование колеса прокрутки на экране GNU

Как настроить экран GNU, чтобы колесо прокрутки мыши могло прокручиваться в буфере прокрутки? Я пытался Google об этом, но большинство обращений касалось того, как разрешить приложениям на экране использовать колесо прокрутки.

Ответ 1

Я считаю, что вы можете просто добавить строку, подобную этой, в ~/.screenrc:

termcapinfo xterm* [email protected]:[email protected]

Где "xterm *" - это совпадение с glob вашего текущего TERM. Чтобы подтвердить, что это работает, ^ A ^ D, чтобы отсоединиться от вашего экрана, затем screen -d -r для повторного подключения, затем ls несколько раз и попробуйте прокрутить назад. Это работает для меня.


Что это за магия? Ну, позвольте прочесть страницы руководства.

screen(1) говорит:

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:[email protected]

  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.

От termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion

Ответ 2

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

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

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

Ответ 3

Отличная статья, на которую ссылается Jon Z, больше не доступна, но я смог вытащить текстовую версию из кеша Google. Я сохраню его здесь, если Google убьет это и в будущем. Оригинальный пост был Mikael Ståldal, так что кредит, где кредит должен быть.

-

Как использовать колесико мыши на экране GNU

Экран GNU имеет поддержку для прокрутки, но по умолчанию вам нужно использовать неудобные ключи для его использования. Я хотел бы иметь возможность использовать Shift-PageUp, Shift-PageDown и колесико мыши для прокрутки, так же, как вы можете делать в xterm.

Было сложно настроить экран для этого, и он предполагает сотрудничество с эмулятором терминала. Но мне, наконец, удалось добиться решения, которое работает очень хорошо. Добавьте это в свой файл ~/.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, вы сможете прокручивать ее только при использовании экрана. Возможно, вы захотите запустить xterm так, чтобы он всегда использовал Screen:

xterm -e screen

Ответ 5

И использовать scrollwheel в VIM внутри экрана GNU:

[. Vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse

Ответ 6

Нажмите Ctrl + a, а затем [

В строке заголовка вашего терминала теперь должен быть указан режим копирования.

Теперь клавиши со стрелками и колесиком мыши должны работать как ожидалось.

Чтобы вернуться к нормальному нажатию Esc или нажмите Enter несколько раз.

Ответ 7

Следующее работало для меня как в Cygwin, так и в Putty: Измените .screenrc и добавьте

terminfo xterm* ti=:te=

Ответ 8

Настройка TERM переменной vt100 вместо xterm перед запуском экрана также работает.
Я использую это в течение длительного времени, работает как прелесть.

Добавьте это в свой .bashrc:

# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
  export TERM=vt100
fi

-

Для справки, мой .screenrc имеет это (не требуется для этого AFAIK):

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC

Ответ 9

Если ответы выше не работают для вас, убедитесь, что у вас нет параметра caption или alwayslastline, установленного в вашем .screenrc. Если они у вас есть, это не сработает:

termcapinfo xterm* [email protected]:[email protected]

Если вам нужна эта информация, вы можете попробовать установить ее в заголовке вашего терминала (с помощью termcapinfo)

Ответ 10

Решение при использовании "Ubuntu 16.04.2 LTS" выглядит следующим образом:

а). Обновить $HOME/.screenrc в качестве предыдущих ответов:

termcapinfo xterm* [email protected]:[email protected]

б). Используйте "Настройки". "Предпочтительные приложения", чтобы изменить терминал по умолчанию на xterm, выбрав "X Terminal" в раскрывающемся списке.

Некоторые лишние заметки

  • Ни один из других терминалов, включая установку "lxterminal", работал у меня, даже когда я изменил строку termcapinfo на "*" вместо "xterm *".

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