初衷只是为了记述一下在 Bash/Zsh中怎么调用 Vi编辑当前的命令,但一发挥便涉及到了 Bash/Zsh的键绑定的话题,无法打住,只得另立新篇。这里也只说 Bash的键绑定,不会有 Zsh键绑定的内容。
什么是 Bash的键绑定(keybing) 呢?就是在 Bash中的快捷键方案,即相当于某个 IDE的快捷键配置,或者叫 Keymap。比如说 IntelliJ IDEA中可选择的 Keymap有 Eclipse,Emacs,JBuilder,Mac OS X,Mac OS X 10.5+,NetBean,Visual Studio,以满足不同使用者的习惯。
相应的 Bash也为我们提供了两种键绑定的方案,即 emacs(默认)和 vi键绑定类型。
Emacs键绑定
我们大多数天天在 Bash下无意识中使用着 Emacs键绑定类型,即使可能从未用过 Emacs本身。比如我们在 Bash下的按键组合
ctrl + a 跳到命令行的开始
ctrl + e 跳到命令行末尾
!! 重复最后一个命令
ctrl + l 清屏操作,类似于 clear命令
ctrl + c 中断/杀掉当前运行的进程 (SIGINT)
ctrl + d 发送 EOF标记,这会关掉当前的 shell (EXIT)
ctrl + z 发送 SIGTSTP给当前任务,使其挂起送到后台。(所以如果 vi未正常退出,而是按 ctrl + z的话,vi进程还呆在后台
它们都是来自于Emacs键绑定。是不是那么的熟悉啊?阅读全文 >>