
作者分享了从 Zshell 等转向 Emacs Shell 的体验,介绍了 Eshell 的优势、启动方式、近似 Lisp REPL 的特性,还阐述了变量、循环、文件选择等方面的使用方法。
为何选择 Eshell
传统 shell 在处理大量输出时需借助分页器,而 Eshell 无需操心,可通过快捷键或搜索操作。它还具有行为一致、能使用 Emacs 函数、可定制扩展等优点,不过在程序控制终端时存在不足。
启动与退出 Eshell
作者工作流程由 Emacs 驱动,shell 临时使用。定义了 `eshell-here` 函数,可在窗口下三分之一创建特定缓冲区窗口并启动 Eshell,还定义了 `eshell/x` 函数用于退出并关闭窗口。
近似 Lisp REPL
Eshell 可看作 Lisp REPL,输入命令时去掉括号也能得到相同结果,以 `eshell/` 开头的函数可省略前缀。它兼顾普通 shell 和 Lisp 类型情况,有 `listify` 函数,传递数据给函数时需用花括号。
变量与循环
Eshell 无自己的作用域,变量存储和 Elisp 程序一样。运行 `printenv` 显示环境变量,用 `setq` 赋值普通变量,变量前加 `$` 可访问。它提供类似 shell 的循环语法,通配符能为循环提供列表。
文件选择功能
Eshell 在文件选择方面出色,有借鉴自 Zshell 修饰符的过滤器。包括文件过滤谓词和修饰符,谓词可组合使用,能根据多种条件筛选文件,修饰符用于修改字符串、文件或列表。
编辑观点:Emacs Shell 功能强大且独特,虽有不足但优势明显。对于依赖编辑器工作的人是不错选择,未来有望吸引更多开发者尝试,改变部分用户的 shell 使用习惯。


被折叠的 条评论
为什么被折叠?



