最新消息:

vim如何验证autocmd事件有没有被成功触发

vim niuge678 846浏览 0评论

vim如何验证autocmd事件有没有被成功触发

vim支持autocmd命令,我迫切想知道的某一event(例如InsertEnter、TextChanged、TextChangedI)有没有触发成功,最终实验出了下面两种方法。

方法一:使用echo命令

打开vim,输入 :autocmd InsertLeave * echo '123InsertLeave'',这样当InsertLeave事件被触发时,就会打印出字符串123InsertLeave。

同样的,可以测试其它事件:

autocmd TextChanged * echo '123TextChanged'
autocmd TextChangedI * echo '123TextChangedI'

但是这种方法有一些问题,当在Insert模式下,echo的信息被隐藏了(Insert一直显示在那里)。所以有了第二种验证方法。

方法二:使用set cursorline命令

第二种方法的原理是,当某个事件触发时,我们让cursorline高亮(证明事件被触发了)。

打开vim,输入 :set cursorline 让cursorline先显示出来(重要),
然后输入下面的autocmd命令

:autocmd InsertEnter * hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white
:autocmd InsertLeave * hi CursorLine cterm=NONE ctermbg=NONE ctermfg=NONE

其中:
cterm=NONE 是最终删除光标线下划线的设置;
ctermbg 设置背景色;
ctermfg 设置和文本颜色(要在图形窗口中使用,请添加参数guibg=darkred guifg=white)。

类似的,我们也可以测试 TextChangedI 事件

:autocmd TextChangedI * hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white
:autocmd InsertLeave * hi CursorLine cterm=NONE ctermbg=NONE ctermfg=NONE
(注意:第二行的InsertLeave的事件是为了还原cursorline的颜色)

有了这两个命令,就可以很方便的验证某个autocmd的event有没有被触发,方便调查问题。

转载请注明:牛哥678 » vim如何验证autocmd事件有没有被成功触发

与本文相关的文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址