如何设置GNU屏幕以允许鼠标的滚轮在回滚缓冲区中滚动?我曾尝试向Google询问此问题,但大多数热门话题是如何允许屏幕内的应用程序使用滚轮。
如何设置GNU屏幕以允许鼠标的滚轮在回滚缓冲区中滚动?我曾尝试向Google询问此问题,但大多数热门话题是如何允许屏幕内的应用程序使用滚轮。
Answers:
我相信您可以将这样的一行添加到您的~/.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。
至于在没有先进入回滚模式的情况下滚动回滚缓冲区,不修改屏幕可能是不可能的。除了回滚模式之外,我从未听说过访问回滚缓冲区的方法。
Jon Z所指的出色文章不再可用,但是我能够从Google缓存中获取纯文本版本。我将其保存在此处,以防Google将来也删除它。原始帖子由MikaelStåldal撰写,因此应在应归还的情况下归功于此。
--
如何在GNU屏幕中使用鼠标滚轮
GNU屏幕支持回滚,但是默认情况下,您必须使用笨拙的键才能使用它。我希望能够像使用xterm一样使用Shift-PageUp,Shift-PageDown和鼠标滚轮滚动。
为此,配置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中的常规滚动支持,只有在使用Screen时才能滚动。您可能想要像这样启动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@
将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