最开始使用 bash 的原生快捷键,即 readline 的 Emacs 模式快捷键,但奈何总是记不住,导致输入效率较低。后来改成将 bash 的输入模式改为 vi 模式(set -o vi
),总算比较顺手,但是也有一些痛点不好解决:
- 到线上服务器查问题时,都是原始的 bash 配置,除非你每次都将当前登录的 shell 设置为 vi 模式输入,否则还是难以高效地输入
- 使用 mysql 等客户端工具时,它们都是默认使用 readline 的 Emacs 模式,此时也需要修改其输入模式
所以还是打算重新使用 bash 的原生快捷键模式,这篇文章主要是对这些快捷键进行总结。
快捷键帮助
bash 的输入使用的是 readline 库,可以通过 man readline
获取其帮助信息。除了 bash 使用 readline 库,很多客户端工具都使用 readline 获取用户输入,所以这些快捷键同样适用于这些工具。
光标移动
快捷键 |
功能 |
注意事项 |
Ctrl-a |
移动到行首 |
|
Ctrl-e |
移动到行尾 |
|
Ctrl-f |
向前移动一个字符 |
|
Ctrl-b |
向后移动一个字符 |
|
Alf-f |
向前移动一个单词 |
|
Alf-b |
向后移动一个单词 |
|
Ctrl-XX |
在行首与当前字符之间来回移动 |
|
文本修改
快捷键 |
功能 |
注意事项 |
Ctrl-d |
删除当前光标所在的字符(即往后删除) |
如果当前没有字符,则等于输入 EOF |
Ctrl-h |
删除当前光标所在的字符(即往前删除) |
|
Alt-d |
删除当前光标所在之后的单词,并添加到 clipboard |
|
Ctrl-w |
删除当前光标之前的单词,并添加到 clipboard |
|
Ctrl-u |
删除从当前光标所在位置,直到行首,并添加到 clipboard |
|
Ctrl-k |
删除从当前光标所在位置,直到行尾,并添加到 clipboard |
|
Ctrl-y |
从 clipboard 获取内容 |
|
ctrl-t |
交换当前光标和前一个字符 |
|
Alt-t |
交换当前单词和前一个单词 |
|
Alt-u |
将当前单词或其后的一个单词变为大写 |
如果传递负参数,可以对前一个单词其作用,通过 Alt-- 传递负参数 |
Alt-l |
将当前单词或其后的一个单词变为小写 |
同上 |
Alt-c |
将当前单词或其后的一个单词变为首字母大写 |
同上 |
命令历史
快捷键 |
功能 |
注意事项 |
Ctrl-p |
从命令历史中获取上一条命令 |
|
Ctrl-n |
从命令历史中获取下一条命令 |
|
Alt-r |
从命令历史中获取一条命令后,放弃对其的修改 |
|
Ctrl-r |
从命令历史中往前搜索 |
采用增量搜索模式 |
Ctrl-o |
运行从 Ctrl-r 中搜索到的命令 |
|
Ctrl-g |
退出命令搜索模式 |
|
Alt-Ctrl-y |
获取上一个命令的第一个参数 |
如果指定参数 n ,可以获取上一个命令的第 n 个参数,通过 Alt + n 插入参数 n |
Alt-. |
获取上一个命令的最后一个参数 |
|
杂项
快捷键 |
功能 |
注意事项 |
Alt-# |
插入注释 |
|
Ctrl-_ 或者 Ctrl-x Ctrl-u |
undo 上一个按键 |
|
Ctlr-e |
从 vi 模式切换为 emacs 模式 |
|
Alt-Ctlr-j |
从 emacs 模式切换到 vi 模式 |
|
Reference
The Best Keyboard Shortcuts for Bash