gpt4 book ai didi

python - Emacs 终端列宽(julia/python shell)

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:29 25 4
gpt4 key购买 nike

我正在尝试使用 Emacs 作为 Julia 和 Python 的集成计算环境。 ESS(Emacs Speaks Statistics)是我用来交互式发送选定代码以进行 REPL 评估的插件。

C-c C-c 选择代码并在第一次使用组合时启动 Julia 解释器,在后续执行中它使用现有的 Julia session .

我面临的挑战是 Julia 的终端窗口(即使使用 Python 也是如此)出于某种原因只使用 80 列 用于输出。

例如,如果在 Julia session 中执行以下代码,则会将 DataFrame df 打印成三组,每组 80 列。即使我的窗口大小可以轻松处理超过 200 个字符。

 using DataFrames
df=readtable("../../data/titanic/data/train.csv")


julia> df[1:2, :]
2x12 DataFrame
| Row | PassengerId | Survived | Pclass |
|-----|-------------|----------|--------|
| 1 | 1 | 0 | 3 |
| 2 | 2 | 1 | 1 |

| Row | Name | Sex |
|-----|-------------------------------------------------------|----------|
| 1 | "Braund, Mr. Owen Harris" | "male" |
| 2 | "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" | "female" |

| Row | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
|-----|------|-------|-------|-------------|---------|-------|----------|
| 1 | 22.0 | 1 | 0 | "A/5 21171" | 7.25 | NA | "S" |
| 2 | 38.0 | 1 | 0 | "PC 17599" | 71.2833 | "C85" | "C" |

我什至尝试在 Emacs shell M-x shell 中手动启动 Julia session ,即使那样也会导致 80 列换行。

但如果我在 Julia session 中执行相同的代码,该 session 在常规 Mac OSX 终端 中运行,将正确使用终端的整个宽度。

解决方法/潜在的罪魁祸首

如果我在我的 OS X 终端 上执行 stty size 我会得到代表我的终端实际大小的正确输出,例如 24 157 .

但是,如果我在 Emacs shell M-x shell 中执行 stty size,我会得到 0 0。无论 Emacs 窗口的大小是什么,stty 在 emacs 内部的结果总是 0 0

当我手动更改 stty 设置时,假设 stty rows 24 cols 160 然后执行 julia 我能够得到我的输出从 julia 消耗所有 160 列。

问题

  1. 如何让 Emacs 动态调整 stty(设置)或任何能产生预期结果的工具。
  2. 如果 #1 不可能,这是我必须处理的妥协,是否可以在 .emacs 文件中设置默认使用的静态 stty 设置。

我什至在 Linux 机器 (CentOS) 上也试过这个,我也遇到了同样的问题。

感谢您的帮助。

最佳答案

在我正在查看的 emacs M-x shell 中,有一个 EMACS=t 的环境变量,您可以使用它从 .bashrc 或等效文件内部进行 stty 设置。

但是,如果您使用“M-x ansi-term”,则完全支持终端大小调整,包括动态调整大小、严格的终端仿真等。更多信息:https://masteringemacs.org/article/running-shells-in-emacs-overview - 如果可能的话,我强烈推荐这条路(假设没有人知道更好的路)。

希望您能够使用 ansi-term,但如果需要 M-x shell,那么像这样的 .profile 或 .bashrc 行可能会起作用。缺点是它会针对每个用户,并且用户在这些脚本中做的事情截然不同。

[ _"$EMACS" = _t ] && stty cols 160

关于python - Emacs 终端列宽(julia/python shell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548289/

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