私は、これらの文字列'%[MRHWY]'
と'%[mrhwy]'
が何を意味するこのVimLの正規表現は何を意味していますか? %[MRHWY]
if &foo =~# '%[MRHWY]' && &foo !~# '%[mrhwy]'
のようないくつかのVIMLコードを参照してください?彼らは=~#
比較の文脈で、別の文脈と異なるかもしれない何かを意味していますか?
私は、これらの文字列'%[MRHWY]'
と'%[mrhwy]'
が何を意味するこのVimLの正規表現は何を意味していますか? %[MRHWY]
if &foo =~# '%[MRHWY]' && &foo !~# '%[mrhwy]'
のようないくつかのVIMLコードを参照してください?彼らは=~#
比較の文脈で、別の文脈と異なるかもしれない何かを意味していますか?
大文字と小文字の区別(=~#
)パターン一致、[]
。この例では、%
と一致していて、自分のステータスラインに表示される可能性のある文字の集合です。具体的に:
%[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は読み取り専用フラグなどです。
シーケンスは '\%[]'、 '[MRHWY]'は次のようになります。コレクション。ステータスライン項目はprintfスタイルなので、 '%'はそこにあります。 &statusline =〜 ''%[MRHWY] 'は、statuslineオプションの値に '%M'または'%R'または '%H'または'%W'または '%Y'のいずれかが含まれている場合を意味します。 – dNitro
@dNitro、ありがとうそれを捕まえるために。 – gregory