gpt4 book ai didi

shell - Emacs:有些程序只能在 ansi-term 下工作,有些程序只能在 shell 下工作

转载 作者:行者123 更新时间:2023-12-04 18:12:32 25 4
gpt4 key购买 nike

相对的 Emacs 新手,只是想调整我的编程工作流程以适应 emacs。到目前为止,我已经发现了 shell-pop,并且我非常喜欢在需要敲击奇怪命令时弹出的按需终端。

到目前为止,我对 Emacs 的了解是 shell是一个不支持任何 ansi 控制代码的“哑”终端,这使得它与试图在终端仿真器上绘制复杂 UI 的 ncurses 之类的东西不兼容。这就是为什么你不能使用 lesstop或类似的 shell 模式。

但是,我似乎遇到了 ansi-term 的问题。 ,这不是它被破解的一切。当然,运行 less 没有问题或 git log甚至nano ,但是当它们在 ansi-term 中运行时,有些东西似乎无法正确显示。 ,如 apt-getnosetests .我不太确定它的名字是什么,但是 apt-get的输出的特点是实时更新最后一行显示的内容,然后在该行上方滚动出不变的文本行。它似乎介于 less 之间。还有一些更笨的东西,比如 cat .不知怎的ansi-term根本不喜欢这样,而且我得到非常乱码的输出,它似乎只在一行上输出所有内容,或者只是通常丢失它的位置并随机输出所有内容。在 nosetests 的情况下,它开始正常,但如果任何库吐出任何 STDERR,输出都会以类似的方式进入 hell 。

通过一些摆弄,似乎可以通过捣碎 C-l 来解决这个问题。和 RET ,但它并不总是可靠的。

有人知道这里发生了什么吗?有什么方法可以修复ansi-term以便它可以正确显示所有内容?或者是否有其他一些我不知道的更好的模式?理想情况下,我想要像 Gnome 终端一样轻松“正常工作”的东西,它可以运行上述所有程序而不会出现任何问题。

谢谢!

最佳答案

我通过注释掉我的整个 .emacs.el 解决了这个问题,然后为文件中的每一行取消注释并重新启动 emacs。我发现仅以下一行是导致该问题的原因:

   '(fringe-mode 0 nil (fringe))

(此行禁用自定义设置变量内部的边缘)。

我猜这是 Emacs 中的一个错误,当任何输出行超过 $COLUMN 列时,禁用边缘会导致 term-mode 严重混淆它的输出。

无论如何,我真的不太喜欢边缘,而且似乎我至少能够在不触发这个问题的情况下禁用左边缘:
(set-fringe-mode (cons 0 8))

关于shell - Emacs:有些程序只能在 ansi-term 下工作,有些程序只能在 shell 下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com