ZSH+gnome 터미널 및 VI 입력 모드: ibeam 또는 블록 커서 표시

ZSH+gnome 터미널 및 VI 입력 모드: ibeam 또는 블록 커서 표시

다양한 방법이 존재합니다ZSH에서 VI 키 바인딩을 사용할 때 삽입 상태인지 일반 상태인지 표시합니다.

그놈 터미널도캐럿을 변경할 수 있습니다에 대한 호출을 통해 블록에서 ibeam으로 .|gconftool-2

삽입 모드에 ibeam이 있고 일반 모드에 블록이 있도록 이 두 가지를 어떻게 결합할 수 있나요?

답변1

질문에 제공된 두 답변 모두 넣기[1,2] 함께, 나는 이것으로 끝납니다:

function zle-line-init zle-keymap-select {
    if [[ $KEYMAP == vicmd ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block
    elif [[ $KEYMAP == (main|viins) ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam
    fi
}
zle -N zle-line-init
zle -N zle-keymap-select

차이점은 프롬프트를 수정하는 대신 $KEYMAP절로 직접 매개변수를 확인 if..fi하고 명령을 실행한다는 점이다.gconftool-2

답변2

최신 버전의 gnome-terminal에서는 다음 이스케이프 시퀀스를 사용하여 커서를 변경할 수 있습니다.

  • \e[0 q또는 \e[ q: 프로필 설정에 정의된 대로 재설정합니다.
  • \e[1 q: 깜박이는 블록
  • \e[2 q: 꾸준한 블록
  • \e[3 q: 밑줄 깜박임
  • \e[4 q: 꾸준한 밑줄
  • \e[5 q: I빔 깜박임
  • \e[6 q: 꾸준한 I빔

예를 들어 이를 인쇄할 수 있습니다 echo -ne '\e[5 q'. mpy의 답변에 표시된 대로 이를 zsh 구성에 연결하세요.

관련 정보