ChatGPT解决这个技术问题 Extra ChatGPT

如何仅在 Emacs 中启用单词边界上的换行?

如何配置 Emacs 以使换行不会在单词中间中断?

您要更改显示,还是要在哪里插入换行符?
只是显示器。类似于 MS 记事本的行为。
不确定您使用的是哪个版本的记事本,但从 6.1 版(Windows 7 随附)开始,它肯定不会保存换行符。我从来不知道它会这样做。虽然我以前从来没有为任何事情辩护过记事本,但就自动换行而言,它完全完美地实现了这个功能(而且没有互联网讨论!)而每个关于 emacs 如何自动换行的查询总是给你 15 种不同的方式来做它100 个不同的网站、博客、帖子等,当发布者 99% 的时间只是希望它像其他所有现代文本编辑器/查看器一样工作。
对于最初的误导性标题(可能出现在搜索引擎结果中),请参见例如 How can I turn off Emacs's auto line wrapping for the current session?Alt + Xtoggle-truncate-lines(制表符补全有效)将为当前文档关闭自动换行。要使其永久化,vi ~/.emacs 并添加此行:(set-default 'truncate-lines t)(是的,只有一个单引号)。

A
Anton Tarasenko

如果您想模拟记事本等编辑器的行为,您可能需要打开可视行模式。虽然设置 word-wrap 会导致在单词边界处换行,但您对一行执行的任何操作(例如,向上/向下移动或终止)仍将尊重换行符。视觉线模式会将每条显示线视为最后有一个换行符。

(visual-line-mode t)

在 .emacs 文件中添加的行:

(global-visual-line-mode t)

我正在使用 visual-line-mode,但对 kill-line 的方式感到恼火,然后只杀到换行,所以对于长文本行(即段落!)我不得不反复调用它来删除该行。所以现在我用 (setq-default word-wrap t) 代替;这启用了换行,但 kill-line 仍然会杀死整行。当然,您可能不同意这是首选行为,但对我来说肯定是。
@gimboland 谢谢。你的建议正是我想要的。
P
Peter Mortensen

Mx toggle-truncate-lines disable 允许您在视觉上禁用换行。

Mx 自动填充模式 + Mq 允许您为真实的预先存在的段落自动换行。


当您说“真正”时,这是否意味着 emacs 将换行?
我注意到它适用于现有组织文件中的新行。但它不会包装现有的很长的行。知道如何在 org 文件中的某个 col(即 80)处包装现有行吗?谢谢
M-q 运行 fill-paragraph,它将换行已经存在的文本行。变量 fill-column 确定换行文本的行长。
h
huaiyuan

将此添加到您的初始化文件中:

(setq-default word-wrap t)

或者,在 Emacs 中按 Ch vword-wrap 并点击末尾附近的“自定义”链接。


这是最好的答案,并且不使用任何模式。
初始化文件在哪里?你能提供一个示例位置吗?是文件 ~/.emacs 吗?
P
Peter Mortensen

我最近才发现 longlines-mode(我想我是在深入研究 Emacs Info 文档)。它会像您在其他 UI 编辑器的自动换行功能中所期望的那样换行。当我阅读或编写不带换行符的自由文本(a la Microsoft Word)时,它特别有用,而没有使用 M-x toggle-word-wrap 时发生的丑陋的中间换行。

请参阅 LongLines

我的配置:

(setq longlines-wrap-follows-window-size t)
(global-set-key [(control meta l)] 'longlines-mode)

根据 wiki,不推荐使用长线模式以支持视觉线模式(在下面的 Anton 的回答中提到。
配置应该放在哪个文件(包括位置)中?