找回密码
 立即注册
首页 业界区 安全 Shell Daily 2026-01-10: 沉浸式编辑 (Edit in Editor) ...

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

笙芝 昨天 15:50
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
呼出编辑器后,你可以把它排版成赏心悦目的样子:
  1. for f in *.log; do
  2.     # 甚至可以舒服地加注释
  3.     mv "$f" "${f%.log}.old"
  4.     echo "Processed: $f"
  5. done
复制代码
这不仅清晰,万一执行报错了,按“向上箭头”调出历史,再次 Ctrl+x Ctrl+e 还能回到编辑器继续改。
(注:如果你是 Vim 键位党 (set -o vi),在 Normal 模式下直接按 v 也能触发同样的效果。)

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

相关推荐

您需要登录后才可以回帖 登录 | 立即注册