【问题标题】:term inside emacs:: how to turn "word wrap" offemacs 中的术语 :: 如何关闭“自动换行”
【发布时间】:2010-10-09 22:41:26
【问题描述】:

在设置我的个人 Linux 命令行开发环境时,我想在 emacs b/c 中使用 term,然后我可以切换到“行模式”并将输出复制/粘贴到任何其他缓冲区。

但是,当我在 emacs 中的 term 内运行 mysql 时,漂亮的 sql 表仍然会根据 emacs 窗口的宽度自动换行 :(。我希望 emacs 会截断 bash 输出。

有没有办法做到这一点?

编辑:

toggle-truncate-lines 已打开,因此“自动换行”已关闭,但问题是在 emacs 甚至对文本进行任何操作之前,底层 bash 进程本身会手动添加换行符以根据它被告知的宽度换行文本它正在使用。至少它是这样的。在 term 缓冲区中切换截断行对我来说没有任何改变

【问题讨论】:

    标签: bash emacs


    【解决方案1】:

    我认为您可能想要的是“M-x toggle-truncate-lines”。这会在换行或要求您左右滚动以查看整行之间切换。

    【讨论】:

    • 这实际上是一个比接受的答案更好的答案。
    【解决方案2】:

    你可能想在 sql 钩子中添加一些东西来关闭包装:

    (add-hook 'sql-interactive-mode-hook '(lambda () (toggle-truncate-lines 1))
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:
        Meta-X auto-fill-mode
        

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

        【讨论】:

          【解决方案5】:

          函数term--unwrap-visible-long-linesterm-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) 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-06-06
            • 1970-01-01
            • 1970-01-01
            • 2018-03-16
            • 1970-01-01
            • 1970-01-01
            • 2010-11-04
            相关资源
            最近更新 更多