终端快捷键:提升效率
引言
大多数系统 Shell 默认使用 Bash。如果你是一个 Emacs 用户,不经意在 Bash 按下 C-a,发现竟然可以跳至命令行的开头,C-e 跳至命令行行尾,C-p/C-n 可以调出上一条/下一条历史命令……这些不是巧合。
是的,Bash 支持命令行编辑,允许使用许多不同的按键控制命令行上输入的内容。尤其需要指出的是,Bash 支持 Vi/Emacs 命令查看、修改我们在命令行上输入的内容。不用惊奇,Shell 不允许它们同时生效,这样你就可以避免同时处于 Vi 和 Emacs 模式之中了。
Shell 默认使用 Emacs 命令,称之为 Emacs 模式。当然,我们可以通过下面操作随意切换模式。
# Bash Shell $ set -o vi #切换至 Vi 模式 $ set -o emacs #由 Vi 模式切回到 Emacs 模式 # Zsh $ bindkey -v #设为 Vi 模式 $ bindkey -e #设为 Emacs 模式
下面,我们重点介绍 Bash Emacs 模式下的快捷键。这里列举的操作快捷键与 Emacs 中的不尽相同。
编辑命令
C 代表 Ctrl,C-a 表示按住 Ctrl 键不放再按下 a M 为修饰键,一般为 Alt,M-f 表示按住 Alt 键不放再按下 f
C-a | 跳至命令行行首 |
C-e | 跳至命令行行尾 |
C-f | 向前移动一个字符(chracter) |
C-b | 向后移动一个字符 |
M-f | 向前移动一个单词(word) |
M-b | 向后移动一个单词 |
C-k | 删除当前光标位置到命令行行尾的全部字符(包括光标所在字符) |
C-u | 删除当前光标位置到命令行行首的全部字符(不包括光标所在字符) |
C-w | 删除光标前的一个单词 |
C-d | 删除光标所在的字符 |
C-h | 删除光标前的一个字符,同 Backspace 键 |
M-d | 删除光标位置到光标所在单词末尾 |
C-y | 粘贴刚删除的内容 |
C-t | 交换光标所在字符与其前的字符 |
M-t | 交换光标所在的单词与前面单词的位置 |
搜索
C-p | 上一条命令 |
C-n | 下一条命令 |
C-r | 逆向搜索命令历史记录(按下 C-g 退出搜索) |
C-s | (对 Zsh)正向搜索命令历史记录(按下 C-g 退出搜索),Bash 则锁住屏幕,按下 C-q 解锁屏幕 |
更多
C-m | 相当于“回车键” |
C-i | 相当于 Tab |
C-[ | 相当于 Esc |
C-l | 清屏 |
C-c | 中断命令输入 |
C-d | 退出 Shell |
Shift+→/← | Konsole 中切换多标签页 |
Ctrl+PageDown/PageUp | Gnome Terminal 中切换多标签页 |