【问题标题】:emacs space regex searchemacs 空间正则表达式搜索
【发布时间】:2011-04-24 10:46:14
【问题描述】:

我想在行首搜索 x 个空格,使用交互式常规搜索 ^SPC< 选择以可变数量的空格开头的所有行。根据emacs wiki

 (setq search-whitespace-regexp " ")

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

干杯 杰伦

【问题讨论】:

  • 我刚刚遇到了这个(在 emacs 24 中)。我很高兴它很容易禁用。如果我想匹配多个空格,我会自己使用“*”。这比我想要或需要的 emacs 更有“帮助”。

标签: regex search emacs


【解决方案1】:

我认为您观察到的行为是预期的行为。来自search-whitespace-regexp的文档:

如果非零,正则表达式为 匹配一系列空白字符。 [...]当您放置一个或多个空格时 在增量正则表达式中,它代表 为此。

请注意第二句 - 每当您在正则表达式中放置一个(或多个)空格字符时,都会被解释为您输入了 search-whitespace-regexp 的值。由于您将该变量定义为单个空格字符,因此正则表达式中的一个或多个空格字符将仅匹配缓冲区中的单个空格字符。

因此,实现您想要的最简单的方法可能是简单地将变量设置为nil,在这种情况下,在交互式正则表达式搜索中不再以特殊方式处理空格字符。正则表达式中的单个空格字符只会匹配缓冲区中的单个空格字符。

(setq search-whitespace-regexp nil)

【讨论】:

  • @Thomas:我尝试过这个,但是正则表达式增量搜索(似乎)和以前一样。我错过了什么吗?
  • @phimuemue,我不知道 - 我也试过了,它对我有用。
  • @phimuemue,但是,我使用的是 Emacs 23.1.1,并且博士。 jerry 写道,她/他在 23.2 中观察到了新行为。
  • @Thomas:我认为我之前做错了什么,现在它正在工作...... +1
  • @phimuemue,非常酷,很高兴它对你有用!您根本没有使用 GNU Emacs 23.2?!
【解决方案2】:

您可以尝试^[ ]\{5\}< 以获取以 5 个空格开头的行,然后是 <

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2014-06-02
    • 2023-04-10
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多