我无法在交互式命令模式下键入空格

r0b*_*rts 1 command-line keyboard-shortcuts input

一个很奇怪的情况。如果我输入交互式命令 - 在这种情况下taskshnslookup我不能输入空格。例如:

tasksh> add "my new task"
Run Code Online (Sandbox Code Playgroud)

变成

tasksh> add"mynewtask"
Run Code Online (Sandbox Code Playgroud)

并且不工作,自然。我想也许这与此有关,tasksh但后来我以nslookup交互模式进行了检查-这是同一回事。这会在 linux4.6.7-1-MANJARO上发生,但不会在 OpenSUSE Leap 42.1 上发生。

我应该如何解决这个非常令人讨厌的事情?

我尝试运行不同的终端(gnome-terminal、xfce4-terminal、xterm),它给出了相同的结果。

Gil*_*il' 6

最可能的解释是您不小心绑定Space到一个在您的配置文件中没有可见效果的命令。

检查 shell 初始化文件中的stty命令。这至少会直接影响依赖于终端原始行编辑器的程序,并且可能会间接影响带有像样行编辑器的程序,因为它们试图保持与 stty 设置的兼容。

如果问题只出现在某些程序中,则有问题的配置可能是readline库的配置。这个库被 bash 和许多其他程序使用。如果该密钥在 bash 中有效,但在其他使用 readline 的程序中无效,则可能是因为 bash 覆盖了它。readline 的配置文件是.inputrc.

如果您只在 bash 中遇到问题,请检查您的.bashrc(这是任何与终端相关的配置应该去的地方)和其他 bash 配置文件(以防配置在错误的位置)。


在评论中,您提到~/.inputrc包含

Space: magic-space
Run Code Online (Sandbox Code Playgroud)

magic-space是一个 bash 命令。其他程序不明白这一点。要么将此设置作为 bash 的条件:

$if Bash
Space: magic-space
$endif
Run Code Online (Sandbox Code Playgroud)

或从中删除此设置.inputrc并将其定义为.bashrc

bind 'Space: magic-space'
Run Code Online (Sandbox Code Playgroud)