簡體   English   中英

為什么不能在inputrc中將\\ Ce設置為vi命令鍵盤映射的行尾?

[英]Why can't I set \C-e in inputrc to be end-of-line for vi-command keymap?

我的.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

而且我看不到其他綁定到\\ Ce的內容:

$ bind -p | grep 'C-e'
"\C-e": end-of-line
"\C-x\C-e": shell-expand-line

如果我將其設置為\\ Cl,它將起作用。 那么,在readline的vi模式下\\ Ce有什么我無法覆蓋的特殊之處?

僅當有其他提示時,\\ Ce會導致發出嗶聲。

我的.inputrc中沒有其他內容

我只是嘗試了,對我也不起作用。 但是bind命令可以正常工作:

bind -m vi-command ' "\C-e": end-of-line '

似乎readline加載.inputrc 因此,作為解決方法,您可以將bind命令放入bashrc文件中。

根據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的解決方法工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM