如何在Vim状态栏中显示wrap/nowrap选项值?
实现Vim状态栏显示wrap/nowrap状态的正确方法
你之前的命令set statusline +=%{execute(':set wrap')}无效的原因是:execute(':set wrap')是用来设置wrap选项的命令,而非获取它的当前状态。要在状态栏显示状态,需要读取选项的当前值并转换为可读文本。
具体实现方式如下:
- 用Vim的选项引用语法
&wrap获取wrap的当前状态(1代表开启,0代表关闭) - 结合Vim的三元表达式,将布尔值转为直观的文本:
%{&wrap ? 'wrap' : 'nowrap'} - 将这段代码追加到你的statusline配置中
示例配置
如果还没有自定义过statusline,可以使用这个基础配置:
set statusline=%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P\ %{&wrap ? 'wrap' : 'nowrap'}
如果已有statusline配置,仅追加状态显示部分即可:
set statusline+=\ %{&wrap ? 'wrap' : 'nowrap'}
说明
&wrap:直接引用wrap选项的当前值? ::Vim的条件表达式,实现"如果开启显示wrap,否则显示nowrap"的逻辑\:添加空格,让状态栏内容的分隔更清晰
配置完成后,执行:set wrap或:set nowrap,就能看到状态栏同步显示对应的状态文本了。
内容的提问来源于stack exchange,提问作者Jim Bollinger
相关产品推荐
相关产品推荐

