我希望在Vim
行的开头有匹配空格我想做的PseudoCode
^( )*
我从手册中了解以下内容
notation meaning equivalent decimal value(s)
-----------------------------------------------------------------------
<Space> space 32 *space*
我不知道如何使用十进制值32。
如何在Vim中匹配一个或多个空格?
答案 0 :(得分:75)
打字
/^ \+
在命令模式下,将匹配一行开头的一个或多个空格字符。
输入
/^\s\+
在命令模式下,会在一行开头匹配一个或多个空格字符(制表符等以及空格)。
答案 1 :(得分:13)
顺便说一句,如果您使用hlsearch
选项并且在输入/ *
后整个文字亮起 - 而不仅仅是空格,请不要感到惊讶。那是因为零空间可以匹配任何地方!
因此,匹配零个或多个任何内容只有在与其他内容结合使用时才有用。
澄清问题后补充:
要匹配行开头的一个或多个空格,请执行以下操作:
/^\s\+
请参阅:
:help whitespace
:help /\+
答案 2 :(得分:7)
如果我理解正确..
/ *
将匹配0个或更多空格
/ {0,n}
将匹配0到n个空格(其中n是数字)
从行首开始匹配1个或多个空格:
/^ \+
答案 3 :(得分:6)
Vim行开头的空格:
/^ *
这是:
'/'
进行搜索。'^'
开头行。' '
至少有一个空格。' *'
之后的零个或多个空格。答案 4 :(得分:2)
如果您想要匹配任何类型的空白(无论是空格还是制表符),以下正则表达式都适用
^[\s]*
^
匹配行的开头
[\s]
/ [\t]
匹配空格或制表符(两者似乎都有效,但根据vim文档,您应该使用[\s]
*
提供重复,0或更多。
当然使用/
搜索其他人提到的内容。
答案 5 :(得分:1)
你快到了。你不需要()。正则表达式只是"^ *"
,在Vim中你使用/搜索,所以你输入/^ *
请注意,这与每个行匹配,因为每行都以零或多个空格开头!所以,你真的打算这样吗?如果您的意思是“一个或多个空格”,则需要将*
替换为\+
(在大多数正则表达式语言中,它是+
,但+
在vim中转义) 。所以,/^ \+
答案 6 :(得分:0)
/ *
匹配零个或多个空格。
示例:
/foo *bar
将匹配foobar
,foo bar
,foo bar ,
等等。
请注意,如果您想在示例中使用括号,则需要使用\\
来转义它们。 Vim表达式不是标准的Perl正则表达式,也不是POSIX正则表达式。你的例子是:
\\( \\)*
答案 7 :(得分:0)
要匹配行首的空格或制表符,您还可以使用:^\s*
。
答案 8 :(得分:0)
我认为你真的可以做的是匹配空格,直到某种非空格字符,对吧?试试这个:
^\( \+\)
或者,对于任何类型的空白:
^\(\s\+\)
在Vim中,正则表达式(,)和+需要进行转义。此外,如果您计划使用反向引用,则语法为\ 1(例如,第一组),而不是像Perl那样的$ 1。