【发布时间】:2011-09-05 12:30:32
【问题描述】:
具体来说,我想只在尚未更改的情况下设置 makeprg 选项。有什么办法吗?
【问题讨论】:
标签: vim configuration editor
具体来说,我想只在尚未更改的情况下设置 makeprg 选项。有什么办法吗?
【问题讨论】:
标签: vim configuration editor
您可以使用& 访问选项的内容。因此,在这种情况下,您可以像这样检查选项是否为“空”:
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") 只会在当前不是默认选项时修改选项。
【讨论】:
:verbose set makeprg? 返回 makeprg=make 没有文件名所以我猜这意味着它是默认值。