IT이야기

Bash의 Vi 명령 줄 편집에서 명령 모드와 삽입 모드를 구별하는 방법

cyworld 2021. 4. 6. 21:35
반응형

Bash의 Vi 명령 줄 편집에서 명령 모드와 삽입 모드를 구별하는 방법


사용 모드 (명령 또는 편집)에 대한 팁을 제공하지 않기 때문에 vi 모드의 bash가 삽입 모드로 전환 될 때 항상 약간 혼란 스럽습니다. 모드를 구별하는 방법이 있습니까? 커서 색상의 자동 변경 또는 이와 유사한 것일 수 있습니까?


/ etc / inputrc (또는 ~ / .inputrc)에 다음을 추가하십시오.

set show-mode-in-prompt on

이것은 삽입 모드에서 프롬프트 앞에 + 를, bash 4.3의 명령 모드에서 :

편집 : bash 4.4의 최신 버전에서는 기본적으로 "(ins)"또는 "(cmd)"접두사가 붙은 프롬프트가 대신 표시됩니다. 하지만 다음과 같이 변경할 수 있습니다.

set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"

또한 '\ e [1; 31m'과 같은 색상 코드를 사용할 수 있지만 '\ 1'및 '\ 2'로 묶어 읽기 라인을 유지합니다.

set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"

@Isaac Hanson의 답변을 바탕으로 다음을 설정하여 모드를 반영하도록 커서 스타일을 설정할 수 있습니다 (VIM에서와 마찬가지로) .inputrc:

set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2

# optionally:
# switch to block cursor before executing a command
set keymap vi-insert
RETURN: "\e\n"

그러면 삽입 모드에서는 빔 커서가, 일반 모드에서는 블록 커서가 제공됩니다.

기타 옵션 (뒤의 숫자 대체 \e[) :

        Ps = 0  -> blinking block.
        Ps = 1  -> blinking block (default).
        Ps = 2  -> steady block.
        Ps = 3  -> blinking underline.
        Ps = 4  -> steady underline.
        Ps = 5  -> blinking bar (xterm).
        Ps = 6  -> steady bar (xterm).

터미널에서 DECSCURSR (예 : xterm, urxvt, iTerm2)을 지원해야합니다. TMUX는 또한이를 지원합니다 ( TERM=xterm-256colortmux 외부에서 설정 한 경우 ).


korn 셸에서 수년간 vi 모드를 사용한 후, 기본적으로 ESC명령을 입력하기 전에 몇 번만 탭한 ESC다음 i입력을 시작 하도록 스스로 훈련했습니다 .

기본 전제는를 누르면 현재 ESC어떤 모드에 있는지 정확히 알 수 있다는 것입니다.

참조 URL : https://stackoverflow.com/questions/7888387/the-way-to-distinguish-command-mode-and-insert-mode-in-bashs-vi-command-line-ed

반응형