如何在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
相关产品推荐
相关产品推荐

