我有一个au命令来检查文件是否被更改:
autocmd CursorHold * checktime
但是当我使用q:
或q/
启动命令行窗口时,我会得到以下错误:
Error detected while processing CursorHold Auto commands for "*":
E11: Invalid in command-line window; <CR> executes, CTRL-C quits: checktime
Press ENTER or type command to continue
我的问题是,是否有可能设置autocmd的模式来排除命令行缓冲区和其他只读缓冲区?
最简单的修复方法就是将错误静音:
autocmd CursorHold * silent! checktime
或者,您也可以将其包装在try
…catch /:E11:/
。或者,您可以尝试检查命令行窗口:
autocmd CursorHold * if expand('%') !=# '[Command Line]' | checktime | endif