在vim中,我试图在(
之后和)
.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]\+)/
这是有效的,除了它还匹配一个新行上带有前导空格的大括号,我不想要这样做:
)
我正在努力编写一个具有lookbehind的正则表达式来检查它不在行的开头。
有人可以帮忙吗?
答案 0 :(得分:1)
您可以在 )
后使用此解决方案并将其置于后面
[ \t]\+)\(^[ \t]\+)\)\@<!
\(^[ \t]\+)\)\@<!
仅检查是否没有行首,其后是1 +空白,然后是)
,其中1 +空白与)
匹配。
完整的表达:
([ \t]\+\|[ \t]\+)\(^[ \t]\+)\)\@<!
答案 1 :(得分:0)
试试这行:
match BraceWhiteSpace /([ \t]\+\|.\+\zs[ \t]\+)/