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

StackOverflow https://stackoverflow.com/questions/359109

  •  21-08-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

termcapinfo xterm* ti@:te@

Где "xterm*" - это глобальное соответствие вашего текущего ТЕРМИНА.Чтобы убедиться, что это работает, ^ 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: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.

От termcap(5):

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

Другие советы

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

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

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

Отличная статья, на которую ссылается Джон Зи, больше недоступна, но я смог найти ее текстовую версию из кэша Google.Я сохраняю это здесь на случай, если Google откажется и от этого в будущем.Оригинальный пост был написан Микаэлем Столдалом, так что отдайте должное там, где это необходимо.

--

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

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

Для OS X (Snow Leopard) у меня сработало следующее:

http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/

Вкратце, это включает в себя добавление следующего в ~/.screenrc на удаленном хосте (том, на котором вы запускаете screen):

defscrollback 5000
termcapinfo xterm* ti@:te@

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

[.vimrc]

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

Пресса Ctrl+a за которым следует [

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

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

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

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

terminfo xterm* ti=:te=

Настройка 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

Если приведенные выше ответы вам не подходят, убедитесь, что у вас нет подпись или тот всегда конечная линия параметр, установленный в вашем файле .screenrc.Если они у вас есть, это не сработает:

termcapinfo xterm* ti@:te@

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

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

а).Обновить $ГЛАВНАЯ СТРАНИЦА/.screenrc как указывалось в предыдущих ответах:

termcapinfo xterm* ti@:te@

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

Несколько лишних заметок

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top