ksh
나는 쉘이 Vi 명령줄 편집 모드에 있을 때 Bash가 KornShell93()의 동작을 모방하도록 하려고 합니다.
KornShell은 기본적으로 "Vi 일반 모드"(일명 "명령" 모드)로 설정되어 있으며, 명령줄 기록을 뒤로 탐색할 때 명령줄 맨 처음에 커서를 놓습니다. 이는 "Vi 삽입 모드"와 명령줄 끝에 위치하는 Bash와는 대조적입니다.
"에 대한 응답으로Bash vi 모드 구성은 기본적으로 명령 모드로 설정됩니다.", 이는 Vi 명령줄 편집이 활성화된 경우 Bash를 "Vi 일반 모드"로 기본값으로 설정할 방법이 없다는 결론을 내립니다.
5년이 넘은 일인데 그 이후로 상황이 달라졌는지 궁금합니다.
명령줄 시작 부분에 커서를 자동으로 배치하는 것은 어떻습니까? 이 문제를 해결하는 데 도움이 될 수 있는 내가 모르는 Readline 마법이 있습니까?
shells/bash
저는 현재 OpenBSD(2017년 1월)의 소스(OpenBSD 포트)에서 컴파일된 Bash 버전 4.4.5(1) 릴리스를 사용하고 있습니다.
답변1
명령줄에 Esc를 삽입할 수 있는 방법이 부족한 것 같습니다.
vi-insert
대부분의 키 alpha/numeric
에 사용되지만 . Esc는 멀리 떨어져 있고 Alt-j
(valid)와 같은 코드는 예상보다 더 복잡해 보입니다. 그래서 만드는 방법이 있어요둘키는 구성 가능한 문자열로 변환됩니다.
해결 방법은 다음을 사용하여 작동합니다.이 답변
다음 항목에 추가하세요 .inputrc
.
set editing-mode vi
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
set keymap emacs
"\ee": vi-editing-mode
"jk": "\eejk"
"kj": "\eejk"
set keymap vi-insert
"\ee": emacs-editing-mode
"jk": vi-movement-mode
"kj": vi-movement-mode
set keymap vi-command
"\ee": emacs-editing-mode
이렇게 하면 어디서 시작하든 emacs
또는 vi
둘 다 누르면 jk
vi 명령 모드로 전환됩니다.줄의 시작 부분에.
또한 -를 사용하여 모드로 전환할 수 있습니다 emacs
.Esce