我在 Bash 上使用 vi 編輯模式。根據man readline
,有幾個預設綁定鍵可在 vi 編輯模式下工作。有些鍵工作正常,但其他一些預設鍵不起作用。
例如,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. */
模式切換鍵是唯一未綁定的鍵。綁定了一些附加鍵(例如,用於特定於 bash 的完成,例如M-$
完成變數名稱)。