我很好奇是否有一种方法可以在进入 Vim 时初始化光标样式,防止它保留以前使用的样式。
在我的 Vim 配置文件中 ~/.vimrc ,我包含了以下设置:
if $TERM_PROGRAM =~ "Terminal"
"Mode settings:
let &t_SI.="\e[6 q" "SI = INSERT mode
let &t_SR.="\e[2 q" "SR = REPLACE mode
let &t_EI.="\e[2 q" "EI = NORMAL mode (ELSE)
endif
在我的 zsh 配置文件中 ~/.zshrc ,我实现了以下设置:
bindkey -v
KEYTIMEOUT=1
function zle-keymap-select {
if [[ $KEYMAP == vicmd ]]; then
echo -ne "\e[2 q"
fi
if [[ $KEYMAP == viins ]] ||
[[ $KEYMAP == main ]] ||
[[ $BUFFER == "" ]]; then
echo -ne "\e[6 q"
fi
}
zle -N zle-keymap-select
_fix_cursor() { echo -ne '\e[6 q' }
precmd_functions+=(_fix_cursor)
当我使用或 vim vim filename 在终端中打开 Vim 时,光标会保持按 Enter 键之前的样式(垂直实线)。只有在从插入模式转换回正常模式后,光标样式才能正确恢复到其原始外观(实心块)。