2015-01-05 30 views
1

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

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

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

+0

你通常并不需要''无语,如果您使用的是'e'标志 –

回答

1

您可以用winsaveview()winrestview()取代你的痕迹。

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

这个工作!使用'autocmd BufWrite *让w:winview = winsaveview()| %s/\ n \ {3,}/\ r \ r \ r/e |如果存在('w:winview')|打电话给winrestview(w:winview)| endif' –

0

而且沉默正常命令:

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