我在寫一個小的Vim腳本。根據選項gdefault,替代或者需要包含/G或沒有。如何獨立於'gdefault'進行替換?
如何讓獨立的替代,而不管用戶的設置的?
除了測試gdefault,有沒有更好的辦法?
我在寫一個小的Vim腳本。根據選項gdefault,替代或者需要包含/G或沒有。如何獨立於'gdefault'進行替換?
如何讓獨立的替代,而不管用戶的設置的?
除了測試gdefault,有沒有更好的辦法?
我不知道你問什麼,但這樣做的典型方法是將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
另一種方法,使取代獨立gdefault的是使用替代()函數來代替。
例如:
call setline('.', substitute(getline('.'), 'something', 'somethingelse', 'g'))
的替代()函數是獨立的gdefault。此函數中的模式匹配總是表現爲魔術選項已設置且cpoptions爲空。但是,它仍然服從於忽視情況。
你有含義的權利。基本上,我在詢問是否有辦法使替代行爲(如gdefault一直在)/(關),而不必單獨詢問它。 (比喻:比較符== ==#,== < - 這是在這個意義上?) – Rook
另一種方法:'執行 'S /財產以後/ somethingelse /'。 (&gdefault?'g':'')' – tungd
@tungd - Certanly更好!好主意。 – Rook