mt3*_*mt3 32 emacs shell zsh eshell
我目前已切换到emacs(aquamacs),我正在将我的整个工作流程一次一步地迁移到它(org-mode,dired等,来自探路者,符号速度等).
我还没有尝试的东西(并且似乎是迄今为止最大的障碍)是内置的emacs shell(shell和/或eshell,这里称为"eshell"),因为zsh设置完美我.不确定是否有办法实质上反映/最小化所需的转换/适应步骤.....
我的问题:
可以被视为zsh的超集(即,eshell可以做zsh可以做的所有事情,还有更多)?我认为与标准shell(bash,zsh,ksh,tcsh等)相比,eshell缺少相当多的东西,否则它将成为标准shell之一(如果以这种方式考虑我是错的,请纠正我).
使用eshell而不是zsh有哪些主要限制?任何人都会从zsh切换到eshell并觉得zsh的某些方面你会非常想念吗?
有谁知道做zsh/eshell功能比较的任何链接/资源?
进一步,任何从一个通常的shell改为eshell的资源?工作流迁移的建议?
如果eshell不像zsh那样"强大",那么eshell对zsh有什么优势呢?有关在emacs中使用eshell的任何提示和技巧,可以说明学习它的时间吗?
应该只是放弃eshell并继续使用zsh,如果它做了我认为我需要的一切?或者是少数"权力工作流程"值得(我不知道)?
thnx提前.
Eri*_*ven 41
关于M-x eshell:
Eshell不是一个独立的shell; 它是在纯elisp中实现的,因此无法在emacs外部运行,这就是为什么它不是标准shell之一.它没有像bash/zsh/etc这样的脚本语言.有; 它有elisp和一些命令解释的东西,使调用elisp更清洁.
我不能和zsh vs eshell说话,但我主要是从bash切换到eshell.95%的时间,eshell会毫无问题地完成我想要或需要的一切.我不把它用于ssh.此外,您无法在进程启动后对其进行后台处理(但您可以将其开始后台运行).
这将是非常困难的,因为zsh有一个完整的脚本语言,而eshell基本上是一个elisp解释器的接口.你在互动外壳中寻找什么?Eshell可能会做大部分工作.命令行上的条件语句和循环?当然.别名,函数,通配符,可编程完成?当然.
我迁移的方式基本上是从头开始.每当我遇到一些我不喜欢或者我希望它做的事情时,我会弄清楚如何让它做我想做的事.例如,eshell使用pcomplete.el进行可编程完成,因此添加完成函数非常简单.
与emacs的集成对我来说是一个巨大的胜利.您可以将elisp函数通过管道传递给shell命令.对于一个愚蠢的例子,尝试:
message "hello world" | cut -f 1 -d ' 'Run Code Online (Sandbox Code Playgroud) 一些命令(特别是grep)被放入emacs缓冲区,因此您可以快速跳转到结果.取决于你在emacs中花费多少时间.如果您在emacs中执行所有操作,那么它很有用,因为有时通过eshell将elisp命令与其他命令组合在一起会更容易.如果你没有发现自己在emacs和shell之间过于频繁地复制和粘贴,那么它可能不会是一场胜利,而你将不得不花时间将它自定义到你对它感到满意的程度.
作为eshell的替代方案,M-x shell运行正常的shell,在其下面解释所有命令(因此无法访问elisp函数),而命令行编辑(因此可编程完成,历史记录等)由emacs完成.我用它来做ssh.
另一种选择是M-x term,它是emacs中的终端模拟器,通常在下面运行一个shell,shell执行所有正常操作.然后绝对不需要转换/适应步骤.
由于eshell允许elisp使用shell命令混合代码,因此它有一些相当不寻常的语法,您需要注意这一点.
需要注意的一点是命令扩展zsh的语法:使用语法
file $(which foo)
Run Code Online (Sandbox Code Playgroud)
但在eshell这意味着基本相同的事情
file (which foo)
Run Code Online (Sandbox Code Playgroud)
这意味着对file评估elisp表达式的结果运行命令(which foo),这通常会导致如下错误:
Symbol's function definition is void: which
事实证明,在eshell中编写它的方法实际上就是这样
file ${which foo}
Run Code Online (Sandbox Code Playgroud)
由于eshell是用平台中立的Emacs Lisp代码编写的,它在Windows本机Emacsen上的工作方式基本上与它在*nix上的工作方式相同,开箱即用(当然你可能会想要coreutils等等); 获得shell-mode了*nix的外壳在那里工作大概是至少有点棘手.
我想我已经看到了完成绝对路径的一些好奇,因为驱动器号后面的冒号,但这不是一个显示阻止...
| 归档时间: |
|
| 查看次数: |
5984 次 |
| 最近记录: |