如何使替换独立于'gdefault'?

时间:2011-11-27 21:24:34

标签: vim

我正在写一个小的Vim脚本。根据选项 gdefault ,替换要么需要包含 / g ,要么不包含。

无论用户的设置如何,如何使替换独立?

除了测试gdefault之外,还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

我不确定你究竟在问什么,但做这样的事情的典型方法是保存使用者的选项设置,将选项更改为你想要的,执行命令,然后恢复用户的设置。如,

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

如果你想更好地使用try / finally结构:

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

答案 1 :(得分:0)

使替换独立于gdefault的另一种方法是使用substitute()函数。

例如:

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

substitute()函数独立于gdefault。此函数中的模式匹配始终表现为设置了magic选项并且cpoptions为空。但是,它仍然遵循ignorecase。