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 也能触发同样的效果。)
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 过来提前占个楼 懂技术并乐意极积无私分享的人越来越少。珍惜 喜欢鼓捣这些软件,现在用得少,谢谢分享! 感谢发布原创作品,程序园因你更精彩 懂技术并乐意极积无私分享的人越来越少。珍惜 谢谢分享,辛苦了 感谢分享,下载保存了,貌似很强大 东西不错很实用谢谢分享 东西不错很实用谢谢分享 感谢分享 热心回复! 收藏一下 不知道什么时候能用到 这个有用。 过来提前占个楼 鼓励转贴优秀软件安全工具和文档! 感谢,下载保存了 谢谢分享,试用一下 很好很强大我过来先占个楼 待编辑 感谢分享,学习下。
页:
[1]
2