Я написал функциюФункция ест мои пробела
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
, она работает так, как ожидалось. Почему это происходит?
Нет, это не слишком сложно. Это просто факт, который нужно знать, чтобы избежать «неожиданных» сюрпризов :) Хороший намек на использование 'let' вместо этого! – Saucier