用增量搜索匹配两个空格


20

使用以下搜索时:

C-s SPC SPC

也匹配单个空格。我想完全匹配两个空格。

Answers:


24

使用M-s SPCISEARCH期间切换匹配空白字面上。从字面上进行匹配时,SPC您键入的每个字符都将单独进行匹配。(这曾经是Emacs的默认行为,顺便说一句。)

要配置此作为默认行为定义选项search-whitespace-regexpnil。(M-x customize-option search-whitespace-regexp。)

请参阅GNU Emacs手册,节点Special Isearch


谢谢你 将.emacs行实际放在其中可能会很好(set-variable 'search-whitespace-regexp nil)。谢谢。
灰色

1
@Gray:set-variable不会持久保存新值,因此不会更改默认行为。我认为M-x customize-option这是需要的。
德鲁

哦,我在dot emacs文件中谈论它。不知道自定义选项。感谢您的编辑。
灰色,0:

3

如果您转义空格字符,则使用regexp增量搜索可以解决此问题:

C-M-s \SPC\SPC

如果您要这样做,还可以使用搜索和替换而无需反斜杠:

M-% SPC SPC

今天,在构建键盘宏时遇到了相同的问题。这个答案为我解决了问题,尽管我不得不使用组合键ESC C-s。另见github.com/leoliu/ggtags/issues/64
JonasDahlbæk17年

3

使用正则表达式搜索会有所帮助,但是您也可以使用在搜索C-q SPC中引用空格来确保搜索的文字空间。

要使用@Rovanion的答案,请使用isearch-forward-regexp

C-M-s C-q SPC C-q SPC

那将搜索两个连续的空格。有趣的是,isearch-forward-regexp需要离散匹配。搜索aaa对于aa只会在第二字符匹配一次,而不是一次。


关于您的最后一个注释,想象一下搜索“零个或多个空格后跟一个东西”,给定N个前导空格字符,需要逐步处理所有N + 1个单独的匹配项。我可以看到这是一个合理的选择,但是这将是一个可怕的默认值。
菲尔斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.