在GNU屏幕中使用滚轮

我如何设置GNU屏幕允许鼠标的滚轮在回滚缓冲区中滚动? 我曾试图向谷歌了解这一点,但是大多数关于如何让屏幕内的应用程序使用滚轮的命中。

我相信你可以像这样在你的~/.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 

在屏幕上,您必须首先进入“回滚模式”(或“复制模式”)才能够在回滚缓冲区中滚动:组合键Ctrla EscCtrlCtrl[ 。 然后,您可以使用向上和向下键(或CtrlbCtrlf移动页面)滚动历史logging。

在这种模式下,如果鼠标滚轮适用于其他应用程序,也可以使用鼠标滚轮。 用Esc结束“回滚模式”。

至于滚动回滚缓冲区而没有首先进入回滚模式,这可能不可能不修改屏幕。 除了回滚模式,我从来没有听说过访问回滚缓冲区的方法。

Jon Z提到的优秀文章不再可用,但是我能够从Googlecaching中获取纯文本版本。 如果谷歌将来也会把它放在这里,我会把它保存在这里。 原来的职位是由MikaelStåldal所以信贷到期的信用。

如何在GNU屏幕中使用鼠标滚轮

GNU屏幕支持回滚,但默认情况下,你必须使用尴尬的键来使用它。 我希望能够使用Shift-PageUp,Shift-PageDown和鼠标滚轮来滚动,就像在xterm中可以做的那样。

为此configurationScreen并不容易,它涉及到与terminal仿真器的合作。 但我终于设法达到了一个很好的解决scheme。 将其添加到〜/ .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中有效。 我不确定它是否在其他terminal仿真器中工作。

请注意,这将禁用xterm中的正常滚动支持,只有在使用屏幕时才能滚动。 你可能想要像这样启动xterm来始终使用Screen:

 xterm -e screen 

对于OS X(雪豹),以下工作适合我:

http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/

简而言之,它包括将以下内容添加到远程主机(您正在运行的屏幕上的)上的〜/ .screenrc:

 defscrollback 5000 termcapinfo xterm* ti@:te@ 

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

[的.vimrc]

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

Ctrl + a,然后按[

您的terminal的标题栏现在应该说复制模式。

现在箭头键和鼠标滚轮应该按预期工作。

要返回到正常按Esc或按Enter键几次。

以下在Cygwin和Putty中都适用于我:编辑.screenrc并添加

 terminfo xterm* ti=:te= 

在运行屏幕之前,将TERMvariables设置为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@ 

如果你需要这个信息,你可以尝试在你的terminal的标题(使用termcapinfo

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

一个)。 更新$ HOME / .screenrc作为以前的答案已经指定:

 termcapinfo xterm* ti@:te@ 

B)。 使用“设置”。“首选应用程序”通过select下拉列表中的“Xterminal”来将默认terminal更改为xterm。

一些多余的音符

  • 即使我把termcapinfo行改为“*”而不是“xterm *”,其他任何terminal(包括安装“lxterminal”)都不能工作。

  • 通过点击屏幕左上angular的菜单button,可以使用右下angular的第三个图标来获得设置对话框。