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


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

10 220

10 ответов:

Я считаю, что вы можете просто добавить такую строку в свой ~/.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

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

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

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

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

--

как использовать колесико мыши в GNU Screen

экран 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 55"
bindkey -m "^[[5S" stuff 55

# Scroll down
bindkey -d "^[[5T" eval copy "stuff 54"
bindkey -m "^[[5T" stuff 54

# Scroll up more
bindkey -d "^[[25S" eval copy "stuff 5"
bindkey -m "^[[25S" stuff 5

# Scroll down more
bindkey -d "^[[25T" eval copy "stuff 4"
bindkey -m "^[[25T" stuff 4

это работает в окно xterm. Я не уверен, что он работает в других эмуляторах терминалов.

обратите внимание, что это отключает нормальную поддержку прокрутки в xterm, вы сможете получить свиток при использовании экрана. Вы можете начать xterm, как это, чтобы всегда использовать экран:

xterm -e screen

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

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

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

defscrollback 5000
termcapinfo xterm* ti@:te@

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

[.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

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

termcapinfo xterm* ti@:te@

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

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

a). Обновление $HOME/.screenrc как указывали предыдущие ответы:

termcapinfo xterm* ti@:te@

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

несколько лишних нот

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

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