Basti's Scratchpad on the Internet

终端快捷键:提升效率

引言

大多数系统 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
Tabelle 1 移动
C-a 跳至命令行行首
C-e 跳至命令行行尾
C-f 向前移动一个字符(chracter)
C-b 向后移动一个字符
M-f 向前移动一个单词(word)
M-b 向后移动一个单词
Tabelle 2 删除
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 中切换多标签页

参考链接

Other posts
comments powered by Disqus