2011-11-27 70 views
2

我在寫一個小的Vim腳本。根據選項gdefault,替代或者需要包含/G或沒有。如何獨立於'gdefault'進行替換?

如何讓獨立的替代,而不管用戶的設置的?

除了測試gdefault,有沒有更好的辦法?

回答

3

我不知道你問什麼,但這樣做的典型方法是將use'rs'選項設置,更改選項保存到你想要的東西,執行命令,然後恢復用戶設置。例如,

let user_gdefault = &gdefault 
set nogdefault 
s/something/something else/g 
let &gdefault = user_gdefault 

如果你想這樣做更好的使用try /終於結構:

let user_gdefault = &gdefault 
try 
    set nogdefault 
    s/something/something else/g 
finally  
    let &gdefault = user_gdefault 
endtry 
+1

你有含義的權利。基本上,我在詢問是否有辦法使替代行爲(如gdefault一直在)/(關),而不必單獨詢問它。 (比喻:比較符== ==#,== < - 這是在這個意義上?) – Rook

+2

另一種方法:'執行 'S /財產以後/ somethingelse /'。 (&gdefault?'g':'')' – tungd

+0

@tungd - Certanly更好!好主意。 – Rook

0

另一種方法,使取代獨立gdefault的是使用替代()函數來代替。

例如:

call setline('.', substitute(getline('.'), 'something', 'somethingelse', 'g')) 

的替代()函數是獨立的gdefault。此函數中的模式匹配總是表現爲魔術選項已設置且cpoptions爲空。但是,它仍然服從於忽視情況。