2011-11-27 76 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为空。但是,它仍然服从于忽视情况。