我在〜/ .vim / plugin / autohighlight.vim下运行以下命令作为vim插件
:autocmd CursorMoved * exe printf('match IncSearch /\<%s\>/', expand('<cword>'))
问题是,除了我正在编辑文件时,它会在任何地方抛出一堆错误。 (文件资源管理器,其他窗口)
有没有办法让脚本只在编辑文件时生效,而不是在VIM中的任何其他地方生效?
答案 0 :(得分:0)
你可以尝试这个:
autocmd CursorMoved * :if filewritable(@%)==1 |
\ call matchadd('IncSearch', '\V\<'.escape(expand('<cword>').'\>', '\'), 10, 1) |
\endif
只有当前缓冲区名称是可写文件(不是目录)时才会突出显示。如果您正在编辑使用BufWriteCmd
执行保存的内容(例如,如果您正在编辑zip存档中的文件),则会失败。
顺便问一下,你能提供这些错误吗?当我使用:e .
时,我得到了一个错误,但它与您正在观察目录的事实无关,这似乎只是因为您忘记了逃避。如果您已写入escape(expand('<cword>'), '\/')
而不是expand('<cword>')
,则不会出现此类错误。