原文来自
网易杭州 QA Team
: http://qa.blog.163.com/blog/static/1901470022015520105518641/
作为程序员的我们,平常工作中,最经常使用的软件(工具)可以说是非终端(Terminal)莫属了。甚至可以毫不夸张地说:要是在战争年代,那么终端就是程序员手中的武器。
可是,你们看看周围,平心而论,大家真得都把手中的武器用得娴熟了吗?这些天通过对周围同事日常终端操作习惯的观察,我发现,事实情况并不是那么乐观。首先,来看几个真实的案例——
案例一
案例二
案例三
此刻屏幕前的你,如果从这3个活生生的例子中隐约看到了自己的影子,那么也不要太自责。相信我,只需花上几分钟时间接着把这篇文章看完,然后打开自己的终端,稍微跟着下文的指南练习一下,一定会有不少收获的。在本文的末尾,我们还会一起返回来看看上面这3个例子中,到底应该如何更有效率的光标移动?
那么,就趁现在,就打开你的终端,对照着下面的命令,熟悉一遍操作吧:
光标移动
Ctrl + a # 将光标移至行首
Ctrl + e # 将光标移至行末
Alt + f # 将光标向前(右)移动一个单词
Alt + b # 将光标向后(左)移动一个单词
Ctrl + f # 将光标向前(右)移动一个字符
Ctrl + b # 将光标向后(左)移动一个字符
Ctrl + xx # 在光标当前位置和行首之间切换
命令编辑
Ctrl + d # 删除光标所在位置的一个字符
Ctrl + h # 删除光标前面的一个字符,效果同后退键
Ctrl + w # 删除光标所在位置的单词(向前)
Alt + d # 删除光标所在位置的单词(向后)
Ctrl + l # 清空当前屏幕
Ctrl + k # 剪切光标位置到行末的内容至剪切板
Ctrl + u # 剪切光标位置到行首的内容至剪切板
命令历史
Ctrl + r #搜索最近输入的命令
Ctrl + p #上一个命令
Ctrl + n #下一个命令
!! #重复执行上一个命令
emacs模式和vi模式
这里有一点需要提醒读者的是,上文提到的所有命令,都是`emacs`模式的。由于历史原因,Bash中默认的设置是`emacs`模式,如果读者当中有`vim`高手的话,或许你可以尝试下用`vi`模式来操作Bash终端,那将会是不一样的一种酷炫技能!
将终端的操作模式改成`vi`的方式也很简单,直接在终端中执行`set -o vi`就可以了。如此一来,你就可以使用`vim`中全宇宙最强大的光标移动命令来操作终端命令了,什么`
^
`移动到行首,`$`移动到行尾之类的命令都可以随便用了,简直来去自如,相信平时用惯了`vim`的高手一定会喜欢的。当然,如果不喜欢,你还可以用`set -o emacs`切换回来的。
Shibin@Mac
$
set
-
o vi
重看3个案例
如果屏幕前的你认真看到了这里,相信你自己一定也知道文章一开始的三个真实例子应该怎样纠正了,现在,我们就分别再来看一下这三个案例:
案例一
`ctrl+a`返回行首,添加`./`即可
案例二
`ctrl+a`返回行首,按3次`ctrl+d`删除字符`vim`即可,或者`alt+d`直接一次性删除`vim`这个单词
案例三
`ctrl+a`返回行首,按4次`alt+f`跳到`OnlineIssueLogs`末尾,删除`s`
后记
其它的话不啰嗦,笔者最后就说一句:既然我们免不了每天花那么多时间跟终端(Terminal)打交道,那为何不"咬咬牙"练习30分钟,而后受益30年呢?难道你真的愿意在帮别人在终端上调试命令的时候按狂按
BACKSPACEE和
<--键么?更何况我还没有告诉你本文提到的这些高效的光标移动技能不单单在终端里有使用,它们在浏览器地址栏,搜索栏,文本框,甚至是本地编辑文件名,前端Console调试什么的这些地方都有用武之地你知道么?
后续跟踪(2015-06-29更新)
一些同学反馈说某些Alt组合的键不起作用,这里涉及到计算机发展史上的Meta键,现在的计算机基本上都已经没有这个Meta键了,有兴趣的同学可以看这里——Meta键始末。其实,由于大家使用的终端类型都不一样,有时可能需要做些额外的设置才能使Alt组合键生效,比如说Ubuntu下默认把Alt+F组合键映射成了从菜单栏打开文件。我这边帮大家看了下几个常见的终端,比如Mac自带的终端、iTerms终端以及Ubuntu自带的终端分别需要做如下简单的设置才能让上文提到的Alt组合键生效,大家不妨试试:
iTerms终端iTerms-->Preferences-->Profile
Mac自带终端
终端-->偏好设置-->使用Option键作为Meta键
Ubuntu自带终端
Edit-->Keyboard Shortcuts...-->去掉"Enable menu access keys"
参考资料
Bash Keyboard Shortcuts
http://ss64.com/bash/syntax-keyboard.htm