У меня есть объект, определенный следующим образом:Как предотвратить запятую в конкатенации строк VimL?
let g:lightline = {
\ 'component': {
\ 'fugitive': '%{exists("*fugitive#statusline") ? "⎇ " . fugitive#statusline() : ""}'
\ },
\ }
Выход fugitive#statusline()
является GIT(master)
, так что конечная строка, в конце концов, появляется в моем качестве ⎇ ,GIT(master)
строки статуса с запятой.
Почему есть запятая? Как мы можем избежать запятой?
Я использую lightline.vim, чтобы настроить свою строку статуса, и вся конфигурация выглядит следующим образом:
let g:lightline = {
\ 'active': {
\ 'left': [
\ [ 'mode', 'paste' ],
\ [ 'filename', 'readonly', 'modified' ],
\ [ 'fugitive', ],
\ ]
\ },
\ 'inactive': {
\ 'left': [
\ [ 'filename', 'readonly', 'modified' ],
\ [ 'fugitive', ],
\ ]
\ },
\ 'component': {
\ 'readonly': '%{&readonly?"x":""}',
\ 'fugitive': '%{exists("*fugitive#statusline") ? "⎇ " . fugitive#statusline() . "" : ""}'
\ },
\ 'component_visible_condition': {
\ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())'
\ },
\ 'separator': { 'left': '', 'right': '' },
\ 'subseparator': { 'left': '|', 'right': '|' }
\ }
Почему вы не спросите, что на вопрос трекера плагина? – romainl
@romainl Потому что я чувствую, что это связано с конкатенацией строк. Когда я делаю «foo». fugitive # statusline() ', то результатом будет' foo, GIT (master) ', но если я выполняю' fugitive # statusline(). «foo» ', то результатом будет' GIT (master) foo' без запятой. Если я делаю «foo». fugitive # head() ', то результатом будет' foomaster' без запятой! Это заставило меня поверить, что, может быть, я не знаю столько, сколько я думал о конкатенации строк. Вероятно, это не связано с плагином. – trusktr
Как сказал @romainl, этот вопрос исходит от 'vim-fugitive'; См. [Эти строки исходного кода] (https://github.com/tpope/vim-fugitive/blob/444ba9fda5d05aa14c7e8664fa4a66a59c62a550/plugin/fugitive.vim#L3033-L3037) – dNitro