質問: viモードが新しい用語で正しく表示されない これは my previous の質問の続きです。私は現在~/.zsh.d/functions.shに次のものを持っていますfunction zle-line-init zle-keymap-select { psvar[1]="${${keymap/vicmd/}/(main|viins)/-- insert --}" zle reset-prompt } precmd() { psvar[2]=() vcs_info [[ -n $vcs_info_msg_0_ ]] && psvar[2]="$vcs_info_msg_0_" } および私の~/.zshrcの関連セクションif [ -d ~/.zsh.d ]; then for i in ~/.zsh.d/*; do if [ -r $i ]; then source $i fi done unset i fi zle -n zle-line-init zle -n zle-keymap-select autoload -uz colors && colors autoload -uz vcs_info zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' formats '[%b]' zstyle ':vcs_info:*' branchformats '[%b|%r]' zstyle ':vcs_info:*' actionformats '[%b|%a]' # 063 is a blue # vimode implentation psvar[1]='-- insert --' local down=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1] local mode="%f{063}%1 %(1v.%1v.)%f" local up=$terminfo[rc] local vimode=$down$mode$up # current working directory as blue local cwd='%f{063}%1~%f' # display git branch if git repo local git='%(2v.%f{099}%2v%f.)' # if root then red # else blue % local prompt_char='%(!.%f{red}%#%f.%f{063}%#%f)' ps1=$'%{$vimode%} $cwd $git $prompt_char ' rps1='%m' preexec () { print -rn -- $terminfo[el]; } これは正しく機能しますが、シェルが最初に起動されたときに-- insert --が表示されず、その後は期待どおりに機能します。他の改善提案を歓迎します。updateなぜそれが機能するのかまだわかりませんが、この問題を回避することにしました。今のところ、開始時に挿入されることがわかっているので、箱から出してpsvar[1]を-- insert --に設定しました。しかし、これは適切な解決策のようには感じられません。
回答: 私のハッカーでは、設定して修正したようですpsvar[1]='-- insert --' 私のvimodeで他のことをする前に...私は自分のソリューションに100%満足しているかどうかはわかりませんが、機能します。