使用GNU屏幕中的滚轮

如何设置GNU屏幕以允许鼠标滚轮在滚动缓冲区中滚动?我试着谷歌关于这一点,但大多数点击是关于如何允许屏幕内的应用程序使用滚轮。

83374 次浏览

在屏幕上,你必须首先进入“滚动模式”(或“复制模式”)才能在滚动缓冲区中滚动:组合键Ctrl-一个 Esc,或Ctrl-一个 Ctrl-。然后你可以使用上下键滚动历史记录(或Ctrl-bCtrl-一个0来移动页面)。

在这种模式下,你的鼠标滚轮也应该工作,如果它在其他应用程序中工作的话。 你用Esc结束“滚动模式”。

至于在不首先进入滚动模式的情况下滚动滚动滚动缓冲区,如果不修改屏幕,这可能是不可能的。除了滚动模式之外,我从未听说过访问滚动缓冲区的方法。

我相信你可以像这样在你的~/.screenrc中添加一行:

termcapinfo xterm* ti@:te@

其中“xterm*”是当前TERM的glob匹配。为了确认它的工作,^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

Jon Z提到的那篇优秀的文章已经不再可用,但我能够从谷歌缓存中找到它的纯文本版本。我把它保存在这里,以防将来谷歌也把它掉了。原来的帖子是由Mikael Ståldal所以功劳是应得的。

--

如何在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中的正常滚动支持,您将只能在使用Screen时滚动。你可能想要像这样开始xterm,总是使用Screen:

xterm -e screen

在GNU屏幕内的VIM中使用滚轮:

[. vimrc]

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

Ctrl+一个 +

终端的标题栏现在应该显示“复制模式”。

现在方向键和鼠标滚轮应该可以正常工作了。

按“Esc”或连续按“Enter”键恢复正常。

对于OS X (Snow Leopard),以下操作对我来说是有效的:

http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/ < a href = " http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/ " > < / >

简单地说,它包括向~/添加以下内容。远程主机上的Screenrc(你正在运行的屏幕):

defscrollback 5000
termcapinfo xterm* ti@:te@
以下为我在Cygwin和Putty工作: 编辑.screenrc并添加

terminfo 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

如果上面的答案不适合你,请确保你的.screenrc中没有设置标题alwayslastline选项。如果你有它们,这将不起作用:

termcapinfo xterm* ti@:te@

如果你需要这些信息,你可以尝试在终端的标题中设置它(使用termcapinfo)

使用“Ubuntu 16.04.2 LTS”时的解决方案如下:

a).更新$ HOME / . screenrc,因为前面的答案已经指定:

termcapinfo xterm* ti@:te@

b).使用“设置”。“首选应用程序”更改默认终端为xterm,通过在下拉列表中选择“X终端”之一。

一些多余的注释

  • 其他终端,包括安装"lxterminal", 对我来说很有用,即使我把termcapinfo行改成了“*” 而不是“xterm*”。

  • 通过单击屏幕左上角的菜单按钮,您可以 你可以使用右下角第三个图标进入设置对话框吗 李角落。< / p > < / >