折腾eshell

我的主力Shell 一直是Eshell, 因为我的系统包括Windows/Linux/Mac, 我需要一个跨平台shell

資源:

  1. Master Emacs 的master eshell
  2. Reddit 上面關於的帖子
  3. Youtube 的介紹

https://www.reddit.com/r/emacs/comments/6y3q4k/yes_eshell_is_my_main_shell/

https://www.reddit.com/r/emacs/comments/5qh2sd/using_emacs_27_shell_and_eshell/

插件:

我的配置:

我之前发过关于Eshell 的帖子:

截图:

特性:

  1. 类似fish 的补全
  2. 与Emacs 的完美结合
  3. 跨平台
  4. 可以使用shell 或者lisp 的语法来编写eshell 脚本
  5. 具备主流shell(如bash) 大部分功能

不足:

  1. 不支持输入的重定向
  2. 对top 这些强交互命令支持不好
  3. 缺乏文档

话说,为什么有点链接没有实现缩略图详情的 :zipper_mouth_face:

补充:附加一些我自己日常的Eshell 玩法,之前回帖的时候没有想起来,现在用到又想起来了

  • Eshell 执行着命令,例如ls/cd 等,然后突然想打开某个文件,可以直接在Eshell 使用Emacs 打开目录或者文件,而不需要再在编辑区使用 C-x C-f 打开文件。 eshell

比如我在Eshell窗口 用 cargo new 命令新建了一个Rust 项目了,然后在另外一个打开这个目录/文件。 因为我经常用到dired-other-windowfind-file-other-window, 我就直接用shell 的形式建了alias:

alias fow "find-file-other-window $1"
alias dow "dired-other-window  $1"

意义重大的是:这样就可以将Emacs 的函数当作shell 命令来玩,使Eshell 的shell命令集数量大大增加. @MaskRay

再补充: Eshell 虽说不支持输入重定向,但是Eshell 支持重定向到Emacs, 比如文件,缓冲区,甚至变量:

  • 重定向到 *scratch* 缓冲区
cat mylog.log >> #<buffer *scratch*>
  • 重定向到变量 (这个真的丧心病狂了)

5 个赞