bash で vi-editing-mode のすべてのデフォルトのバインディング キーをオンにするにはどうすればよいですか?

bash で vi-editing-mode のすべてのデフォルトのバインディング キーをオンにするにはどうすればよいですか?

私は Bash で vi-editing-mode を使用しています。によるとman readline、vi-editing-mode では、いくつかのデフォルトのバインド キーが機能しています。一部のキーは正常に機能しますが、他のいくつかのデフォルト キーは機能しません。

例えばman readline

VI Command Mode functions
...
         "C-E"  emacs-editing-mode
...

しかし、bind -p私の Linux ボックスでは、「emacs-editing-mode」はどのキーにもバインドされていないと表示されます。

$ bind -p | grep emacs-editing
# emacs-editing-mode (not bound)

これは正常な状況ですか? bash で vi 編集モードのすべてのデフォルトのバインド キーをオンにするにはどうすればよいですか? .inputrc でキーを手動でバインドする必要がありますか?

答え1

Bashは、これを含むいくつかのデフォルトのreadlineバインディングを変更します。コードはinitialize_readline機能するbashline.c

/* In Bash, the user can switch editing modes with "set -o [vi emacs]",
   so it is not necessary to allow C-M-j for context switching.  Turn
   off this occasionally confusing behaviour. */

モード切り替えキーだけがバインドされていないキーです。いくつかの追加キーはバインドされています (たとえば、M-$変数名の補完などの bash 固有の補完用)。

関連情報