2017-02-05 6 views
0

私はそうのように定義されたオブジェクトを持っている: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': '|' } 
    \ } 
+3

をなぜあなたはプラグインの課題追跡にそれを聞かないのですか? – romainl

+0

@romainl私は文字列の連結と関係があると感じているので。私が '' foo ''をする時。 fugitive#statusline() '、結果は' foo、GIT(master) 'ですが、' fugitive#statusline()を実行した場合です。 "foo"なら、結果は 'GIT(マスター)foo'でカンマなしです。私が '' foo ''をしたら。 fugitive#head() 'とすると、結果はカンマなしの' foomaster'になります!それは、私が文字列の連結について考えただけではわからないかもしれないと私に信じさせました。それはプラグインに関連していない可能性が高いようです。 – trusktr

+1

@romainlによれば、この問題は 'vim-fugitive'から来ています。 [これらのソースコードの行](https://github.com/tpope/vim-fugitive/blob/444ba9fda5d05aa14c7e8664fa4a66a59c62a550/plugin/fugitive.vim#L3033-L3037)を参照してください。 – dNitro

答えて

0

This code in the fugitive pluginカンマを付加、または角括弧内の要素を囲みます。これらの2つのスタイルは組み込みのステータスライン要素によっても提供されます。

あなたは逃亡者の呼び出しの結果オフのみのサブストリング([1:])を取ることによって、望ましくないコンマを削除することができます

'fugitive': '%{exists("*fugitive#statusline") ? "⎇ " . fugitive#statusline()[1:] : ""}' 
関連する問題