1

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

发生这种情况时如何解决此问题/使错误静音?

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

4

2 回答 2

1

winsaveview()您可以用和替换您的标记winrestview()

autocmd BufWrite * let w:winview = winsaveview() | ... | if exists('w:winview') | call winrestview(w:winview) | endif
于 2015-01-05T21:55:39.320 回答
0

还要使正常命令静音:

autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | silent! exe "norm! ''"
于 2015-01-06T03:49:44.473 回答