2017-02-06 10 views

答えて

3

大文字と小文字の区別(=~#)パターン一致、[]。この例では、%と一致していて、自分のステータスラインに表示される可能性のある文字の集合です。具体的に:

%[MRHWY]は '%M'、 '%R'、 '%H'、 '%W'、または '%Y' を一致させることができます。

私の場合と同じように、あなたに気を散らすかもしれないのは、できるだけ多くのコレクションに一致するシーケンスパターンの一致、%[]もあるということです。そのルーチンは一致しない最初のアトムで停止します(詳細は例%[]と[]を参照)。ただし、コレクションの前には、%の前に引用符があるため、ここには該当しません。クイック検索で

、私はこのコード行は、それが文字「MRHWY」のシーケンスのステータスラインをチェックfugitive.vimパッケージに使用されて参照してください。

function! fugitive#statusline(...) abort 
    if !exists('b:git_dir') 
    return '' 
    endif 
    let status = '' 
    if s:buffer().commit() != '' 
    let status .= ':' . s:buffer().commit()[0:7] 
    endif 
    let status .= '('.fugitive#head(7).')' 
    if &statusline =~# '%[MRHWY]' && &statusline !~# '%[mrhwy]' 
    return ',GIT'.status 
    else 
    return '[Git'.status.']' 
    endif 
endfunction 

(ところで:あなたの場合例:Mはテキストフラグ、Rは読み取り専用フラグなどです。

+1

シーケンスは '\%[]'、 '[MRHWY]'は次のようになります。コレクション。ステータスライン項目はprintfスタイルなので、 '%'はそこにあります。 &statusline =〜 ''%[MRHWY] 'は、statuslineオプションの値に '%M'または'%R'または '%H'または'%W'または '%Y'のいずれかが含まれている場合を意味します。 – dNitro

+1

@dNitro、ありがとうそれを捕まえるために。 – gregory

関連する問題