笙芝 发表于 2026-1-10 15:50:00

Shell Daily 2026-01-10: 沉浸式编辑 (Edit in Editor)

Shell Daily 2026-01-10: 沉浸式编辑 (Edit in Editor)

你有没有这种崩溃时刻:正在终端里手搓一条超长的 curl 命令,包含一大堆 Header 和 JSON 数据,突然发现中间漏了一个引号。你只能按住左箭头键,看着光标像蜗牛一样慢慢挪回去,改完再挪回来。
别折磨自己了。Shell 其实允许你调用完整的文本编辑器来编写当前这条命令。
怎么用
在默认的 Shell 模式(Emacs 键位)下,输入到一半时,只需按下组合键:
Ctrl + x,松开后紧接着按 Ctrl + e
系统会立即打开你的默认编辑器(通常是 Vim 或 Nano),并加载你当前已输入的命令。你可以在里面舒适地换行、缩进、查找替换。保存并退出编辑器后,Shell 会自动执行这条命令。

[*]配置:通过 export EDITOR=vim 指定你顺手的编辑器。
[*]兼容性:Bash / Zsh 默认支持。
适用场景

[*]构造复杂请求:编写带有复杂参数的 API 请求或 SQL 语句。
[*]临时脚本逻辑:在命令行里写 if 或 for 循环时,利用编辑器的缩进功能,避免语法错误。
示例 1:拯救长命令
假设你正在写一条复杂的 Docker 启动命令:
docker run -d -p 8080:80 -v /var/data:/data --name web-server ...
写到一半发现挂载路径写错了。直接 Ctrl+x Ctrl+e,进入 Vim,像修改代码一样快速跳转修改,:wq 退出即自动运行。
示例 2:编写多行逻辑
想临时写个循环批量处理文件,在 Prompt 里挤在一行非常容易写错:
for f in *.log; do mv "$f" "${f%.log}.old"; echo "Done $f"; done
呼出编辑器后,你可以把它排版成赏心悦目的样子:
for f in *.log; do
    # 甚至可以舒服地加注释
    mv "$f" "${f%.log}.old"
    echo "Processed: $f"
done这不仅清晰,万一执行报错了,按“向上箭头”调出历史,再次 Ctrl+x Ctrl+e 还能回到编辑器继续改。
(注:如果你是 Vim 键位党 (set -o vi),在 Normal 模式下直接按 v 也能触发同样的效果。)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

司空娅玲 发表于 2026-1-19 00:59:57

过来提前占个楼

宇文之 发表于 2026-1-20 03:22:46

懂技术并乐意极积无私分享的人越来越少。珍惜

钦遭聘 发表于 2026-1-20 05:34:01

喜欢鼓捣这些软件,现在用得少,谢谢分享!

袁可佳 发表于 2026-1-22 10:54:57

感谢发布原创作品,程序园因你更精彩

梁丘艷蕙 发表于 2026-1-26 11:49:04

懂技术并乐意极积无私分享的人越来越少。珍惜

暴灵珊 发表于 2026-1-30 06:56:09

谢谢分享,辛苦了

荏牌 发表于 2026-2-3 10:42:36

感谢分享,下载保存了,貌似很强大

连热 发表于 2026-2-6 09:38:26

东西不错很实用谢谢分享

瞪皱炕 发表于 2026-2-8 21:54:19

东西不错很实用谢谢分享

赙浦 发表于 2026-2-9 22:23:39

感谢分享

即息极 发表于 2026-2-10 02:44:52

热心回复!

章娅萝 发表于 2026-2-10 12:43:26

收藏一下   不知道什么时候能用到

零幸 发表于 2026-2-12 00:30:03

这个有用。

毁抨句 发表于 2026-2-13 17:29:04

过来提前占个楼

届表 发表于 2026-2-13 22:06:16

鼓励转贴优秀软件安全工具和文档!

茅断卉 发表于 2026-2-20 10:01:17

感谢,下载保存了

孓访懔 发表于 2026-2-21 09:25:20

谢谢分享,试用一下

莘度 发表于 2026-2-25 04:42:45

很好很强大我过来先占个楼 待编辑

宿遘稠 发表于 2026-2-26 18:56:38

感谢分享,学习下。
页: [1] 2
查看完整版本: Shell Daily 2026-01-10: 沉浸式编辑 (Edit in Editor)