2014-10-22 21 views
2

命令M-a (backward-sentence)M-e (forward-sentence)分別移至當前句子的開頭和結尾。如果有換行符,我想結束一個句子。因此,我希望emacs將以下文本視爲兩行(即使沒有句點)。使用默認配置,emacs將其視爲單個句子。Emacs:如何在遇到換行符時結束句子

This is line one 
This is line two 

爲什麼我需要這個?

我使用visual-line-mode。所以我的句子從不包含換行符。我正在使用依賴於emacs「句末」的sentence hilight mode。這在無週期的情況下會產生問題。例如程序源碼列表。 (整個計劃被視爲由emacs的一條線。)

+0

這聽起來像一切正常,除了'句子高亮模式「需要調整?也就是說,你正在尋求修改'句子高光模式',這樣即使在一行的末尾沒有句點,而是包含一個新句子 - 例如'\ n',它也會突出顯示。或者,「後退句」和「前句」不是按照你的期望行事,因爲沒有時期? – lawlist 2014-10-22 06:49:42

+0

@lawlist當前行爲:如果光標在第一行上,'sentence-hilight-mode'突出顯示這兩行。 期望的行爲:如果光標在第一行上,'sentence-hilight-mode'應該僅突出顯示第一行。 (發生這種情況是因爲Emacs將這兩行視爲單個句子。) – dips 2014-10-22 09:15:35

回答

3

添加\n的正則表達式的結尾sentence-end要做到你所尋求的目標 - 它完成通過添加一個分隔符,看起來像這樣\\|然後\n

這裏是sentence-highlight-mode默認的正則表達式:

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

這裏是sentence-highlight-mode修訂正則表達式:

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

將此添加到我的'.emacs'文件中有訣竅。 – dips 2014-10-22 16:49:00

相關問題