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