将VIM命令安装为插件

时间:2011-04-03 14:29:41

标签: vim

我在〜/ .vim / plugin / autohighlight.vim下运行以下命令作为vim插件

:autocmd CursorMoved * exe printf('match IncSearch /\<%s\>/', expand('<cword>'))

问题是,除了我正在编辑文件时,它会在任何地方抛出一堆错误。 (文件资源管理器,其他窗口)

有没有办法让脚本只在编辑文件时生效,而不是在VIM中的任何其他地方生效?

1 个答案:

答案 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>'),则不会出现此类错误。