具体来说,我只想在尚未更改的情况下设置makeprg选项。有什么办法吗?
答案 0 :(得分:4)
您可以使用&
访问选项的内容。所以在这种情况下,您可以检查选项是否为“空”,如下所示:
if &makeprg == ""
set makeprg=new_value
endif
---编辑---
Xavier明确指出makeprg
的默认值不是空字符串。您可以使用set {option}&
将选项设置为其默认值,因此仅当当前值为默认值时,才能使用以下值更改值:
function! SetMakePrg( new_value )
let cur_value=&makeprg
" let new_val=a:new_value
set makeprg&
if &makeprg == cur_value
" cur_value is default: set to new value
exe "set makeprg=" . a:new_value
else
" cur_value is not default: change it back
exe "set makeprg=" . cur_value
endif
endfunction
因此,只有在当前不是默认选项时,调用call SetMakePrg("my_make")
才会修改该选项。