程序员,请用好你手中的武器

作为程序员的我们,平常工作中,最经常使用的软件(工具)可以说是非终端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 #下一个命令
  • !! #重复执行上一个命令

Bash中的emacs模式和vi模式

这里有一点需要提醒读者的是,上文提到的所有命令,都是emacs模式的。由于历史原因,Bash中默认的设置是emacs模式,如果读者当中有vim高手的话,或许你可以尝试下用vim模式来操作Bash终端,那将会是不一样的一种酷炫技能!

将终端的操作模式改成vim的方式也很简单,直接在终端中执行set -o vi就可以了。如此一来,你就可以使用vim中全宇宙最强大的光标移动命令来操作终端命令了,什么^移动到行首,$移动到行尾之类的命令都可以随便用了,简直来去自如,相信平时用惯了vim的高手一定会喜欢的。当然,如果不喜欢,你还可以用set -o emacs切换回来的。

$ 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调试什么的这些地方都有用武之地你知道么?

参考资料

Bash Keyboard Shortcuts

Comments !