Как настроить экран GNU, чтобы колесо прокрутки мыши могло прокручиваться в буфере прокрутки? Я пытался Google об этом, но большинство обращений касалось того, как разрешить приложениям на экране использовать колесо прокрутки.
Использование колеса прокрутки на экране GNU
Ответ 1
Я считаю, что вы можете просто добавить строку, подобную этой, в ~/.screenrc
:
termcapinfo xterm* [email protected]:[email protected]
Где "xterm *" - это совпадение с glob вашего текущего TERM. Чтобы подтвердить, что это работает, ^ 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:[email protected]
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
Ответ 2
На экране сначала вы должны ввести "режим прокрутки" (или "режим копирования" ), чтобы иметь возможность прокручивать в буфере прокрутки: комбинация клавиш Ctrl - a Esc или Ctrl - a Ctrl - [. Затем вы можете прокручивать историю с помощью клавиш "Вверх" и "Вниз" (или Ctrl - b, Ctrl - f, чтобы переместить страницу).
В этом режиме ваше колесико мыши должно работать, если оно работает в других приложениях. Вы заканчиваете "режим прокрутки" с помощью Esc.
Что касается прокрутки буфера прокрутки без первого ввода режима прокрутки, это, вероятно, невозможно без изменения экрана. Я никогда не слышал о способе доступа к буферу прокрутки, кроме режима прокрутки.
Ответ 3
Отличная статья, на которую ссылается Jon Z, больше не доступна, но я смог вытащить текстовую версию из кеша Google. Я сохраню его здесь, если Google убьет это и в будущем. Оригинальный пост был Mikael Ståldal, так что кредит, где кредит должен быть.
-
Как использовать колесико мыши на экране GNU
Экран 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 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
Ответ 4
Для OS X (Snow Leopard) для меня работало следующее:
http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/
Вкратце, это связано с добавлением следующего к ~/.screenrc на удаленном хосте (тот, на котором вы запускаете экран):
defscrollback 5000
termcapinfo xterm* [email protected]:[email protected]
Ответ 5
И использовать scrollwheel в VIM внутри экрана GNU:
[. Vimrc]
set mouse=a " hold shift to copy xterm
set ttymouse=xterm2 " necessary for gnu screen & mouse
Ответ 6
Нажмите Ctrl + a, а затем [
В строке заголовка вашего терминала теперь должен быть указан режим копирования.
Теперь клавиши со стрелками и колесиком мыши должны работать как ожидалось.
Чтобы вернуться к нормальному нажатию Esc или нажмите Enter несколько раз.
Ответ 7
Следующее работало для меня как в Cygwin, так и в Putty: Измените .screenrc и добавьте
terminfo xterm* ti=:te=
Ответ 8
Настройка 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
Ответ 9
Если ответы выше не работают для вас, убедитесь, что у вас нет параметра caption или alwayslastline, установленного в вашем .screenrc. Если они у вас есть, это не сработает:
termcapinfo xterm* [email protected]:[email protected]
Если вам нужна эта информация, вы можете попробовать установить ее в заголовке вашего терминала (с помощью termcapinfo
)
Ответ 10
Решение при использовании "Ubuntu 16.04.2 LTS" выглядит следующим образом:
а). Обновить $HOME/.screenrc в качестве предыдущих ответов:
termcapinfo xterm* [email protected]:[email protected]
б). Используйте "Настройки". "Предпочтительные приложения", чтобы изменить терминал по умолчанию на xterm, выбрав "X Terminal" в раскрывающемся списке.
Некоторые лишние заметки
-
Ни один из других терминалов, включая установку "lxterminal", работал у меня, даже когда я изменил строку termcapinfo на "*" вместо "xterm *".
-
Нажав кнопку меню в верхнем левом углу экрана, вы может получить диалог настроек, используя третий значок справа внизу угол.