Vim错误E20'标记未设置'运行BuffWrite命令时

时间:2015-01-05 21:35:21

标签: vim autocommand

我在我的vimrc中设置了一个自动运行脚本,将3个或更多空换行的任意块压缩到3个换行符。我设置了一个标记,所以在脚本执行后,我保留了我的光标位置,但是当光标位于要删除的区域内时,我得到了E20 标记未设置错误。

如果发生这种情况,我该如何解决这个问题/沉默?

" .vimrc file: autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | norm''

2 个答案:

答案 0 :(得分:1)

您可以使用winsaveview()winrestview()替换您的商标。

autocmd BufWrite * let w:winview = winsaveview() | ... | if exists('w:winview') | call winrestview(w:winview) | endif

答案 1 :(得分:0)

同时使正常命令静音:

autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | silent! exe "norm! ''"