如何让Emacs识别括号/圆括号后的双空格分隔句子?
解决Emacs句子导航无法识别括号后双空格的问题
Emacs的句子导航功能依赖sentence-end变量定义的正则表达式识别句子边界,默认规则没有覆盖「句号+括号/方括号+双空格」的场景,导致你遇到的跳转异常。
你可以通过自定义sentence-end正则来解决这个问题,让Emacs识别括号/方括号后的双空格作为句子分隔:
(setq sentence-end "\\([。!?]\\|\\.[.[:lower:]]*\\|[!?]+\\)[\"')\\]]*[ \t\n]+")
这个正则的关键部分:
[\"')\\]]*:匹配句子结尾可能带有的引号、圆括号、方括号(支持多个连续符号)[ \t\n]+:匹配符号后的空白(包括双空格、制表符、换行),如果需要严格限定双空格,可替换为(两个空格)
配置完成后,重新打开文件或执行M-x eval-buffer生效,此时forward-sentence和backward-sentence就能正确识别你示例中[cite]后的双空格,将第四、第五句分开。
如果之前设置过sentence-end-without-period,无需取消,新的sentence-end规则会兼容该配置的场景。
内容的提问来源于stack exchange,提问作者matogoro
相关产品推荐
相关产品推荐

