【CLI】zsh调研(2)配置和使用


参考文章

  • 我在用的mac软件(2)-终端环境之zsh和z(*nix都适用)
  • 终极 Shell
  • MAC OS 与 ZSH

复习一下zsh

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

配置zsh

目前流行的安装配置文件有2个.一个是官网的grml-zsh-config;另一个是oh-my-zsh.本文利用oh-my-zsh来配置。

  • 安装oh-my-zsh,可以参考其github上的说明。摘录如下
    • 自动安装:
      • 通过curl
curl -L http://install.ohmyz.sh | sh  
  • 通过wget
wget --no-check-certificate http://install.ohmyz.sh -O - | sh  
  • 手动安装
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc  

安装完成之后退出当前会话,重新打开一个终端窗口,你就可以看到这个彩色的提示了:
【CLI】zsh调研(2)配置和使用_第5张图片
成功安装oh-my-zsh
  • zsh 的配置主要集中在用户当前目录的.zshrc里,我们在安装oh-my-zsh后,已经对这个文件做了一定的配置,如图:


    【CLI】zsh调研(2)配置和使用_第6张图片
    默认的.zshrc文件

配置完之后,我们需要重启终端或打开新的标签,或者用以下命令:

source ~/.zshrc  

很明显的,oh-my-zsh设置了一个默认主题(红框),我们可以在其wiki里挑选、学习更换主题。oh-my-zsh提供了数十种主题,相关文件在~/.oh-my-zsh/themes目录下,你可以随意选择,也可以编辑主题,满足自己的特定需求,我们也可以在.zshrc里将其设置为随机主题,这样每次启动都会随机选一个,直到你遇到了喜欢的,再确定下来:

ZSH_THEME="random"   
  • zsh插件。就像主题,oh-my-zsh提供了很多插件,不妨到~/.oh-my-zsh/plugins里看看都提供了什么插件,或者还是像在主题中一样,去其wiki里查看,如图
    【CLI】zsh调研(2)配置和使用_第7张图片
    oh-my-zsh插件

    插件也是在.zshrc里配置,找到plugins关键字,你就可以加载自己的插件了,系统默认加载 git ,你可以在后面追加内容,如下:
plugins=(git textmate ruby autojump osx mvn gradle)  

简单介绍几个插件

  • git:当你处于一个 git 受控的目录下时,Shell 会明确显示 「git」和 branch,另外对 git 很多命令进行了简化,例如 gco=’git checkout’、gd=’git diff’、gst=’git status’、g=’git’等等,熟练使用可以大大减少 git 的命令长度,命令内容可以参考~/.oh-my-zsh/plugins/git/git.plugin.zsh
  • textmate:mr可以创建 ruby 的框架项目,tm finename 可以用 textmate 打开指定文件。
  • osx:tab 增强,quick-look filename 可以直接预览文件,man-preview grep 可以生成 grep手册 的pdf 版本等。
  • autojump:zsh 和 autojump的组合形成了 zsh 下最强悍的插件,功能是可以方便自动匹配到你最多使用的目录并跳转(功能相似的还有z,z是shell脚本实现,autojump是Python实现),利用homebrew安装:
brew install autojump 

确保你在.zshrc的plugins中已加入autojump,然后你就可以在你的历史记录中跳来跳去了。

【CLI】zsh调研(2)配置和使用_第8张图片
autojump插件设置

你可能感兴趣的:(【CLI】zsh调研(2)配置和使用)