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


255

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


JesperE - Можете ли вы изменить выбранный ответ? Я запутался, и комментарии верны, другой ответ намного лучше.
Джефф

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

Ответы:


360

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

28
Я последовал предложению Пистоса, и оно частично работает. Как он описывает, я могу ввести некоторые команды (чтобы получить достаточно вывода для прокрутки экрана), а затем использовать колесико мыши для прокрутки назад по предыдущим строкам. На самом деле, я использую экран через Konsole в KDE (с вкладками xterm, в основном), и полоса прокрутки для окна Konsole работает точно так же. Но есть проблема: если вы переключаетесь между окнами экрана (^ An, ^ Ap), ваш буфер прокрутки портится. Содержимое любых окон, в которые вы переключаетесь, просто «заправляется» в буфер прокрутки. Это действительно уменьшает это.
Райан Б. Линч

22
Но это прокручивается в истории команд. Я хочу прокрутить буфер вывода.
JesperE

15
@JesperE: Я также испытал прокрутку истории команд (я использую терминал Ubuntu GNOME). Я исправил это, перейдя в Edit -> Profile Preferences -> Scrolling и сняв флажок «Использовать нажатия клавиш для прокрутки на альтернативном экране». Обратите внимание, что мне все еще нужно было использовать исправление Пистоса.
Майкл Кребс

2
В дополнение к работе в OS X Lion, это также работает в Putty, iSSH и Prompt (от Panic). Эта строка должна присутствовать во всех файлах .screenrc!
funroll

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

69

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

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

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


21
Да, я знаю о режиме прокрутки. Я надеялся, что мне не придется вручную переходить в режим прокрутки, чтобы использовать мышь. Спасибо.
JesperE

4
«Режим прокрутки» - это скорее неофициальный термин ИМХО. :) Ctrl + Esc войдет в режим копирования ; этот режим всегда назывался так, поскольку его основная цель - сделать возможным копирование текста туда и обратно. Возможность прокрутки колесиком мыши в режиме копирования (не для меня), скорее, следует рассматривать как своего рода «дополнительный трюк», но не как основное назначение этого режима.
синтаксическая ошибка

1
@syntaxerror: Ну, документы называют это «режимом копирования / прокрутки» и упоминают «буфер прокрутки» ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), так что я думаю, что мы оба правы :-). Во всяком случае, я добавил «режим копирования» в мой ответ.
Слёске

Большой! Я тоже хотел это сделать, но прежде чем связываться с такими старыми ответами, я, как известно, сначала спрашиваю (хотя я знаю, что правила SO / SE не прописывают его, но это не так с неписанными правилами.)
syntaxerror

Это должен был быть официальный ответ. Спасибо :)
Лин

24

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

-

Как использовать колесико мыши в 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, вы сможете прокручивать только при использовании экрана. Возможно, вы захотите запустить xterm вот так, чтобы всегда использовать Screen:

xterm -e screen


11

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

[.Vimrc]

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

Удивительно, это в сочетании с трюком screenrc сделало мой день, так как я использую awesomewm, а терминалы - моя жизнь
Fotios

7

Нажмите Ctrl+ с aпоследующим[

Строка заголовка вашего терминала должна теперь сказать «Режим копирования».

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

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


5

Установка 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

Установка переменной окружения TERM, как описано (до запуска экрана), работала для меня. Это так же просто, как ввести "export TERM = vt100". Большое спасибо. PS: я на Mac, SSH в Linux окно и там я запускаю экран.
Даниэль К.

Как уже упоминалось выше, это не работает как задумано. Да, вы можете прокручивать, однако ваш буфер прокрутки переопределяется при смене окон.
Halsafar

очень недооцененное решение
MolbOrg


3

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

termcapinfo xterm* ti@:te@

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


0

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

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

termcapinfo xterm* ti@:te@

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.