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

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

나는 방금 이 기적을 발견했고 set -o vi이 vi 쉘 모드를 vi나 vim과 같은 방식으로 사용자 정의할 수 있는지 궁금합니다.

예를 들어, 보다 편리한 키나 키 조합을 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 문서에는 자세한 내용이 포함되어 있습니다.

관련 정보