GNU屏幕configuration,以获得最佳的键码识别

目前的GNU屏幕会弄乱某些击键,例如CTRL与箭头键组合,所以,例如在vim插入模式下,CTRL-PGUp将大写下一个/当前字(或类似的东西)。 我希望它能够非常透明地工作,所以它的function和没有运行的时候是一样的(CTRL是一个控制序列)。这是可能的吗?

另外 – 我怀疑这或多或less是一个单独的问题 – 我想让滚轮在会话日志中回滚,而不是像现在这样循环浏览历史logging。 可行? 或者,也许它可以设置为模拟一个更大的屏幕大小,它所运行的terminal应用程序可以将该文本保留在其会话日志中。 无论哪种方式,目标是能够使用鼠标滚轮和/或上移箭头在会话日志中向后滚动。

您可以在屏幕上更改默认的按键,但您将遇到同样的问题,只是其他按键。 Byobu使设置屏幕的基本击键更容易。 在byobu中,会话日志中鼠标滚轮的回车也会被激活,所以您可以使用它或查看它在/usr/share/byobu/profiles/common

对于滚轮,你需要在~/.screenrc

 # scrollback by inhibiting switching to terminal emulator's alternate screen termcapinfo xterm*|rxvt*|kterm*|Eterm*|putty ti@:te@ # then turn on alternate windows within screen altscreen on 

对于光标键的东西,这取决于你的terminal仿真是多么准确,对于声称的terminaltypes,在你调用屏幕的窗口中,所以它可以正确地进行映射。 许多terminal仿真器声称,通过$TERM ,是“xterm”。 但他们不是,他们没有足够模仿xterm正确地声称。 通常情况下,声称像vt220这样的东西已经足以改善我的事情,但我不记得屏幕的情况 – 我只是使用xterm本身。 有各种各样的酷刑testing你可以运行,看看你的terminal模拟器假装是xterm的时候是不是很糟糕。

要事后修复,请使用bindkey screen命令。 它被logging在屏幕(1),如果你使用^ A :(或者任何你映射屏幕的转义,如果不是^ A(我使用^))),那么你可以input^A:bindkey -d来查看当前地图。

不理想,但你可以把它放在你的.vimrc作为一个即时修复:

 nmap <ESC>[5;5~ <C-PageUp> nmap <ESC>[6;5~ <C-PageDown> 

来自这个错误报告 。

或者,你可以告诉vim改变它对PgUp / PgDn的识别:

 set t_kN=<ESC>[6;*~ set t_kP=<ESC>[5;*~ 

前者更好些,因为这意味着你的PgUp / PgDn仍然在screen之外工作。