여러 줄 프롬프트를 사용할 때 akira의 솔루션에는 다음과 같은 문제가 있습니다. ins에서 cmd 모드로 전환 할 때 프롬프트 다시 그리기로 인해 이전 출력에서 몇 줄이 삭제되고 새 프롬프트가 몇 줄 위에 표시됩니다. 줄 수는 프롬프트에 몇 줄이 있는지에 달려 있습니다.
그것을 다루는 방법은 거기 에서 사용 zle-line-finish
하지 않고를 사용하는 zle reset-prompt
것입니다. 예를 들면 :
# perform parameter expansion/command substitution in prompt
setopt PROMPT_SUBST
vim_ins_mode="[INS]"
vim_cmd_mode="[CMD]"
vim_mode=$vim_ins_mode
function zle-keymap-select {
vim_mode="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}"
zle reset-prompt
}
zle -N zle-keymap-select
function zle-line-finish {
vim_mode=$vim_ins_mode
}
zle -N zle-line-finish
그런 다음 오른쪽 프롬프트에 추가 할 수 있습니다 (예 :
RPROMPT='${vim_mode}'
이것은 내 블로그 게시물에서 나온 것입니다.
~
에서Delete
키를 누를 때 삽입 되는 캐릭터를 만났습니다zsh
. 여기에 대해 질문했습니다 : superuser.com/questions/997593/…