我在插入反斜杠时遇到了一个奇怪的问题(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'
也可以工作,因为反斜杠在单引号内会失去其特殊含义。)