~
,而不是四处移动光标/视图。为什么会发生这种情况,我需要更改哪些设置?GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
问题最初显示为:
在PuTTY中,为什么在shell(bash)上按“ Home”键键入“〜”?或者更确切地说,如何使光标移动到我键入的命令的开头?
(我以为原因是〜是主目录,但是答案说不是。)
#1 楼
将“连接”>“数据”选项卡下的终端类型字符串从默认的“ xterm”更改为“ linux”。它对我有用。#2 楼
发生这种情况是因为您没有正确设置PuTTY的终端类型,或者因为您的服务器没有安装正确的terminfo定义。在基于Debian的系统上,ncurses-term软件包(版本5.7 + 20081213-1)包含用于腻子,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的明亮版本)。其他“解决方案”很可能有时会失败,因为他们公然无视所涉及终端之间的差异。
– SamB
2010-10-14 21:05
yum install ncurses-term在CentOS 7上为我进行了排序,下次登录时会腻子,谢谢。
–流浪僵尸
2014年12月7日14:21
将终端类型设置为腻子可以工作,但是会破坏类似xterm的鼠标支持(例如,对于Midnight Commander)
–安东
15年9月22日在21:02
安装'ncurses-term'在Debian测试中对我有用。
– hochl
16年8月8日在13:05
这些对我都不起作用,我在连接centos的腻子上不能使用yum install ncurses-term,因为我不是root。
–Herman牙刷
16 Sep 10'在22:14
#3 楼
如果要在按某个键或组合键时验证PuTTY向终端发送的代码,只需发出Ctrl+V
然后按所需的键即可。例如在我的盒子上,按Home键将在我的终端上生成以下字符串:
^[[1~
,这意味着PuTTY发送转义字符^ [,后跟字符串[1 〜。
您可以在
~/.inputrc
文件夹中创建一个$HOME
文件,或者根据您的系统创建一个/etc/inputrc
文件。然后用PuTTY代码和要由Bash触发的匹配的Bash动作填充此文件。注意:将每个^ [字符替换为等效的\ e字符串
在我的示例中,我将添加一行带有Home键代码和行首操作的行(默认情况下绑定到Bash中的
Ctrl+A
):"\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
来自@Cimbali:更多可绑定的命令(如以前的历史记录:在历史记录列表中上移'up' ),可在此参考页上找到。
评论
是的!终于! Putty的终端类型字符串对于后向单词和正向单词没有任何作用。这很棒 !
–辛巴利
15年1月24日在17:39
这是唯一可接受的解决方案,因为TERM = linux或TERM = putty break类似于xterm的鼠标支持。谢谢!
–安东
15年9月22日在21:06
#4 楼
Ctrl + A将您带到行的开头这是Bash键盘快捷键的列表
评论
一切都很好,但是Home / End扎根在我的脑海里,由于我只在蓝色的月亮中一次管理服务器,因此无法学习硬接线的机会很小。
–RomanSt
2011年1月7日12:27
#5 楼
它实际发送的是^[[1~
,它是一个终端转义序列,由以下内容组成:[-左方括号
1-一个
〜-波浪号
您可以通过按Ctrl + V再按Home键来看到它。
您可以通过更改Home和End的PuTTY键盘设置来解决问题rxvt的键(使转义序列为
^[[H
或更改您正在使用的$ TERM(或通过编辑~/.inputrc
)。通过按Home键,得到的波浪号之间没有任何关系和代表主目录的波浪号。例如,在我的设置中,Page-Down生成
^[[6~
,如果没有正确解释波浪号,也会打印波浪号。评论
谢谢! rxvt固定了Home键;现在,“结束”键会产生响声。 PgUp / Down确实可以键入〜,并且PuTTY Keyboard设置都不会使它们起作用。我的bash搞砸了,还是“正常”?
–RomanSt
2010年1月11日,17:39
输入echo $ TERM会得到什么?
–丹尼斯·威廉姆森
2010年1月11日,18:07
xterm(最多15个字符)
–RomanSt
2010年1月11日在18:08
您可以尝试在〜/ .inputrc文件中添加“ \ eOw”:行尾(即大写字母O)。
–丹尼斯·威廉姆森
2010年1月11日,18:21
结束键固定;我明白了真希望这样的黑客不是必需的...
–RomanSt
2010年1月11日,18:27
#6 楼
这些选项都不适合我。我正在运行旧的AIX系统。我必须在.profile中添加以下别名alias __A=$(print 'q4312078q20') # ^P = up = previous command
alias __B=$(print 'q4312078q16') # ^N = down = next command
alias __C=$(print 'q4312078q06') # ^F = right = forward a character
alias __D=$(print 'q4312078q02') # ^B = left = back a character
评论
对我不起作用
–Herman牙刷
16-09-10 22:29
#7 楼
我无法与其他方法一起使用。但是,只要您的外壳是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热键都可在其他程序中使用。
评论
这可能与我正在查看此屏幕的主要原因不符:屏幕,其默认设置会破坏Ctrl-A,因为它将它用作转义字符...。
– Gert van den Berg
16年4月19日在8:50
#8 楼
对于MTPuTTY打开任何连接属性
单击
Run PuTTY Config
打开
Connection
> Data
选项卡并将Terminal-type string
设置为linux
回到
Session
选项卡在列表中选择
Default Settings
,然后单击Save
关闭窗口
评论
谢谢!我尝试使用此方法使Ctrl向左/向右工作(superuser.com/a/103097/45410)之后出现了这个问题。
–叶德文
2012年11月4日在17:04
重点:不是终端->键盘“功能键和键盘”。
– Elazar
2014年12月3日13:43
它可以工作,但会产生其他问题,例如禁用鼠标支持。所以,这对我来说是无法接受的解决方案
–安东
15年9月22日在20:58
当连接到OS X时,此解决方案还可以在腻子内部产生变音符号!
– lor猴
16 Mar 3 '16 at 17:30
发现此解决方案的一个主要问题。当从Windows复制粘贴一个长bash脚本到腻子中的vi时,顶部会被截断。建议将终端类型字符串设置为“ putty”。
–修补匠
20-10-7在8:35