在日常使用电脑时,很多人习惯打开终端查日志、运行脚本或者管理服务器。如果你经常在终端里干活,又喜欢用 Emacs 编辑文本,那完全可以把 Emacs 的操作习惯“搬”到终端里,让整个流程更顺手。
为什么要在终端里配置 Emacs 键位?
比如你在终端输入命令时,突然发现拼错了一个字母,想用 Ctrl+B 退回去修改——这个操作在 Emacs 里再自然不过。默认情况下,大多数终端和 shell 并不支持这些快捷键,但其实 Bash 和 Zsh 都内置了 Emacs 模式,开启后就能用熟悉的组合键来编辑命令行。
打开你的终端,试着按 Ctrl+A,光标会跳到行首;Ctrl+E 跳到行尾;Ctrl+K 删除从光标到行尾的内容。这些是不是很像 Emacs 的操作?它们其实是 readline 库提供的 Emacs 快捷键,默认就存在于大多数 Linux 和 macOS 的终端中。
检查并启用 Emacs 编辑模式
大多数系统默认使用 Emacs 模式,但有时可能被切换到了 Vi 模式。你可以通过下面命令确认当前设置:
set -o | grep emacs
如果看到 emacs on,说明已经启用。如果没有,可以手动打开:
set -o emacs
这个设置只对当前会话有效。要想永久生效,需要写进 shell 的配置文件。
让配置持久化
如果你用的是 Bash,编辑 ~/.bashrc 文件:
echo "set editing-mode emacs" >> ~/.inputrc
或者直接在 ~/.bashrc 里加上:
set -o emacs
保存后运行 source ~/.bashrc 立即生效。Zsh 用户则可以在 ~/.zshrc 中添加:
bindkey -e
这行命令会强制 zsh 使用 Emacs 键位绑定。
常用快捷键实战
配置好了之后,下面这些组合键会让你打命令快不少:
- Ctrl + A:跳到行首
- Ctrl + E:跳到行尾
- Ctrl + B:向左移动一个字符(类似 backward)
- Ctrl + F:向右移动一个字符
- Ctrl + K:删除从光标到行尾
- Ctrl + U:删除整行
- Ctrl + W:删除前一个单词(比如删掉路径中的一级目录)
- Ctrl + Y:粘贴刚才删掉的内容
- Alt + F:向前跳一个单词
- Alt + B:向后跳一个单词
比如你输入了一长串命令:grep error /var/log/app.log | tail -n 20,发现路径写错了,用 Alt+B 可以快速跳到 log 名字前面,Ctrl+W 删掉错误路径,再重新输入,效率比用方向键一个一个挪高得多。
进阶:自定义键位绑定
如果某些快捷键不符合你的习惯,也可以自己改。比如你想把 Ctrl+R 的历史搜索改成 Ctrl+S,可以在 ~/.inputrc 里加:
"\C-s": history-search-forward
注意这里要用转义写法。改完后重启终端或执行 bind -f ~/.inputrc 生效。
很多人一开始觉得这些组合键难记,其实每天敲几遍,一两周就成肌肉记忆了。尤其当你同时在 Emacs 编辑器和终端之间切换时,操作逻辑统一,手感顺滑很多。