r0b*_*rts 1 command-line keyboard-shortcuts input
一个很奇怪的情况。如果我输入交互式命令 - 在这种情况下tasksh
,nslookup
我不能输入空格。例如:
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),它给出了相同的结果。
最可能的解释是您不小心绑定Space到一个在您的配置文件中没有可见效果的命令。
检查 shell 初始化文件中的stty
命令。这至少会直接影响依赖于终端原始行编辑器的程序,并且可能会间接影响带有像样行编辑器的程序,因为它们试图保持与 stty 设置的兼容。
如果问题只出现在某些程序中,则有问题的配置可能是readline库的配置。这个库被 bash 和许多其他程序使用。如果该密钥在 bash 中有效,但在其他使用 readline 的程序中无效,则可能是因为 bash 覆盖了它。readline 的配置文件是.inputrc
.
如果您只在 bash 中遇到问题,请检查您的.bashrc
(这是任何与终端相关的配置应该去的地方)和其他 bash 配置文件(以防配置在错误的位置)。
在评论中,您提到~/.inputrc
包含
Run Code Online (Sandbox Code Playgroud)Space: magic-space
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)