Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim错误E20';标记未设置';运行BuffWrite命令时_Vim_Autocommand - Fatal编程技术网

Vim错误E20';标记未设置';运行BuffWrite命令时

Vim错误E20';标记未设置';运行BuffWrite命令时,vim,autocommand,Vim,Autocommand,我在vimrc中设置了一个自动运行脚本,将3个或更多空换行符的任何块压缩为3个换行符。我设置了一个标记,这样在脚本执行后,我会保留光标位置,但当光标位于要删除的区域内时,会出现E20标记未设置的错误 发生这种情况时,我如何修复此问题/消除错误 .vimrc文件: autocmd BufWrite*mark'| silent!%s/\n\{3,}/\r\r/e | norm'您可以用winsaveview()和winrestview()替换标记 同时使正常命令静音: autocmd BufWrit

我在vimrc中设置了一个自动运行脚本,将3个或更多空换行符的任何块压缩为3个换行符。我设置了一个标记,这样在脚本执行后,我会保留光标位置,但当光标位于要删除的区域内时,会出现E20标记未设置的错误

发生这种情况时,我如何修复此问题/消除错误

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

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


同时使正常命令静音:

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

如果您使用的是
e
flag,则通常不需要
silent!
此功能有效!已使用
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! ''"