Emacs终端列宽(茱莉亚/ python外壳)
我试图使用Emacs作为Julia的集成计算环境& Python。 ESS
(Emacs Speaks Statistics)是我用来交互发送REPL评估选定代码的插件。Emacs终端列宽(茱莉亚/ python外壳)
C-c C-c
选择代码,并开始Julia
解释首次组合使用,在后续执行它使用现有Julia
会话。
我面临的挑战是Julia
的终端窗口(即使是Python
也是如此)出于某种原因仅使用80 columns
作为输出。
例如,如果在Julia
会话中执行以下代码,将以三列打印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的外壳M-x shell
内Julia
会话,甚至将导致80列包装。
但是,如果我在Julia
会话中执行的相同代码将在正常Mac OSX Terminal
内运行,将会正确使用终端的整个宽度。
解决方法/潜在的罪魁祸首
如果我执行上stty size
我OS X Terminal
我得到这代表我的终端例如24 157
的实际大小适当的输出。
但是如果我在Emacs shell里执行stty size
M-x shell
我得到0 0
。不管Emacs窗口的大小是什么,Emacs里的stty
的结果总是0 0
。
当我手动更改stty
设置,比如说stty rows 24 cols 160
,然后执行julia
我能够从julia获得我的输出以消耗全部160列。
问题
- 我怎样才能让Emacs的动态调整的stty(设置)或任何机构,将给予预期的结果。
- 如果#1是不可能的,这是一个妥协,我必须处理的是可以在.emacs文件中设置静态stty设置,默认情况下会使用它。
我甚至在Linux机器(CentOS)上试过这个,我也有同样的问题。
感谢您的帮助。
在我看到的emacs M-x shell中,有一个EMACS = t envvar,您可以使用它从.bashrc或同等设置中执行stty设置。但是,如果您使用“Mx ansi-term”,则完全支持终端大小调整,包括动态调整大小,严重终端仿真等。更多信息:https://masteringemacs.org/article/running-shells-in-emacs-overview - 如果可能的话,我会强烈推荐此路径假设没有人知道更好的一个)。
希望你能够使用ansi-term,但是如果需要M-x shell,那么可能会比.profile或.bashrc这样的行有效。缺点是它会按用户使用,而用户在这些脚本中做了大不相同的事情。
[ _"$EMACS" = _t ] && stty cols 160