问题 穿越换行符


是否有可能使isearch忽视换行符,即搜索 foo bar 会发现

.......... foo
bar .....

在浏览长文档时,我经常会因为查询失败而感到厌烦,而且相当烦人。我知道 word-search-forward 找到跨行匹配,但它有一些缺点(例如它强迫你使用完整的单词,所以搜索“foo b”会失败;它不会突出显示搜索结果),更重要的是,它有点愚蠢到根据您是搜索一个或两个单词,使用不同的命令。


12614
2018-05-17 09:42


起源

在许多情况下,确保换行符在Emacs中是美观的可能是有用的。使用 global-visual-line-mode 包装行而不影响缓冲区内容。如果有一个跨越行的实际回车,那么看起来它应该是你必须要搜索的东西,因为它是例如段落中断或程序代码中的新语句。 - R. P. Dillon
它 威力 很有用,但这几乎不是标准做法。特别是,我从未遇到过没有硬CR的LaTeX文档。我可以提醒你两者 global-visual-line-mode 和 longlines-mode 在它之前它是相当年轻的emacs标准?很多遗留文件要处理。 - Leo Alekseyev


答案:


使用 C-M-s个  - isearch-forward-regexp。这会将空格字符解释为任何空格字符的标记。


6
2018-05-17 11:22



这很有效。也许我会开始使用regexp isearch而不是常规的isearch然后...注意你还需要自定义 search-whitespace-regexp (看到 C-h v search-whitespace-regexp 详情)。 - Leo Alekseyev
我发现我不需要使用 isearch-forward-regexp 一旦我自定义,以获得所需的行为 search-whitespace-regexp 喜欢的东西 [ \t\r\n]+ 正如文档中所建议的那样。它足以使用 search-forward 照常。 - José Figueroa-O'Farrill
@JoséFigueroa-O'Farrill请在此信息中添加答案。 - Teddy


根据@Teddy的提示,这是我在答案表单中的评论。

为了获得所需的行为,我没有必要自定义 isearch-forward-regexp,但只是定制 search-whitespace-regexp 至 [ \t\r\n]+正如文档中所建议的那样。这样你就可以使用了 search-forward 照常。


4
2018-01-09 20:51



仅此一点对我不起作用。这里的解决方案做了。 (也许是因为我使用的是更新的Emacs版本?) emacs.stackexchange.com/questions/10582/... - Plankalkül


在最近足够的emacs中, isearch-forward-word,这是必然的 M-s w,是一个更简单的解决方案:不需要任何配置 search-whitespace-regexp


1
2018-06-09 02:34