vi 쉘 모드(예: "set -o vi")에 대한 사용자 정의 키 바인딩?

vi 쉘 모드(예: "set -o vi")에 대한 사용자 정의 키 바인딩?

방금 의 경이로움을 발견했습니다 set -o vi. vi 또는 vim을 사용자 정의할 수 있는 것과 동일한 방식으로 이 vi 셸 모드를 사용자 정의할 수 있는지 궁금합니다.

예를 들어, 보다 편리한 키 또는 키 콤보를 esc?

현재 지원되지 않는 경우 일부 사용자 정의에서 프로그램의 소스 코드와 하드코드를 변경하는 것이 얼마나 어렵습니까? 아니면 좋지 않은 생각입니까?

답변1

예, 내장된 기능을 사용하여 키 매핑(vi 또는 emacs 유사 모드)을 변경할 수 있습니다 bind. 이것은 실제로 readline 기능입니다(따라서 bash뿐만 아니라 모든 readline 프로그램에서 vi와 유사한 바인딩을 가질 수 있습니다).

찾고 있는 키는 이며 vi-movement-mode기본값은 \e(escape)입니다. 추가로 다음과 같이 바인딩할 수도 있습니다(이것은 다소 어리석은 일입니다). 두 번째 줄은 이스케이프 바인딩을 제거합니다.

$ bind "=":vi-movement-mode 
$ bind -r "\e"

실행하면 bind -p바인딩할 수 있는 모든 키와 현재 바인딩(있는 경우)이 표시됩니다.

bind에 명령을 넣을 수도 있고, 실행하는 모든 readline 프로그램에 적용되도록 .bashrc편집할 수도 있습니다 . ~/.inputrcreadline 문서에는 자세한 내용이 포함되어 있습니다.

관련 정보