Emacs 中的门户

主要观点:作者在个人仓库中开发了一种在 Emacs 中启动和管理进程的新方式——Portal,它是 shell 的替代品,类似笔记本,部分满足 Prodigy-mode 的需求,名字源于 2007 年的视频游戏 Portal;有主模式,M-!绑定到 Portal 运行 shell 脚本的方式,会在缓冲区插入 nano-ID 并创建对应目录,将 stdout 和 stderr 重定向到文件;目的是避免 Emacs 在运行长时间或大量输出的进程时卡顿,预览每几秒更新一次且行长度限制为 80 列;另一个动机是基于用户体验,方便处理工作中输出大量无用信息的命令;示例展示了运行命令后的输出及不同部分的颜色区分,M-x portal-edit可编辑命令行,M-x portal-rerun可重新运行,新运行的 Portal 有新 nano-ID 可回溯;Emacs 处理 stdout 和 stderr,可理论上管道传输或编辑、重启正在运行的 Portal,且与 envrc 模式完美配合,C-c C-c可中断进程;作者使用几周后对其工作效果和适合工作流感到惊喜,有一个包含 30 个 Portal 的 foo.portals 缓冲区,可保存文件以便重启 Emacs 不丢失数据,不打算将其作为“包”维护,但分享代码供他人使用。

关键信息:

  • 开发的新方式名为 Portal,在个人仓库中。
  • 主模式下M-!与 Portal 运行脚本相关,插入 nano-ID 并创建目录,重定向输出。
  • 设计目的是避免 Emacs 卡顿,预览每几秒更新且行长度限制。
  • 基于用户体验,处理工作中输出无用信息的命令。
  • M-x portal-editM-x portal-rerun等命令,新 Portal 有新 nano-ID 可回溯。
  • 与 envrc 模式配合,C-c C-c可中断进程。
  • 作者使用几周效果良好,有包含多个 Portal 的缓冲区可保存。

重要细节:

  • 输出中的 (0) 表示成功退出,不同部分颜色不同,鼠标放在上面按 RET 可打开文件。
  • 新运行的 Portal 会得到新 nano-ID 以便回溯。
  • Emacs 处理输出,可理论上进行管道等操作但未深入探索。
  • 作者不打算将其作为“包”维护但分享代码。
阅读 16
0 条评论