2014-01-24 160 views
0

~/.vimrc,我有兩條線路:Vim:我如何覆蓋全局設置?

set textwidth=80 
au FileType vim set textwidth=200 " I like to live dangerously 

當我打開VIM,set tw顯示200,因爲它應該。但是當我:source ~/.vimrc,set tw顯示80。這是更加明確與set colorcolumn=+1

這是一個特別惱人的邊緣情況下,因爲有一次我會不斷採購.vimrc正在編輯.vimrc,否則我可能會忽略這個問題。

我的問題:我做錯了什麼?如果是這樣,我如何停止tw每次更改I :so ~/.vimrc

回答

0

可能不是一個好的解決方案,但你可以明確地防範它。

if !exists("g:conf_loaded") 
    " do things you only want to do once 
    set textwidth=80 
    let g:conf_loaded = 1 
endif 

或者你可以檢測是否textwidth仍處於默認值:

if &textwidth == 0 
    set textwidth=80 
endif 
0

textwidth設置是當地的一個緩衝區。設置vim文件類型時,每個緩衝區都有一個autocmd運行。這將textwidth設置爲200。然後,您重新輸入~/.vimrc,將textwidth設置爲80.FileType autocmd不會被刷新。

解決方法是刪除textwidth 80行。

1

由於這只是一個極端例子爲.vimrc,我會解決這個與條件是重新應用本地設置到Vimscript中的緩衝區:

set textwidth=80 
au FileType vim setlocal textwidth=200 " I like to live dangerously 
if &filetype ==# 'vim' 
    setlocal textwidth=200 
endif 

請注意,您應該使用:setlocal,而不是:set爲緩衝區本地選項。否則,在編輯Vimscript後你打開的任何新的非Vimscript緩衝區將錯誤地繼承較大的textwidth。