【发布时间】:2015-11-15 14:53:31
【问题描述】:
在我的 vim 配置中,我有一个类似的功能
function! StatuslineTrailingSpace()
if !exists('b:statusline_trailing_space_warning')
let b:statusline_trailing_space_warning = &modifiable ? search('\s\+$', 'nw') != 0 ? ' %#warningmsg#[\s]%*' : '' : ''
endif
return b:statusline_trailing_space_warning
endfunction
然后在后面的某处
set statusline+=%{StatuslineTrailingSpace()}
但我看到的是完整的%#warningmsg#[\s]%* 字符串,而不是状态行中的彩色[\s] 标签。
尝试使用%! 而不是this answer 中建议的%{} 似乎不起作用,因为我的vim 给出了错误
line 70:
E539: Illegal character <!>: statusline+=%!StatuslineTrailingSpace()
如何让彩色状态栏正常工作?
【问题讨论】:
-
您知道
%!和%{}之间的区别吗?看起来您想要%!,因为这是将缓冲区考虑在内的那个。 -
@dash-tom-bang 我做到了。但正如我在帖子中所说,vim 在使用
%!时会出错。 -
是的,我现在正在研究这个,因为它很有趣......文档说,
When the option *starts* with "%!"...所以可能只是您需要将整个状态行放入一个函数中。
标签: vim