我在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'標誌 –