Как настроить экран GNU, чтобы колесо прокрутки мыши могло прокручиваться в буфере прокрутки? Я пытался Google об этом, но большинство обращений касалось того, как разрешить приложениям на экране использовать колесо прокрутки.
Как настроить экран GNU, чтобы колесо прокрутки мыши могло прокручиваться в буфере прокрутки? Я пытался 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 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
Для 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.
Установка 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
В Cygwin и Putty у меня сработало следующее: отредактируйте .screenrc и добавьте
terminfo xterm* ti=:te=
Если приведенные выше ответы не работают для вас, убедитесь, что в вашем .screenrc не установлена подпись или опция Alwayslastline . Если они у вас есть, это не сработает
termcapinfo xterm* ti@:te@
Если вам нужна эта информация, вы можете попробовать установить ее в заголовке вашего терминала (с помощью termcapinfo
)
Решение при использовании «Ubuntu 16.04.2 LTS» заключается в следующем:
а). Обновите $ HOME / .screenrc, так как предыдущие ответы указали:
termcapinfo xterm* ti@:te@
б). Используйте «Настройки». «Предпочтительные приложения», чтобы изменить терминал по умолчанию на xterm, выбрав «Терминал X» в раскрывающемся списке.
Некоторые лишние заметки
Ни один из других терминалов, включая установку «lxterminal», не работал для меня, даже когда я изменил строку termcapinfo на «*» вместо «xterm *».
Нажав кнопку меню в верхнем левом углу экрана, вы можете открыть диалоговое окно «Настройки», используя третий значок в правом нижнем углу.