Використання колеса прокрутки на екрані GNU


254

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


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

Сьогодні не використовується екран, але оновлення здаються досить переконливими. :)
JesperE

Відповіді:


359

Я вважаю, що ви можете просто додати такий рядок до свого ~/.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: Я також зазнав прокрутки історії команд (я використовую термінал GNOME Ubuntu). Я виправив це, перейшовши в меню Правка -> Налаштування профілю -> Прокрутка та зніміть прапорець "Використовувати натискання клавіш для прокрутки на альтернативному екрані". Зауважте, що мені все-таки потрібно було використовувати виправлення Пістоса.
Майкл Кребс

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
"Режим прокрутки" - це скоріше неофіційний термін IMHO. :) Ctrl + a Esc перейде в режим копіювання ; цей режим завжди називали таким, оскільки його основною метою є можливість копіювання тексту туди-сюди. Можливість прокрутки колесом миші в режимі копіювання (nb. Для мене не працює) слід скоріше розглядати як своєрідний "додатковий трюк", але не як основну мету цього режиму.
синтаксис-помилка

1
@syntaxerror: Ну, документи називають це "режимом копіювання / прокрутки" і згадують "буфер прокрутки" ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), тому я думаю, що ми " обидва права :-). У будь-якому випадку я додав у свою відповідь "режим копіювання".
sleske

Чудово! Я також хотів це зробити, але перш ніж заплутатись у таких старих відповідях, я, як відомо, запитую спочатку (хоча я знаю, що правила SO / SE цього не прописують; але це справа з неписаними правилами.)
syntaxerror

Це мала бути офіційною відповіддю. Дякую :)
Лінь

24

Чудова стаття, на яку посилається Джон Z, більше не доступна, але мені вдалося вимкнути текстову версію її лише з кешу 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, ви зможете прокручувати лише під час використання екрана. Ви можете запустити xterm так, щоб завжди використовувати Screen:

xterm -e screen


11

І використовувати колесо прокрутки у VIM-екрані всередині GNU Screen:

[.vimrc]

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

Дивовижно, це в поєднанні з фокусом screenrc зробив мій день, оскільки я використовую awesomewm, а термінали - це моє життя
Фотіос

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 і там запускаю екран.
Даніель К.

Як було сказано вище, це не працює за призначенням. Так, проте ви можете прокручувати буфер прокрутки, коли ви змінюєте вікна.
Халсафар

дуже
занижене

4

У Cygwin та Putty мені працювали наступні: Змінити .screenrc та додати

terminfo xterm* ti=:te=

3

Якщо відповіді вище не працюють для вас, переконайтеся , що ви не маєте заголовок або alwayslastline набір опцій в вашому .screenrc. Якщо у вас є, це не вийде:

termcapinfo xterm* ti@:te@

Якщо вам потрібна ця інформація, ви можете спробувати встановити її в назві терміналу (з termcapinfo)


0

Рішення при використанні "Ubuntu 16.04.2 LTS" таке:

а). Оновіть $ HOME / .screenrc, як вказали попередні відповіді:

termcapinfo xterm* ti@:te@

б). Використовуйте "Налаштування". "Кращі програми", щоб змінити термінал за замовчуванням на xterm, вибравши "X Terminal" у спадному списку.

Деякі зайві нотки

  • Жоден з інших терміналів, включаючи встановлення "lxterminal", не працював для мене, навіть коли я змінив рядок termcapinfo на "*" замість "xterm *".

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.