我在.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-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中没有其他内容
答案 0 :(得分:1)
我只是试过了,对我也不起作用。但是bind
命令可以正常工作:
bind -m vi-command ' "\C-e": end-of-line '
读取行加载.inputrc
似乎有些奇怪。因此,您可以将bind
命令放入bashrc
文件中。
答案 1 :(得分:0)
根据Chet Ramey的报告,通过bug-bash@gnu.org邮件列表,
这一直存在。默认的readline vi命令模式键盘映射已将^ E切换为emacs编辑模式。以来 bash为此使用了“ set -o emacs”,bash readline初始化代码 解除键序列的绑定。它需要确保它的功能是 仍然是rl_emacs_editing_mode。
他提供了一个补丁,可能不在此处的SO解答范围内,因此我将其链接:http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00217.html
@pynex的解决方法很好。