Bash에서 vi 모드를 나타내도록 커서 모양(또는 색상) 변경

Bash에서 vi 모드를 나타내도록 커서 모양(또는 색상) 변경

밝히다:어떻게 하는지 묻는 게 아니야터미널에서 vim을 사용할 때 커서 변경. Bash의 vi 모드에서 입력 모드와 명령 모드 사이를 전환할 때 커서가 변경되기를 원합니다.

set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc... 

내가 찾은대본이렇게 하면 모드가 변경될 때 커서의 색상을 변경할 수 있습니다.다루기 힘든, 하지만 이 기능만을 위해 셸을 변경하고 싶지는 않습니다.

gvim(또는 심지어 색상)처럼 Bash 명령줄에서 명령 모드와 삽입 모드 사이를 전환할 때 커서 모양을 변경하는 방법이 있습니까?

답변1

이 두 줄을~/.inputrc:

set vi-ins-mode-string \1\e[5 q\2
set vi-cmd-mode-string \1\e[2 q\2

답변2

여기에서 복사했습니다 -명령줄 편집 vim 스타일

bash4.3에서 사용 가능해야 합니다 - 참조변경 로그-

j.  New user-settable variable, show-mode-in-prompt, adds a characters to the
    beginning of the prompt indicating the current editing mode.

bash현재 4.3에서는 rc기본 저장소는 아니지만 소스에서 컴파일하지 않고도 대부분의 배포판에 대한 패키지를 얻을 수 있습니다. 예를 들어. 우분투(amd64)여기및 Debian(실험 저장소)여기.

답변3

아직 실제 해결책을 찾지는 못했지만 이것이 귀하(또는 다른 사람)가 더 나은 해결책을 찾는 데 도움이 될 수 있습니다.

스크립트(예: kmtest.sh)를 생성해야 합니다.

#!/bin/bash
# Script "kmtest.sh"

TEST=`bind -v | awk '/keymap/ {print $NF}'`
if [ "$TEST" = 'vi-insert' ]; then
   echo -ne "\033]12;Green\007"
else
   echo -ne "\033]12;Red\007"
fi

PS1에 추가하면 다음과 같이 표시됩니다.

export PS1="\u@\h \$(kmtest.sh)> "

하지만 내가 말했듯이 이것은 cr 다음에 커서 색상만 변경하기 때문에 원하는 것이 아닙니다. 행운을 빌어요

국가 표준

답변4

readline을 해킹하여 이를 수행할 수 있는 방법이 있을 것 같습니다. 어쩌면 우리는 그것을 주류로 밀어 넣을 수 있을까요?

이것이 SO에 대한 나의 대답입니다https://stackoverflow.com/a/12201092/255961더 많은 정보를 얻으면 업데이트하겠습니다.

관련 정보