我在vimrc中设置了一个自动运行脚本,以将任意3个或更多空白换行块压缩到3个换行符。我在脚本执行后设置了一个标记,我保留了我的光标位置,但是我得到一个E20 当光标位于正被删除的区域内时,标记未设置错误。当运行BuffWrite命令时,Vim错误E20'未设置'
当发生这种情况时,我该如何解决这个问题/保持沉默?
" .vimrc file: autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | norm''
我在vimrc中设置了一个自动运行脚本,以将任意3个或更多空白换行块压缩到3个换行符。我在脚本执行后设置了一个标记,我保留了我的光标位置,但是我得到一个E20 当光标位于正被删除的区域内时,标记未设置错误。当运行BuffWrite命令时,Vim错误E20'未设置'
当发生这种情况时,我该如何解决这个问题/保持沉默?
" .vimrc file: autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | norm''
您可以用winsaveview()
和winrestview()
取代你的痕迹。
autocmd BufWrite * let w:winview = winsaveview() | ... | if exists('w:winview') | call winrestview(w:winview) | endif
这个工作!使用'autocmd BufWrite *让w:winview = winsaveview()| %s/\ n \ {3,}/\ r \ r \ r/e |如果存在('w:winview')|打电话给winrestview(w:winview)| endif' –
而且沉默正常命令:
autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | silent! exe "norm! ''"
你通常并不需要''无语,如果您使用的是'e'标志 –