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

如何在Neovim函数中临时更改光标形状?

解决Neovim中临时修改插入模式光标样式的问题

你的函数失效的核心原因是:feedkeys()只是把按键序列放入Vim的输入队列,函数会立刻继续执行后续代码——也就是说,还没等feedkeys里的a<c-x><c-o><escape>执行完毕,&guicursor就已经被改回原来的值了。

可以通过监听InsertLeave事件来解决这个问题,让光标样式在离开插入模式时再恢复,具体修改如下:

function! Cache()
    let oldcursor = &guicursor
    let &guicursor = "i:block"
    " 创建一次性自动命令,离开插入模式时恢复原光标设置
    autocmd InsertLeave * ++once let &guicursor = oldcursor
    call feedkeys("a\<c-x>\<c-o>\<escape>")
endfunction

关键说明:

  • ++once 确保这个自动命令只执行一次,不会对后续操作产生干扰
  • 当feedkeys执行到<escape>回到普通模式时,InsertLeave事件触发,自动恢复原来的guicursor配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:36:21