这几种移动方式都是有快捷键的。其实一个字符一个字符地移动光标也有快捷键 Ctrl+B 和 Ctrl+F,但是这两个快捷键我们不需要记,有什么能比左右方向键更方便的呢?我们真正要记的是下面这几个:
快捷键功能Ctrl + A 将光标移动到命令行的开头
Ctrl + E 将光标移动到命令行的结尾
Alt + B 将光标向左移动一个单词
Alt + F 将光标向右移动一个单词
这几个快捷键太好记了,A 代表 ahead,E 代表 end,B 代表 back,F 代表 forward。为什么按单词移动光标的快捷键都是以 Alt 开头呢?那是因为按字符移动光标的快捷键把 Ctrl 占用了。但是按字符移动光标的快捷键我们用不到啊,因为我们有左右方向键啊。
在命令行中快速删除文本对输入的内容进行修改也是我们经常要干的事情,对命令行进行修改就涉及到先删除一部分内容,再输入新内容。我们碰到的情况是有时候只需要修改个别字符,有时候需要修改个别单词,而有时候,输入了半天的很长的一段命令,我们说不要就全都不要了,整行删除。常用的删除键当然是 BackSpace 和 Delete 啦,不过一次删除一个字符,是否太慢了呢?那么,请熟记以下几个快捷键吧:
快捷键功能Ctrl + U 删除从光标到行首的所有内容,如果光标在行尾,自然就整行都删除了啊
Ctrl + K 删除从光标到行尾的所有内容,如果光标在行首,自然也是整行都删除了啊
Ctrl + W 删除光标前的一个单词
Alt + D 删除光标后的一个单词
Ctrl + Y 将刚删除的内容粘贴到光标处,有时候删错了可以用这个快捷键恢复删除的内容
效果请看下图:
这几个快捷键也是蛮好记的,U 代表 undo,K 代表 kill,W 代表 word,D 代表 delete, Y 代表 yank。其中比较奇怪的是 Alt+D 又是以 Alt 开头的,那是因为 Ctrl+D 又被占用了。Ctrl+D 有几个意思,在编辑命令行的时候它代表删除一个字符,当然,这个快捷键其实我们用不到,因为 BackSpace 和 Delete 方便多了。在某些程序从 stdin 读取数据的时候,Ctrl+D 代表 EOF,这个我们偶尔会用到。
快速查看和搜索历史命令 对于曾经运行过的命令,除非特别短,我们一般不会重复输入,从历史记录中找出来用自然要快得多。我们用得最多的就是 ↑ 和 ↓,特别是不久前才刚刚输入过的命令,使用 ↑ 向上翻几行就找到了,按一下 Enter 就执行,多舒服。但是有时候,明明记得是不久前才用过的命令,但是向上翻了半天也没找到,怎么办?那只好使用 history 命令来查看所有的历史记录了。历史记录又特别长,怎么办?可以使用 history | less 和 history | grep '...'。但是还有终极大杀招,那就是按 Ctrl+R 从历史记录中进行搜索。按了 Ctrl+R 之后,每输入一个字符,都会和历史记录中进行增量匹配,输入得越多,匹配越精确。当然,有时候含有相同搜索字符串的命令特别多,怎么办?继续按 Ctrl+R,就会继续搜索下一条匹配的历史记录。如下图:
这里,需要记住的命令和快捷键如下表:
命令或快捷键功能history 查看历史记录
history | less 分页查看历史记录
history | grep '...' 在历史记录中搜索匹配的命令,并显示
Ctrl + R 逆向搜索历史记录,和输入的字符进行增量匹配
Esc 停止搜索历史记录,并将当前匹配的结果放到当前输入的命令行上
Enter 停止搜索历史记录,并将当前匹配的结果立即执行
Ctrl + G 停止搜索历史记录,并放弃当前匹配的结果
Alt + > 将历史记录中的位置标记移动到历史记录的尾部