2015-01-05 44 views
1

我在vimrc中設置了一個自動運行腳本,以將任意3個或更多空白換行塊壓縮到3個換行符。我在腳本執行後設置了一個標記,我保留了我的光標位置,但是我得到一個E20 當光標位於正被刪除的區域內時,標記未設置錯誤。當運行BuffWrite命令時,Vim錯誤E20'未設置'

當發生這種情況時,我該如何解決這個問題/保持沉默?

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

+0

你通常並不需要''無語,如果您使用的是'e'標誌 –

回答

1

您可以用winsaveview()winrestview()取代你的痕跡。

autocmd BufWrite * let w:winview = winsaveview() | ... | if exists('w:winview') | call winrestview(w:winview) | endif 
+0

這個工作!使用'autocmd BufWrite *讓w:winview = winsaveview()| %s/\ n \ {3,}/\ r \ r \ r/e |如果存在('w:winview')|打電話給winrestview(w:winview)| endif' –

0

而且沉默正常命令:

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