oh-my-zsh如何提高生产力的

自从使用MBP以后,对命令行的依赖是越来越重了:)而想提高命令行的生产力,有两个神器不得不提,一个是tmux,一个就是oh-my-zsh。

其实这两个工具几乎所有的运维和开发人员都应该听说过,从github上的star数就能看出来,它们的使用教程也是上随处都是。那还有啥好写的呢?确实,这篇小文,只是想把自己使用的omz的一些经验分享出来,探讨其如何提高生产力的,所以初级使用教程就略过了。

oh-my-zsh如何提高生产力的_第1张图片
8w+的明星项目

我的理解是,omz提供了两个可以更便利的使用命令行的关键工具,或者说方式,那就是主题(Themes)插件(Plugins)。看看官网的wiki就能知道

oh-my-zsh如何提高生产力的_第2张图片
omz的核心在主题和插件

主题

主题的概念就是使用了omz的当前窗口,展示出来的样子。这里又分两个部分,一是命令行能够提示哪些信息,二是当前窗口的配色方案(显示出来的字符是否高亮,如何高亮等)。

基于这两个部分,omz内置了多种多样的主题可以供用户选择,随手发几个

这是缺省主题robbyrussell
oh-my-zsh如何提高生产力的_第3张图片
agnoster
oh-my-zsh如何提高生产力的_第4张图片
avit

从信息的角度看,主要有当前目录,当前用户,权限,当前时间等。还有一个比较重要的就是git的信息(如果在一个git目录下),包括并不限于分支,当前状态等。而且以上这些信息,都可以通过某个图标表现出来,增加了直观感受,例如agnoster。

其实这个也并不神秘,网上有很多教程教大家如何调整命令行提示符和配色方案,看这些主题的源码也是学习的很好方式。不过秉承着拿来主义的精神,选一个自己最中意的即可。例如我用的就是oh-my-git

oh-my-zsh如何提高生产力的_第5张图片
官网多图解析该主题用法

在github上,官方已经给出了不少内置主题,而其他用户也在发布自己的自定义主题。如果想更换现有主题,参考下面提到的一个名为theme的插件即可(random选项比较随意,还是用这个插件方便调整)。

插件

omz的插件,从本质上讲是两种,一种是脚本,多用于自动补全某些命令,或执行某函数;一种是别名(alias),即提供一组内置的简化操作来减少输入量,从而提高生产力。例如git这个插件,展示的部分内置别名。

oh-my-zsh如何提高生产力的_第6张图片
大量的简化git命令的别名

对于第一种脚本的用法,比较典型的是zsh-autosuggestions。这个插件可以在输入的时候显示之前输入过的命令,而不需要频繁使用tab键。这个功能在fish这个shell上是标配,快的不得了,现在zsh总算也支持了。

再比如extract这个插件,支持在命令行对文件进行解压缩,而不用再去背复杂的tar命令,支持的格式也比较丰富,后面有具体的描述。

下面是我整理的一些官方插件的用法,均实测过。但这只是一小部分,大多数还要看使用场景。另外就是第三方插件,可以参考这个awesome项目

https://github.com/unixorn/awesome-zsh-plugins

  1. colorize:cat命令的彩色版,需要python的pygments支持,不太好的地方是cat命令会直接显示到底部,对于大文件不够友好;
  2. copydir: 输入该命令,可以直接拷贝当前路径,相当于输入一个pwd,然后再拷贝
  3. copyfile: 输入该命令,并用一个文件作为参数,则会拷贝该文件的内容到剪贴板,小文件可能更实用
  4. extract: 输入该命令(也可以是一个简简单单的x),可以解压缩任何一个文件,前提是要保证一些真正运行解压缩的命令存在,例如unrar对于rar文件,7za对于7z文件
  5. history: 输入h,等效于输入history,输入hsi+参数,相当于在history列表中搜索含有参数的命令
  6. urltools: urlencode可以对url进行编码,urldecode可以解码url
  7. gitignore: 连接gitignore.io网站可以现在git忽略文件的模板,gi list可结合grep列出感兴趣的需要忽略的特定文件,gi