# MacOS 命令行中的快捷操作



这里积累了一些工作中常用的命令行快捷操作，大部分也适用于常见的 Terminal
浏览器、编辑器等有 *输入框/行* 的地方。这里的操作只在 *MacOS* 上有大量的实践，理论上它们中的大部分也同样适用于 *Unix* 系的其他系统上。他们本质上都在使用一个叫做 *readline* 的行编辑的库，它为用户在命令提示符下输入命令时提供了一套便捷的编辑功能，包括常见的移动、剪切、粘贴、历史、补全、撤销和重做等等一系列功能。

## 移动命令

| 命令         | 描述                        |
| ---------- | ------------------------- |
| _Ctrl-a_   | 移动到当前行的开头                 |
| _Ctrl-e_   | 移动到行的末尾                   |
| _Ctrl-f_   | 向前移动字符                    |
| _Ctrl-b_   | 向后移动字符                    |
| _Option-f_ | 前进到下一个单词的末尾。单词由字母和数字组成。   |
| _Option-b_ | 移回当前或上一个单词的开头。单词由字母和数字组成。 |

需要注意的是，我在 *mac* 上使用 *iterm2* 且内置 *zsh* 时，后两个命令需要在 iterm2 开启如下设置
```
Settings -> Profiles -> Keys -> Left/Right Option Key -> Esc+
```
如果使用 *Terminal.app* 等也有类似的配置，能将 *Option* 键绑定为 *Meta* 键。

另外，上述快捷键仅为一个一般描述，基本适用于编辑器、文本框等一切文本操作的地方。并且在大多数软件中使用方向键、 *Option* 或 *Ctrl* 搭配使用方向键，可以达到类似的效果。

## 裁切与粘贴命令

| 命令         | 描述                             |
| ---------- | ------------------------------ |
| _Ctrl-k_   | 从光标处向后裁切至当前行的行尾                |
| _Ctrl-u_   | 从光标处向前裁切至当前行的开头，但在 zsh 中是裁切一整行 |
| _Ctrl-h_   | 从光标处向前裁切一个字母                   |
| _Ctrl-d_   | 从光标处向后裁切一个字母                   |
| _Ctrl-w_   | 从光标处向前裁切一个单词                   |
| _Option-d_ | 从光标处向后裁切一个单词                   |
| _Ctrl-t_   | 转置光标前后的两个字母                    |
| _Option-t_ | 转置光标前后的两个单词                    |
| _Ctrl-y_   | 从光标处粘贴之前裁切的文本                  |
| *Ctrl-_*   | 单步撤销之前执行的命令                    |

这里列举的命令单单掌握几个就足以提升你的工作效率，你若能相互配合，会让光标在你的命令行里行云流水，花里胡哨。显然鼠标是给懒人发明的，而命令才让我们十足极客范儿。

另外该文章将持续更新。

更多可以参考 [这里](https://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html)

