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 관련 완성을 위해 ).

관련 정보