Bash '의 vi-mode를 “ 일반 ” Vi 모드 (“ 삽입 ”), KornShell

을 모방하여 줄 시작 부분에 커서를 놓습니다.

셸이 Vi 명령 줄 편집 모드에있을 때 Bash가 KornShell93 (ksh)의 동작을 모방하도록하려고합니다.

KornShell 기본값은 “Vi 일반 모드”(일명 “명령”모드)이며 명령 줄 기록을 뒤로 이동할 때 커서를 명령 줄의 맨 처음에 배치합니다. 이는 “Vi”에있는 Bash와는 대조적입니다. 삽입 모드 “및 명령 줄 끝에.

Bash vi 모드 구성을 명령 모드로 기본 설정 ” , Vi 명령 줄 편집이 활성화되어있을 때 Bash를 “Vi 일반 모드”로 기본 설정하는 방법은 거의 없다고 결론을 내 렸습니다.

5 년이 넘었습니다. s 전 지금, 이것이 그 이후로 변경되었는지 궁금합니다.

그리고 명령 줄의 시작 부분에 커서를 자동으로 배치하는 것은 어떻습니까? 저에게 도움이 될 수있는 알려지지 않은 Readline 마법이 있습니까?

저는 소스에서 컴파일 된 Bash 버전 4.4.5 (1) 릴리스를 사용하고 있습니다 (OpenBSD shells/bash port) on OpenBSD-current (2017 년 1 월).

댓글

  • 데이터 포인트로서 Zsh는 Bash ^ H ^처럼 동작합니다. H ^ H ^ HReadline, ksh와 다릅니다. (Bash '의 동작은 ' 정말 Bash가 아닙니다 ' s, it ' s Readline ' s, Bash가 사용합니다.)

답변

명령 줄에 Esc를 삽입 할 적절한 방법이없는 것 같습니다.

대부분의 alpha/numeric 키가 사용됩니다. Esc는 꽤 멀리 떨어져 있으며 모든 코드 (예 : Alt-j ( 작동)) 원하는 것보다 더 복잡해 보입니다. 따라서 두 개의 키를 구성으로 변환하는 방법이 있습니다. rable string.

해결 방법은 이 답변

의 아이디어를 사용하여 작동합니다.

:

 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-command 모드 줄의 시작 .

또한 Esc를 사용하여 emacs 모드로 전환 할 수 있습니다. e .

댓글

  • 할 수 있습니다 ' 충분히 찬성하지 마세요! emacs 항목을 제거했고 " jk " 단축키 만 필요합니다. ' " kj "가 필요하지 않으므로 간단히 다음과 같이합니다. 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 vi-insert "jk": vi-movement-mode 이제 저는 행복합니다!

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다