我写了一个函数
function! BrickWrap(data, icon_align, icon_left, icon_right)
if empty(a:data)
return ''
endif
let l:brick = (a:icon_align ==# 'left') ? a:icon_left . a:data :
\ (a:icon_align ==# 'right') ? a:data . a:icon_right :
\ (a:icon_align ==# 'surround') ? a:icon_left . a:data . a:icon_right :
\ (a:icon_align ==# 'none') ? a:data :
\ ''
if empty(l:brick)
echom 'BrickWrap(): Argument "icon_align" must be "left", "right", "surround" or "none".'
return ''
endif
return l:brick
endfunction
为了格式化显示在我的状态行中的一些数据,例如:
set statusline+=%#User2#%{BrickWrap('some_data','surround','\ ','\ ')}
上面的示例应在每一侧使用空格字符包装数据。但实际上发生的是它只在右边而不是左边附加一个空格字符。为了让空格字符显示在左侧,我必须传递两个转义的空格字符 ( '\ \ '
)。我不得不提到它只发生在状态行中。如果我想要:call
它的功能,它会按预期工作。为什么会这样?