Emacs终端列宽(julia/python shell)

2024-04-29 08:35:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将Emacs用作Julia&Python的集成计算环境。ESS(Emacs Speaks Statistics)是一个插件,我用它来交互式地发送选定的代码进行REPL求值。在

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

我面临的挑战是Julia(即使是Python)的终端窗口出于某种原因只使用80 columns作为输出。在

例如,下面的代码如果在Julia会话中执行,将把数据帧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"      |

我甚至尝试过在emacsshell中手动启动Julia会话,M-x shell甚至这样会导致80列的换行。在

但是如果我在一个运行在常规Mac OSX Terminal内的Julia会话中执行相同的代码,则可以正确地使用终端的整个宽度。在

解决方法

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

但是如果我在emacsshell中执行stty size,我得到0 0。不管Emacs窗口的大小是多少,Emacs中的stty总是0 0。在

当我手动更改stty设置时,比如说stty rows 24 cols 160,然后执行julia,我可以从julia那里得到输出来使用所有160列。在

问题

  1. 我如何让Emacs动态地调整stty(设置)或任何能产生预期结果的工具。在
  2. 如果#1是不可能的,并且这是一个折衷的问题,那么是否可以在.emacs文件中设置一个默认使用的静态stty设置。在

我甚至在Linux机器(CentOS)上也尝试过这种方法,但在那里我也遇到了同样的问题。在

谢谢你的帮助。在


Tags: 方法代码终端dfdatasize手动terminal
1条回答
网友
1楼 · 发布于 2024-04-29 08:35:57

在我看到的emacsm-xshell中,有一个emacs=t的envvar,您可以使用它在.bashrc或等效程序中进行sty设置。在

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

希望您能够使用ansi术语,但是如果需要M-xshell,那么像这样的.profile或.bashrc行可能会有用。缺点是它会针对每个用户,而且用户在这些脚本中做的事情大不相同。在

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

相关问题 更多 >