2016-03-30 10 views
2

vimでは、(の後に、そしての前に空白をハイライトしようとしています。.coffeeのファイルに)があります。Vim:中括弧間の空白を一致させますが、新しい行では使用しません。

(foo = true, bar = false)方法がfoo前とfalseスペースを強調なるように。ここで

は、私が持っているものです。

highlight BraceWhiteSpace ctermbg=red ctermfg=white guibg=#592929 
fun! UpdateMatch()            
    if &ft !~ '^.*\.coffee$'          
     match BraceWhiteSpace /([ \t]\+\|[ \t]\+)/    
    else               
     match NONE            
    endif               
endfun               
autocmd BufEnter,BufWinEnter * call UpdateMatch()     

それはまた、私にはない新しいライン、上の先頭の空白とブレースと一致する以外の重要な部分は、この作品ここ

match BraceWhiteSpace /([ \t]\+\|[ \t]\+)/ 

です欲しい:

私はそれをチェックするために後読みを持っている正規表現を書くのに苦労してい
) 

がSTではありませんラインの芸術。

誰でも手助けできますか?

+0

後方参照、それは行の先頭でないかどうかを確認するためには、単に '^ \ @<あるべき'(またはそれは、パターンの先頭ではない場合、使用! '\ _^\ @<!') –

+0

それで私の完全なパターンは '/([\ t] \ + \ |^\ @<![\ t] \ +)/'でしょう?それは私のために働いていない、それは、ブレースの前にスペースだけで行の最初のスペースの後にすべて一致します。 – thelastshadow

+1

それから、少し長めにすることができます: '[\ t] \ +)\(^ [\ t] \ +)\)\ @<!' –

答えて

1

あなたは後読みでこのソリューションを使用することができますが後)を置い:

[ \t]\+)\(^[ \t]\+)\)\@<! 

\(^[ \t]\+)\)\@<!のみチェックなしスタート-のが存在しない場合1 +空白に続いて)と一致すると、1 +空白に続いて)が続きます。

完全な表現:

([ \t]\+\|[ \t]\+)\(^[ \t]\+)\)\@<! 
0

このラインを試してみる:

match BraceWhiteSpace /([ \t]\+\|.\+\zs[ \t]\+)/ 
関連する問題