我正在写一个小的Vim脚本。根据选项 gdefault ,替换要么需要包含 / g ,要么不包含。
无论用户的设置如何,如何使替换独立?
除了测试gdefault之外,还有更好的方法吗?
答案 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。