You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在进入Vim时初始化光标样式,避免继承原有样式?

解决Vim启动时光标样式不初始化的问题

你的现有配置只在模式切换时(比如从插入模式切回普通模式)才会触发光标样式设置,但Vim启动时直接进入普通模式,这个触发条件不满足,所以光标会保留终端里的原有样式(实心竖线)。

修改~/.vimrc配置

在你已有的if $TERM_PROGRAM =~ "Terminal"代码块中,添加启动时强制设置普通模式光标的逻辑,两种可选方案:

方案1:调用终端命令设置(简单直接)

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) 
  " 启动Vim时立即设置普通模式光标样式
  autocmd VimEnter * silent !echo -ne "\e[2 q"
endif 

方案2:用Vim内置函数发送指令(更优雅,无外部命令调用)

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) 
  " 通过Vim内置通道发送光标设置指令到终端
  autocmd VimEnter * call chansend(v:stderr, "\e[2 q")
endif 

原理说明

  • autocmd VimEnter * 会在Vim完全启动完成后执行后续命令,确保覆盖终端的原有光标样式
  • \e[2 q 是对应你配置的普通模式实心块光标指令,和t_EI里的设置保持一致

修改完成后保存~/.vimrc,重启Vim就能看到启动时直接显示正确的实心块光标,无需手动切换模式触发。

内容的提问来源于stack exchange,提问作者LuckyJollyMoments

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:16:15