1

我有一个 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 的模式以排除命令行缓冲区和其他只读缓冲区?

4

1 回答 1

4

最简单的解决方法是使错误静音:

autocmd CursorHold * silent! checktime

或者,您也可以将其包装在try...中catch /:E11:/。或者,您可以尝试检查命令行窗口:

autocmd CursorHold * if expand('%') !=# '[Command Line]' | checktime | endif
于 2014-08-18T12:30:35.487 回答