방금 의 경이로움을 발견했습니다 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
편집할 수도 있습니다 . ~/.inputrc
readline 문서에는 자세한 내용이 포함되어 있습니다.