无法使用 bash、python 插入反斜杠,使用 csh、idle 可以正常工作

无法使用 bash、python 插入反斜杠,使用 csh、idle 可以正常工作

我在插入反斜杠时遇到了一个奇怪的问题(Ubuntu 10.10 和 11.04,升级后没有任何变化)。我的键盘(瑞典 Thinkpad T400)上的组合键是 AltGr + ?。然而,这似乎不是问题,因为它只出现在一些程序中。

例如,使用 bash 4.2、python 2.7、python 3.2、swipl 5.10 时,我无法在终端中输入或复制粘贴反斜杠。使用 ash、csh、ghci、nano、vi、idle、idle3 时,一切都按预期运行,我既可以输入也可以复制粘贴。例如,复制

echo gurka\\\\agurk

(四个文字反斜杠)并将其粘贴到 csh 中(然后按回车键),我得到

$ csh
% echo gurka\\\\agurk
gurka\\agurk

但是使用 bash,我得到了

$ echo gurkaagurk
gurkaagurk

不幸的是,我在多次新安装后才注意到这个问题,而且我记不清它第一次出现是什么时候。我怀疑是第一组常见但第二组不常见的某个库的错误或冲突配置,但我不确定该如何处理。这非常烦人,我很感激有提示。

更新:对于 konsole 和使用 Ctrl-Alt-F1 得到的任何内容(这是我测试过的),其行为都相同。它也不适用于 gnome-terminal 和 xterm,但这两个会指示错误(通过闪烁)。关于要检查什么的想法?

更新:问题已解决,感谢 Gilles!这是 readline 库 (.inputrc) 的错误配置

马库斯

答案1

我认为你使用的程序都使用阅读行库来读取输入。所以我猜你错误地配置了 readline 库。系统配置文件是/etc/inputrc,每个用户的文件是~/.inputrc。你可能在绑定中多放了一个反斜杠,所以你没有将命令绑定到转义序列,而是将其绑定到以反斜杠开头的序列。

正确:(  "\e[1;5C": forward-word  转义序列由Ctrl+发送Left
错误  :("\\e[1;5C": forward-word  )\ e [ 1 ; 5 C

如果问题仅出现在 bash 中,则有问题的绑定将出现在 中~/.bashrc。请注意,在 中.bashrc,上面的绑定将写为bind "\\e[1;5C: forward-word",带有两个反斜杠,因为 bash 在将定义传递给 readline 之前会进行一轮反斜杠扩展。 (bind '\e[1;5C: forward-word'也可以工作,因为反斜杠在单引号内会失去其特殊含义。)

相关内容