Alt-Left 跳过单词在终端模拟器中不起作用

Alo*_*dal 20 bash keyboard-shortcuts terminal readline

在之前工作的 Debian Wheezy 机器上,我习惯了 Alt+Left 和 Alt+Right 在活动命令行(在 bash 中)上的单词之间跳过。

但是,由于在家里我已升级到 Jessie(Debian 8.0,测试分支),这不再起作用:Alt-Left 不会跳到上一个单词,而是打印类似D或 的内容[D。OTOH,如果我打开 ssh 并连接到我的无头 Debian Wheezy,它确实可以完美运行。

此外,我刚刚在我的新工作中安装了 Fedora 20,这里的行为是相同的。这适用于 bash、csh 和 ksh(从 开始env -i),以及 rxvt-unicode 和 xfce4-terminal,所以它必须是这些级别之外的东西。

我应该在堆栈中的其他地方寻找差异吗?

ter*_*don 23

您可能定义了一个在升级过程中丢失的本地~/.inputrc或全局/etc/inputrc文件。一个简单的解决方法是创建一个~/.inputrc包含以下几行的文件:

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right
Run Code Online (Sandbox Code Playgroud)

这些将适用于xtermterminatorgnome-terminal但可能需要针对其他终端进行调整。不幸的是,每个终端模拟器可以使用不同的语法。有关更多详细信息,请在此处查看我的回答。


Alo*_*dal 11

terdon 为我指明了正确的方向:inputrc文件。

罪魁祸首是非常不直观,readline6 实际上使用 ~/.inputrc而不是/etc/inputrc,而readline(3)既没有强调也没有反驳:

此文件的名称取自 INPUTRC 环境变量的值。如果未设置该变量,则默认值为 ~/.inputrc。如果该文件不存在或无法读取,则最终默认值是 /etc/inputrc。

因此,虽然在两台 Debian 机器上 /etc/inputrc 与libreadline6包提供的相同(版本也相同),但在较新的机器上 ~/.inputrc 存在单行:set bell-style none。删除此文件后,一切正常(请参阅下面的注释)。

我要到明天才能检查 Fedora,但我想这是同样的问题。更新:在 Fedora 上,~/.inputrc 不存在,这里的 /etc/inputrc 只是不同,所以它可能没有定义它。作为修补程序,我只是将 Debian 的 inputrc 保存为我的 ~/.inputrc。


笔记:

它在 7>8 升级期间如何改变的谜团仍未解决,但部分原因可能是我记性不好和一些无意的点文件杂耍。(顺便说一句,这不是 APT 升级,而是重新安装和手动移动点文件,所以也许 ~.inputrc 以某种方式挡住了。)

另外,当我说 OK 时,我的意思是除了 Rxvt(好吧,我只检查了 xfce4-terminal,但我们知道 Rxvt 是通常的反叛者),它被重新映射到 Alt,这显然是因为 Ctrl 被 Rxvt 占用-特定功能--在列表中移动活动选项卡。

正如联机帮助页所述,使用 bash,您可以使用内置的bind命令来调查您当前拥有的内容。

  • 这是正常的,如果你想阅读它,你需要在`~/.inputrc` 顶部的`$include /etc/inputrc`。 (2认同)