zoukankan      html  css  js  c++  java
  • 我在用的mac软件(2)-终端环境之zsh和z(*nix都适用)

    继续上篇介绍我的终端环境。这篇介绍zsh和z,其实这不局限于os x,在所有的*nix系统中都是可用的。

    zsh

    zsh作为bash的替代品,自然很多人要问:why zsh? 在Zsh Workshop 有个长长的功能列表,用来回答这个问题。这里讲下我选择zsh的原因,当然,也是介绍zsh强大的功能。

    1. 兼容bash。这使得切换到zsh没有任何成本。
    2. OS X默认的bash版本实在是太老了啊……
    3. 拼写纠正。你总会不小心打错命令。这时,zsh会进行自动拼写纠正,如图:
    4. 更强大的补全。
      • 连按两次tab会列出所有的补全列表并直接开始选择。如图: 并且可以用方向键来选择,但是对我这种很少用方向键的人来说只能猛敲tab了么,不是,zsh支持使用<ctrl-n/p/f/b>来选择,perfect!
      • 命令选项补全。有多少人依然记不住tar的命令选项?中枪的去抄20遍……在zsh中只需要键入tar - <tab>就会列出所有的选项和帮助说明。用了zsh之后man少用了好多……
      • 命令参数补全。zsh 对命令的参数补全也很强大。键入kill <tab>就会列出所有的进程名和对应的进程号。如图:这还不够,试试键入kill sbin <tab>,如图所示
      • 自动为sbin这个进程名补全了进程号。kill进程再也不用两步操作了。
    5. 更智能的历史命令。在用或者`方向上键`查找历史命令时,zsh支持限制查找。比如,输入`ls `然后再按方向上键,则只会查找用过的ls命令。而此时使用``则会仍然按之前的方式查找,忽略`ls`。
    6. 多个终端会话共享历史记录。经常有多个窗口,tab,tmux的多个session,panel。这些命令历史不能共享实在是很糟糕的回忆。但是有了zsh之后,这些确实成了回忆了,所有的命令历史都可以共享。
    7. 更智能的cd。首先你甚至不需要再输入cd了,直接输入路径即可。第二,在你知道路径的情况下,比如/usr/local/bin你可以输入cd /u/l/b然后按<Tab>进行补全快速输入。这显然不够,zsh还支持路径替换,如果你其实想进入的是/usr/local/bin,不再需要../ 了,直接在当前输入cd bin share即可,则bin会替换为share。在之后我会介绍z和autojumper,目录跳转会更方便。
    8. 更强大的alias。zsh不仅支持普通的alias,例如:alias ls ='ls --color=auto'。zsh还支持后缀alias,即以什么命令打开特定的后缀名文件。例如alias -s js=mvim,输入hello.js,会以vim打开该文件,而不在需要vim hello.js
    9. 通配符搜索。这也是我最爱的功能之一。之前讲过由于命令补全少用了很多man命令,而这个功能让我少用了很多find命令。 一般的通配符搜索无非是ls -l *.log,如图:
    10. 在zsh中可以做到递归的通配符搜索。使用**/来递归搜索,如图

          

    是不是在很多场景下可以取代find

    以上都是我感觉迁移到zsh之后非常实用的功能。要想从头开始了解和学习zsh,可以访问A User’s Guide to the Z-Shell。不过大家都很忙,从头开始自己学习和配置会很累。所以现在说到zsh,不得不提的就是oh-my-zsh,oh-my-zsh是一个开源的zsh配置管理框架,提供了大量实用的功能,主题等。现在基本都是标配了吧。如图是我在用的默认zsh主题robbyrussell,如图

    可以发它能自动显示当前所在的git分支以及当前本地状态(黄色的小叉表示本地有更新未提交)。

    当然zsh也不是完美无缺。在我使用过程中有两点不是很舒服:

    1. 自动纠正并不总是那么智能。如图:

    但是可以对这些命令使用alias 加上nocorrect前缀,如:

    alias rake deploy ='nocorrect rake deploy'
    

      

    2. 一些符号是zsh中保留的,使用需要转义,如图:


    下面讲下zsh和oh-my-zsh的安装。

    使用brew来安装zsh

    brew install zsh

    设置zsh为默认

    /etc/shells文件末尾添加

    /usr/local/bin/zsh

    执行:

    chsh -s /usr/local/bin/zsh

    最后记得将~/.bash_prorile或者~/.profile等配置拷贝到~/.zshrc中。

    安装oh-my-zsh

    自动安装:

    curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
    

      

    可以选择自己喜欢的主题。只需要修改~/.zshrc文件中的ZSH_THEME即可。

    z和autojump

    zautojump的功能类似,前者是简单的shell脚本实现,后者由python实现,功能都是可以方便自动匹配到你最多使用的目录并跳转。我在用的是z,如图,我在根目录输入z github可以自动跳转到我常用的notice501.github.com这个目录,也就是本博客的工程目录。超级方便的工具。autojump用法类似,命令为j而不是z两者的安装方式:

    z

    git clone git@github.com:rupa/z.git

    而后将z.sh放入环境变量即可。

    autojump

    autojump可以直接使用brew安装

    brew install autojump

    有问题和分享欢迎留言交流。也欢迎关注我的微博

  • 相关阅读:
    最小生成树
    负环详解
    P2053 [SCOI2007]修车
    P3254 圆桌问题
    P3114 [USACO15JAN]踩踏Stampede
    SP1043 GSS1
    SP2713 GSS4
    导出mysql内数据 python建倒排索引
    社团管理系统——总结报告
    北京地铁出行线路规划——代码实现
  • 原文地址:https://www.cnblogs.com/noTice520/p/3204757.html
Copyright © 2011-2022 走看看