Answers:
将“连接”>“数据”选项卡下的终端类型字符串从默认的“ xterm”更改为“ linux”。它为我工作。
Terminal -> Keyboard
“功能键和键盘”。
发生这种情况是因为您没有正确设置PuTTY的终端类型,或者因为您的服务器没有安装正确的terminfo定义。
在基于Debian的系统上,ncurses-term软件包(版本5.7 + 20081213-1)包括putty,putty-256color和putty-vt100终端类型的terminfo定义文件。如果已安装此软件包,则可以在Putty的会话配置(连接->数据)中将“终端类型字符串”设置为“ putty”,而不是默认的“ xterm”。
斯蒂芬·艾恩斯(Stephen Irons)还提到“ Linux”是另一种有效的终端类型。我相信从以前的经验来看这是正确的,但最近尚未对其进行测试。
在我的系统上,尽管PageUp / PageDown不会滚动控制台窗口,但这可以使Home和End正常工作。(它们在aptitude之类的 ncurses应用程序中可以正常工作,并且Shift-PgUp / Shift-PgDn滚动控制台窗口。)
TERM=putty
或TERM=putty-256color
最明智,尽管不幸的是,目前后者似乎不适用于8-15的颜色(本来应该是0-7的明亮版本)。其他“解决方案”很可能有时会失败,因为他们公然无视所涉及终端之间的差异。
yum install ncurses-term
在CentOS 7上为我对它进行了排序,下次登录时会腻子,谢谢。
putty
有效,但会中断类似xterm的鼠标支持(例如,对于Midnight Commander)
如果您想在按某个键或组合键时验证PuTTY将哪些代码发送到终端,则只需发出a Ctrl+V
,然后按所需的键即可。
例如,在我的盒子上,按Home键将在我的终端上生成以下字符串:
^[[1~
这意味着PuTTY发送转义字符^ [,后跟字符串[1〜。
您可以~/.inputrc
在$HOME
文件夹中创建文件,也可以/etc/inputrc
根据系统创建文件。然后用PuTTY代码和您要由Bash触发的匹配的Bash操作填充该文件。
注意:将每个^ [字符替换为等效的\ e字符串
在我的示例中,我将添加一行带有Home键代码和行首操作(默认情况下绑定到Ctrl+A
Bash中)的行:
"\e[1~": beginning-of-line
仅供参考,我的inputrc文件具有以下内容:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line # Home key
"\e[4~": end-of-line # End key
"\e[5~": beginning-of-history # PageUp key
"\e[6~": end-of-history # PageDown key
"\e[3~": delete-char # Delete key
"\e[2~": quoted-insert # Insert key
"\eOD": backward-word # Ctrl + Left Arrow key
"\eOC": forward-word # Ctrl + Right Arrow key
TERM=linux
或TERM=putty
打破的xterm状鼠标支持。谢谢!
它实际发送的是^[[1~
终端转义序列,包括:
您可以按Ctrl+ V然后按Home。
通过将Home和End键的PuTTY键盘设置更改为rxvt(可以进行转义序列^[[H
或更改您正在使用的$ TERM(或通过编辑~/.inputrc
),也许可以解决问题。
顺便说一下Home,当您按下波浪号与代表主目录的波浪号之间没有任何关系。例如,在我的设置中,如果未正确解释代字号,也会Page-Down生成^[[6~
一个代字号。
~
,并且PuTTY Keyboard设置都不会使它们起作用。我的bash搞砸了,还是“正常”?
echo $TERM
?
xterm
(限制为15个字符)
"\eOw": end-of-line
(大写字母O)~/.inputrc
。
我无法与其他方法一起使用。但是,只要您的外壳是Bash,我就创建了可以运行的AutoHotkey脚本:
#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a ; beginning of line
End::Send ^e ; end of line
+^Del::Send ^k ; delete whole line after cursor
+End::Send ^k ; delete whole line after cursor
+Home::Send ^u ; delete whole line before cursor
^Del::Send !d ; delete word after cursor
^BS::Send ^w ; delete word before cursor
^Left::Send !b ; jump word left
^Right::Send !f ; jump word right
#IfWinActive
但是请谨慎使用,因为并非所有这些bash热键都可在其他程序中使用。
screen
,其默认设置打破按Ctrl-A,因为它使用它作为转义字符....