【问题标题】:Get current value of a setting in Vim获取 Vim 中设置的当前值
【发布时间】:2025-12-28 15:00:07
【问题描述】:

有没有一种简单的方法可以找出指定 Vim 设置的当前值?如果我想知道 tabstop 的当前值,我可以运行:

:set tabstop

不传递参数,Vim 会告诉我当前值。这对于许多设置来说都很好,但对于那些要么是真要么是假的设置都没有好处。例如,如果我想找出expandtab的当前值,运行:

:set expandtab

实际上会启用expandtab。我只是想知道它是否启用。

这种做我想做的事:

:echo &l:expandtab

但它似乎很冗长。有没有更快的方法?

【问题讨论】:

    标签: vim


    【解决方案1】:

    添加一个?在设置名称后标记,它将显示值

    :set expandtab?
    

    【讨论】:

    • 请注意,set <...>? 语法适用于作为选项的“设置”,但不适用于作为变量的“设置”。因此,例如,要找出当前的语法高亮模式是什么(编码在变量中,而不是选项中),您需要执行echo b:current_syntax
    • 如果您还想查看设置选项的位置,请使用verbose。对于此示例,:verbose set expandtab.
    • 如何查看behave等设置的当前值?我试过behave?set behave?。不幸的是,它们不起作用。
    • @mkobit 我必须使用:verbose set expandtab? 才能工作
    【解决方案2】:

    另外,& 符号可用于表示“选项” - 例如

    let x = &expandtab
    echo &expandtab
    

    【讨论】:

    • 还有获取列表元素值的选项吗? (例如列表字符的空间)
    • 我相信 listchars 是一个普通的字符串,而不是一个列表,虽然我猜你可以做类似split(&listchars, ',')
    【解决方案3】:

    如果您不记得要检查的设置,可以查看所有设置:

    :set all
    

    或显示每个设置,每行一个设置:

    :set! all
    

    【讨论】:

      【解决方案4】:

      还有其他 vim 设置也可以显示,例如:

      :highlight

      有关完整列表,请参阅: http://vim.wikia.com/wiki/Displaying_the_current_Vim_environment

      编辑:对我的回答有一些误解。这不适用于任何命令。但它确实适用于上面 URL 中列出的所有命令。

      【讨论】:

      • 这不起作用。我想检查autowrite 是否打开。 :set autowrite? 完成这项工作。
      • @Atcold:这确实适用于 一些 设置,只有这种类型的查询才有效。
      • @gmarmstrong:我看到答案已经用这样的评论编辑了。