我在我的 vimrc 中设置了一个自动运行脚本,以将 3 个或更多空换行符的任何块压缩为 3 个换行符。我设置了一个标记,因此在脚本执行后,我保留了我的光标位置,但是当光标位于要删除的区域内时,我收到了 E20 Mark not set错误。
发生这种情况时如何解决此问题/使错误静音?
" .vimrc file:
autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | norm''
我在我的 vimrc 中设置了一个自动运行脚本,以将 3 个或更多空换行符的任何块压缩为 3 个换行符。我设置了一个标记,因此在脚本执行后,我保留了我的光标位置,但是当光标位于要删除的区域内时,我收到了 E20 Mark not set错误。
发生这种情况时如何解决此问题/使错误静音?
" .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 * mark ' | silent! %s/\n\{3,}/\r\r\r/e | silent! exe "norm! ''"