我想只要是程序员或 DevOps 一定遇到过这样的需求, 例如, 在远程 linux 主机(或 Docker)内操作, 常常需要编辑一些东西, 很希望使用自己习惯的编辑器和键位来编辑, 当然, 如果你远程主机用 VI, 本地用 emacs, 那么这个好消息对你来说不算什么, 但是如果你是我这种, 服务器用 nano 凑合的人, 那么就这就是一个很大的福音.
Craig Barnes / dte · GitLab 这是当年的 dex 编辑器的涅磐重生.
这里只列出一些它最强大的一些地方:
- 所有快捷键都可以定制, 做到这点真不容易!
- 代码高亮支持, 类似于 Ubuntu 下的 nano.
- 即使在远程主机上运行编辑器, 也可以直接和本地的 clipboard 进行交互. (见这个 issue. https://gitlab.com/craigbarnes/dte/-/issues/117) 事实上, 你可以设置不同的快捷键, 分别拷贝到 clipboard 或 primary, 然后选择从不同的地方粘贴.如果你不了解这个功能的痛点, 那么也许你没有这个需求, 可以直接跳过. 不过对于有兴趣了解的, 见这个 reply
- 支持 Emacs 熟悉的命令模式, 即: M-x
总之, 这是目前我知道的纯命令行下操作的定制性最好, 而且非常现代化的编辑器, 没有之一.
也是因为个人太兴奋了, 专门创建了一个小项目, 用来将 任意的可以执行文件,以及相关的依赖文件打包成一个单文件版本
, 如果你现在就想体验, 可以直接访问 package_payload 查看.
这是一个已经打包成单文件的 dte binary, 你可以下载下来, 拷贝到你的远程服务器上,或 docker 里面把玩. 顺便提一句, 这就是一个纯 bash shell 文本格式脚本, 如果你想配置自己的快捷键, 自己修改 dte 的 配置文件, 然后参照 README.md 打包就可以了.
EDIT on 2021/04/26
package_payload 新增了一个 sample, 叫做 docker_bash (原谅我对英文单词的匮乏), 我想这个包可以更清楚表述 dte 以及 package_payload 的使用场景.
简单介绍下, 就是打包了一个单文件版本的 bash shell 脚本, 叫做: docker_bash
你可以这样和 docker 交互:
- docker_bash a_docker_image
- docker_bash a_existing_container
- docker_bash a_failed_container
- docker_bash a_docker_volume
以上四种方式, 都会在容器中启动一个交互的 bash shell, 并且, 你可以直接使用 dte 编辑器来编辑 docker 里面的文件, 我觉得对于经常和 docker 打交道的人来说很方便, 你认为呢?