0%

bash 快捷键总结

最开始使用 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