在Emacs中如何关闭“自动换行”功能?

8
在设置个人Linux命令行开发环境时,我希望在emacs中使用term,因为这样可以切换到“行模式”并将输出复制/粘贴到任何其他缓冲区。
然而,当我在emacs内部的term中运行mysql时,漂亮的SQL表格仍然会根据emacs窗口的宽度自动换行 :(. 我希望emacs能截断bash输出。
有什么方法可以做到这一点吗?
编辑:
toggle-truncate-lines已经开启,所以“自动换行”已经关闭,但问题在于,在emacs对文本进行任何操作之前,底层的bash进程会根据被告知的宽度手动添加换行符来换行文本。至少它的行为是这样的。在term缓冲区中切换truncate lines on/off对我没有任何影响。
5个回答

18

我认为你需要的可能是"M-x toggle-truncate-lines"。这个命令可以在自动换行和需要向右左滚动才能看到整行之间进行切换。


1
这实际上是一个比被接受的答案更好的回答。 - gred

4
您可能希望向SQL钩子添加一些内容以关闭包装:
(add-hook 'sql-interactive-mode-hook '(lambda () (toggle-truncate-lines 1))

4

我认为Emacs可能会设置 COLUMNS 环境变量以指示 shell 应在何时换行。尝试将其设置为非常大的值,看看是否有帮助。

但我不知道这样做会破坏其他什么东西。


1

每当窗口大小调整时,函数term--unwrap-visible-long-lines会被term-reset-size调用,该函数似乎负责不必要的换行,并且无法配置。我通过建议该函数将换行宽度固定为一个较大的值来解决这个问题。

(defun my-prevent-term-unwrap (original-function height width)
  (apply original-function (list height 10000)))

(advice-add 'term-reset-size :around 'my-prevent-term-unwrap) 

1
Meta-X auto-fill-mode

这将切换自动填充模式并停止行包装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接