emacs - 如何在 Emacs 中设置截断行的宽度

标签 emacs spacemacs

我知道 emacs 中有自动填充功能,这很棒,当我希望文本在特定宽度上有换行符时(例如编码时),我会使用它。但是,在编辑和阅读文本时,我不想重新格式化文本(M-q)并插入换行符,因为这在导出文本时看起来很奇怪,例如发送至电子邮件或 Microsoft Word。

emacs“截断行”是完成这项工作的工具吗?似乎是,但我不知道如何设置截断线的宽度,它似乎只能截断屏幕宽度 - 是否有此模式或其他模式的设置?

(我正在使用 spacemacs,但这应该没有多大相关性)

最佳答案

在 emacs 交换 here 中有一段代码截断小于 wincow 的缓冲区的代码。 看看@JeanPierre 的回答。它使用 set-window-margins 请参阅 emacs 手册 here .

它是一个交互式函数,因此在从头开始计算后使用 M-x my/change-window-width 来调用它。

(defun my/change-window-width (width)
"Adjust margins so that window is centered"
  (interactive "NWindow width: ")
  (if (= 0 width)
      (set-window-margins nil 0 0)
    (let* ((cur-width (window-width))
           (cur-m (window-margins))
           (cur-l (if (and cur-m (car cur-m)) (car cur-m) 0))
           (cur-r (if (and cur-m (cdr cur-m)) (cdr cur-m) 0))
           (lr (- (+ cur-l cur-r cur-width) width))
           (left (/ lr 2))
           (right (if (= 0 (% lr 2)) left (1+ left))))
      (set-window-margins nil (max left 0) (max right 0)))))

它是 visual-line-mode 中函数的变体,请参阅文档 here

仅截断缓冲区的一部分,它看起来像 fill-column

关于emacs - 如何在 Emacs 中设置截断行的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112824/

相关文章:

emacs - 在 SMerge 模式下更改字体锁定颜色

emacs - 如何使用Emacs的minibuffer中的软件自动跳转?

Emacs artist-mode(无gui)

vim - 如何在 Vim 中模拟 Emacs 的转置词?

emacs - 使用 helm 在新的水平或垂直分割窗口中打开 emacs 缓冲区

随机化 TODO 列表?

emacs - 如何在 emacs 中用多行替换搜索?

Emacs/Spacemacs — 将 SLIME `eval-last-expression-in-repl` (, s e) 重新绑定(bind)到 ctrl-enter

spacemacs - 完成 ', g g' (spacemacs/jump-to-definition) 后我该如何返回?