vim:标签后无法匹配空格

时间:2012-08-20 15:15:39

标签: vim

我有这样的文字(1或0标签+第一行的多个空格):

(tab)   There are a tab and 4 whitespaces before me.    // line 1
(tab)     There are a tab and 6 whitespaces before me.  // line 2
       There are 6 whitespaces before me.               // line 3
   There are 4 whitespaces before me.                   // line 4   

当我使用^[\t\s]\s*时,只有第1,2行匹配,第3,4行不匹配,为什么?

(当我使用^\s*时,第3行和第4行可以匹配。)

谢谢!

3 个答案:

答案 0 :(得分:2)

事实证明,您无法使用\s来匹配[]中的空格。 只需使用[]内匹配即可。

答案 1 :(得分:1)

这很有趣。我不确定为什么\s[]括号内不起作用。也许是因为[]定义了明确的字符,而\s是不明确的(它可以代表多个字符)。换句话说,\s代表任何空格,包括标签(\t)。但是,如果您在这种情况下明确指定了一个空格(^[\t ]\s*),它将起作用。

答案 2 :(得分:0)

如上所述,\s[]内不起作用,您也可以使用[:blank:]字符类:

^[[:blank:]]\+