【问题标题】:Emacs: how to end sentences on encountering a newlineEmacs:如何在遇到换行符时结束句子
【发布时间】:2014-10-22 04:44:59
【问题描述】:

命令M-a (backward-sentence)M-e (forward-sentence) 分别移动到当前句子的开头和结尾。如果有换行符,我想结束一个句子。因此,我希望 emacs 将以下文本视为两行(即使没有句点)。使用默认配置,emacs 将其视为一个句子。

This is line one
This is line two

我为什么需要这个?

我使用visual-line-mode。所以我的句子从不包含换行符。我正在使用sentence hilight mode,它依赖于emacs“句子结尾”。这在没有期间的情况下会产生问题。例如程序源列表。 (整个程序被emacs视为一行。)

【问题讨论】:

  • 听起来一切正常,除了sentence-highlight-mode 需要调整?即,您正在寻求对 sentence-highlight-mode 的修改,以便即使行尾没有句点,它也会突出显示,而是包含换行符 - 例如,\n?或者,backward-sentenceforward-sentence 的行为是否与您预期的一样,因为没有句号?
  • @lawlist 当前行为:如果光标在第一行,sentence-hilight-mode 会突出显示这两行。期望的行为:如果光标在第一行,sentence-hilight-mode 应该只突出显示第一行。 (这是因为 Emacs 将这两行视为一个句子。)

标签: emacs


【解决方案1】:

\n 添加到sentence-end 的正则表达式的末尾应该可以实现您所寻求的目标——它是通过添加一个类似于\\| 的分隔符然后添加\n 来完成的。

这是sentence-highlight-mode 的默认正则表达式:

(setq sentence-end "[^.].[.?!]+\\([]\"')}]*\\|<[^>]+>\\)\\($\\| $\\|\t\\| \\)[ \t\n]*")

这是sentence-highlight-mode修订正则表达式:

(setq sentence-end "[^.].[.?!]+\\([]\"')}]*\\|<[^>]+>\\)\\($\\| $\\|\t\\| \\)[ \t\n]*\\|\n")

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2010-10-11
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多