bashでvi編集モードのすべての主キーバインディングをオンにする方法は?

bashでvi編集モードのすべての主キーバインディングをオンにする方法は?

Bashはvi編集モードを使用します。によると、man readlinevi編集モードで動作するいくつかの主キーバインディングがあります。一部のキーは正しく機能しますが、他の主キーは機能しません。

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関連の完成のために)。

関連情報