Regex Vim:匹配大括号之间的空格,但不匹配新行上的空格
在vim中,我试图在Regex Vim:匹配大括号之间的空格,但不匹配新行上的空格,regex,vim,Regex,Vim,在vim中,我试图在.coffee文件中突出显示后面的空格(和前面的空格) 因此,在(foo=true,bar=false)中,该方法将突出显示foo之前和false之后的空格 以下是我所拥有的: highlight BraceWhiteSpace ctermbg=red ctermfg=white guibg=#592929 fun! UpdateMatch() if &ft !~ '
.coffee
文件中突出显示后面的空格(
和前面的空格)
因此,在(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]\+)/
这是可行的,除了它还匹配了一个大括号和一个新行上的前导空格,我不希望这样:
)
我正在努力编写一个正则表达式,它有一个回溯功能来检查它是否在行的开头
有人能帮忙吗?试试这句话:
match BraceWhiteSpace /([ \t]\+\|.\+\zs[ \t]\+)/
您可以使用此解决方案,并在
)
后面放置查找:
检查它是否不是行首的lookback应该是
^@(或者如果它不在模式的开头,请使用\\\\^@),这样我的完整模式将是/([\t]\+\|^\@?这对我不起作用,它将行中第一个空格后的所有内容与大括号前的空格匹配。然后,您可以将其延长一点:[\t]\+)\(^[\t]\+)\@@WiktorStribiż如果起作用,您应该将其作为答案发布,并附上一些解释。
[ \t]\+)\(^[ \t]\+)\)\@<!
([ \t]\+\|[ \t]\+)\(^[ \t]\+)\)\@<!