以前在命令行敲命令时只会 ctrl+actrl+e 移动光标,以及用 ctrl+u 删除所有命令,但是遇到一些需要改一点小参数的命令还是很蛋疼。

后来记得有个叫 fc 的命令,可以用 vim 打开上一条命令并编辑,然后运行,这样就很舒服了。不过在 mac 中用的时候默认会运行刚刚编辑的命令,今天搜了一下,发现可以用 ctrl+x + ctrl+e 来用 vim 编辑当前的命令,并且在保存后就直接显示在当前光标的行,并不运行。

我还记得 ctrl+r 可以搜索历史命令,但是我不知道怎么翻页,然后今天查的时候发现,原来翻页还是按 ctrl+r

对了,还有 ctrl+y 粘贴刚刚删掉的命令,ctrl+_ 是 undo 操作。让光标前移动一个单词是 esc+b 或者是 alt+b,向后移动一个单词是 esc+f 或者 alt+f,其中 alt 开头的我还没找到在 mac 上正确的按法,不过用 esc 也不复杂。

最后还有一个 ctrl+l 有意思,和 clear 命令有相似的效果,但是是把你当前的命令行滚动到第一行。

之前基友跟我说,使用 !! 来指代上一个命令,这样子加 sudo 就很方便了。今天也查到还有更多类似的命令,比如 !ps 找到上一条以 ps 开头的命令并运行(或者按 tab 补全出来),!* 是补全上一个命令除第一个单词以外的部分,!$补全上一个命令最后一个单词,!^上一个命令的第一个参数,!:n 则是第 n 个参数。这几个命令还可以在中间插入几个首字母,就不仅仅是搜索上一个命令了,比如!ps^ 就是上一个以 ps 开头的命令的第一个参数。不过后面这几个用得情况太少了,大概率要忘掉。

09.25 PS: 在服务器上没有装 emacs,用 ctrl+xctrl+e 默认打开 emacs 没成功,查了一下,这个命令会读取 $EDITOR 环境变量来打开编辑器。然后我设置了环境变量就可以用 vim 打开啦。