Emacs 空格正则表达式搜索

3

我想使用交互式正则搜索,在一行开头搜索x个空格,^SPC<选择所有以可变数量的空格开头的行。根据Emacs Wiki

 (setq search-whitespace-regexp " ")

应该解决这个问题,但是它会颠倒行为:当我在搜索中输入多个空格时,它只选择一个空格。我不记得早期的emacs有这种行为(现在使用23.2)。是否有一种方法可以使交互式搜索在输入一个空格时选择一个空格,在输入x个空格时选择x个空格?

谢谢 Jeroen


我刚才在 Emacs 24 中发现了这个问题。我很高兴它很容易被禁用。如果我想匹配多个空格,我会自己使用 " *"。这对于 Emacs 来说比我想要或需要的更加“帮助”。 - Chris
2个回答

6
我认为你观察到的行为是预期的。从search-whitespace-regexp的文档中可以看出:
如果非空,正则表达式匹配一系列空格字符。[...] 当你在增量正则表达式中输入一个空格或多个空格时,它就代表了这个。
请注意第二句话 - 每当您在正则表达式中输入一个单独的(或多个)空格字符时,它会被解释为输入search-whitespace-regexp的值。由于您将该变量定义为单个空格字符,因此正则表达式中的一个或多个空格字符只能匹配缓冲区中的一个空格字符。
因此,最简单的方法可能是将该变量设置为nil,这样交互式正则表达式搜索不再特殊处理空格字符。正则表达式中的单个空格字符只能匹配缓冲区中的单个空格字符。
(setq search-whitespace-regexp nil)

@Thomas:我尝试了这个方法,但是正则表达式增量搜索似乎和以前一样。我有什么遗漏的吗? - phimuemue
@phimuemue,我也不知道 - 我尝试了一下,对我有效。 - Thomas
@phimuemue,然而我使用的是Emacs 23.1.1版本,而Jerry博士写道他在23.2版本中观察到了新的行为。 - Thomas
@Thomas 谢谢!完全正确,我不确定是否应该申请维基/文档更改(参见http://www.emacswiki.org/emacs/RegularExpression) - dr jerry
@dr jerry:你也看到这个子章节了吗?http://www.emacswiki.org/emacs/RegularExpression#toc2 - 它还列出了C-q SPC作为将search-whitespace-regexp设置为nil的替代方法。 - Thomas
显示剩余3条评论

1
你可以尝试使用^[ ]\{5\}<来获取以5个空格开头,后跟一个<的行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接