ReadLine 中未绑定的键

ReadLine 中未绑定的键

关于在 Bash 中使用 Readline:

$ cat ~/.inputrc 
"\C-[[Z": complete-command
"\C-[[23~": history-search-backward
"\C-[[24~": history-search-forward

现在在 Gnome 终端中使用 F11 和 F12 键向前/向后搜索历史记录。

但如果我无意中按下 F10 键,它会发出哔哔声并添加波浪符号。我希望它不添加波浪符号(我不确定它是否应该发出哔哔声或什么都不做)。

请帮我做全部未绑定的键不会做诸如插入波浪号之类的无意义的事情。

答案1

据我所知,没有办法在 中为“所有键”设置值.inputrc。但实际上,这在您的用例中并不是真正需要的;您可以意外按下的键数是有限的。

就我个人而言,我一直在使用.inputrc最初从某个非常旧的 SUSE 版本派生而来的文件,但它仍然运行良好,即使在将其复制到其他各种安装和发行版之后也是如此。此文件对 readline 当前未使用的功能键具有明确的“无”映射:

#
# Function keys F1 - F12
#
$if term=linux
#
# On console the first five function keys
#
"\e[[A":    prefix-meta
"\e[[B":    undo
"\e[[C":    ""
"\e[[D":    kill-line
"\e[[E":    ""
$else
#
# The first five standard function keys
#
"\e[11~":   prefix-meta
"\e[12~":   undo
"\e[13~":   ""
"\e[14~":   kill-line
"\e[15~":   ""
$endif
"\e[17~":   ""
"\e[18~":   ""
"\e[19~":   ""
"\e[20~":   ""
"\e[21~":   ""
# Note: F11, F12 are identical with Shift_F1 and Shift_F2
"\e[23~":   ""
"\e[24~":   ""

其中\e[17~对应于F6,依此类推。

无论您使用哪种桌面环境,将未使用的功能键映射到 都应""能避免蜂鸣声和波浪号。我认为最好的办法是找出您容易意外按下的键,并""在 中将它们分配给.inputrc

您也可以使用 禁用终端铃声set bell-style none,也可以在您的 中禁用.inputrc

答案2

~/.config/gtk-3.0/gtk.css对于 gnome-terminal 和 nautilus 等 gtk-3 应用程序,请尝试以下操作:创建(或编辑)包含以下内容的文件:

$ cat ~/.config/gtk-3.0/gtk.css
@binding-set NoKeyboardNavigation {
unbind "F10"
}

* {
gtk-key-bindings: NoKeyboardNavigation
}

对于 gtk-2 应用程序添加此项~/.gtkrc-2.0

binding "NoKeyboardNavigation" {
        unbind "F10"
}

class * binding "NoKeyboardNavigation"

相关内容