Home、End、PageUp、PageDown 键都~
在我的 bash 会话中键入 a ,而不是移动光标/视图。为什么会发生这种情况,我需要更改哪些设置?
GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
Run Code Online (Sandbox Code Playgroud)
这个问题最初是这样写的:
在 PuTTY 中,为什么按 shell (bash) 上的“Home”键会键入“~”?或者更确切地说,如何让它将光标移动到我输入的命令的开头?
(我认为原因是 ~ 是主目录,但答案说事实并非如此。)
小智 167
将 Connection > Data 选项卡下的 Terminal-type String 从默认的“xterm”更改为“linux”。它对我有用。
qua*_*ote 51
发生这种情况是因为您没有正确设置 PuTTY 的终端类型,或者因为您的服务器没有安装正确的 terminfo 定义。
在基于 Debian 的系统上,ncurses-term包(版本 5.7+20081213-1)包括用于putty、putty-256color和putty-vt100终端类型的terminfo 定义文件。如果你安装了这个包,你可以在 Putty 的会话配置(连接 -> 数据)中将“终端类型字符串”设置为“putty”而不是默认的“xterm”。
Stephen Irons 还提到“linux”是另一种有效的终端类型;我相信从以前的经验来看这是正确的,但最近没有测试过。
在我的系统上,这允许 Home 和 End 正常工作,尽管 PageUp/PageDown 不滚动控制台窗口。(它们确实在 ncurses 应用程序中正常工作,例如aptitude和 Shift-PgUp/Shift-PgDn 滚动控制台窗口。)
Dam*_*ido 23
如果您想在按下某个键或组合键时验证 PuTTY 将哪个代码发送到您的终端,您只需发出 aCtrl+V
然后按下所需的键。
例如在我的盒子上,按Home键将在我的终端上生成以下字符串:
^[[1~
Run Code Online (Sandbox Code Playgroud)
这意味着 PuTTY 发送转义字符^[后跟字符串[1~。
您可以~/.inputrc
在$HOME
文件夹中创建一个文件,或者/etc/inputrc
根据您的系统创建一个文件。然后使用 PuTTY 代码和您希望由 Bash 触发的匹配 Bash 操作填充此文件。
注意:将每个^[字符替换为等效的\e字符串
在我的示例中,我将添加一行,其中包含我的Home键代码和行首操作(默认情况下绑定到Ctrl+A
Bash):
"\e[1~": beginning-of-line
Run Code Online (Sandbox Code Playgroud)
仅供参考,我的 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
Run Code Online (Sandbox Code Playgroud)
来自@Cimbali:此参考页面上提供了更多可绑定的命令(如以前的历史:在历史列表中“向上移动”)。
它实际发送的^[[1~
是一个终端转义序列,包括:
您可以通过按Ctrl+V然后看到Home。
您可以通过将 Home 和 End 键的 PuTTY 键盘设置更改为 rxvt(这会生成转义序列^[[H
或通过更改您正在使用的 $TERM(或通过编辑~/.inputrc
)来解决您的问题。
顺便说一下,按下时得到Home的波浪号和代表主目录的波浪号之间没有关系。举例来说,在我的设置Page-Down产生^[[6~
也将打印一个波浪线,如果它没有被正确地解释。
归档时间: |
|
查看次数: |
123555 次 |
最近记录: |