Bash 为什么可以';I设置inputrc中的\C-e为vi命令键映射的行尾?
我的.inputrc中有这个,但Control-e在命令模式下不会移动到行的末尾。所有其他绑定都可以工作Bash 为什么可以';I设置inputrc中的\C-e为vi命令键映射的行尾?,bash,readline,Bash,Readline,我的.inputrc中有这个,但Control-e在命令模式下不会移动到行的末尾。所有其他绑定都可以工作 $if mode=vi set show-mode-in-prompt on set keymap vi-insert "\C-e": end-of-line "\C-a": beginning-of-line set keymap vi-command "\C-e": end-of-line "\C-a": beginning-o
$if mode=vi
set show-mode-in-prompt on
set keymap vi-insert
"\C-e": end-of-line
"\C-a": beginning-of-line
set keymap vi-command
"\C-e": end-of-line
"\C-a": beginning-of-line
$endif
我可以看出这需要:
$ bind -p | grep 'end-of-line'
"\C-e": end-of-line
"\eOF": end-of-line
"\e[F": end-of-line
我看不到任何其他东西与\C-e有关:
$ bind -p | grep 'C-e'
"\C-e": end-of-line
"\C-x\C-e": shell-expand-line
如果我将其设置为\C-l,它将工作。那么,在readline的vi模式下\C-e有什么特殊之处,我无法覆盖
唯一的另一个线索是\C-e引起终端嘟嘟声
我的.inputrc中没有其他内容,我刚刚尝试过,但它对我也不起作用。但是
bind
命令工作正常:
bind -m vi-command ' "\C-e": end-of-line '
读线加载
.inputrc
中似乎有点奇怪。因此,作为一种解决方法,您可以将bind
命令放在bashrc
文件中。根据Chet-Ramey通过bug-bash@gnu.org邮寄名单
这是永远存在的。默认读线
vi命令模式keymap已绑定^E以切换到emacs编辑模式。自从
bash使用'set-o emacs'作为bash readline初始化代码
解除键序列的绑定。它需要确保它的功能
绑定到的仍然是rl_emacs_编辑模式
他提供了一个补丁,这可能超出了SO答案的范围,因此我将链接到它:
@pynex的解决方案运行良好。Legend!谢谢那你觉得这像是bash/libreadline的bug吗?是的,我觉得这像是bash/libreadline的bug。您可以将其发布到gnu邮件列表,并请Chet查看。