【问题标题】:In vim, is there a way to :set an option only if it is not set yet?在 vim 中,有没有办法:仅在尚未设置选项时才设置选项?
【发布时间】:2011-09-05 12:30:32
【问题描述】:

具体来说,我想只在尚未更改的情况下设置 makeprg 选项。有什么办法吗?

【问题讨论】:

    标签: vim configuration editor


    【解决方案1】:

    您可以使用& 访问选项的内容。因此,在这种情况下,您可以像这样检查选项是否为“空”:

    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") 只会在当前不是默认选项时修改选项。

    【讨论】:

    • 我不确定 makeprg 的默认值是否为空,我猜默认是 'make'(但可能因操作系统等而异)。:verbose set makeprg? 返回 makeprg=make 没有文件名所以我猜这意味着它是默认值。
    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2015-02-16
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多