终端中多行编辑技巧

2023-05-12 ⏳0.9分钟(0.3千字)

本文介绍在 terminal 编辑单行命令过长的 tips. 比如编辑一个复杂的 curl.

源起

有时候测试扔过来一个超长的 curl, 这个时候可能我们要稍微调一调参数在请求, 不得不说这个时候很麻烦.

可行的方案

有几个方案如下:

像我这种喜欢在纯 cli 下处理问题的选手来说貌似只能选第一个。

思考

我之前玩过一段时间的 emacs, 后来 team 里有人推广 vim, 现在 neovim 是常用工具. 在 linux 或者类 linux 系统下, terminal 一般会支持 emacs 风格的快捷键, 如下:

key 说明 助记符
ctrl-w 删除你键入的最后一个单词
ctrl-u 可以删除行内光标所在位置之前的内容
ctrl-f 向后移动一个字符 forward
ctrl-b 向前移动一个字符 back
meta-b 和 meta-f 可以以单词为单位移动光标
ctrl-a 可以将光标移至行首 ahead
ctrl-e 可以将光标移至行尾 end
ctrl-k 可以删除光标至行尾的所有内容 kill
ctrl-p 上一行 previous
ctrl-n 下一行 next

然而在你编辑多行的 curl 时仍然难受的厉害, 还不如扔到编辑里去处理.

curl

这个时候你可以键入 c-x c-e, 会打开另外一个编辑器, 该编辑器的指定源自于环境变量 $EDITOR, 如下我的 EDITOR 被设置成了 neovim

➜  ~ echo $EDITOR
nvim

现在可以用 vim or emacs 来快乐编辑了, 退出编辑器修改后的内容就会生效在终端里.

curl

注意, 在默认操作系统下这个变量的值可能是 emacs, 大部分用户可能知道用 vim 退出是 :q, 如果不小心进入了 emacs 模式, 退出是 c-x c-c.