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


参考文章


复习一下zsh

  • 拼写纠正。你总会不小心打错命令,这时,zsh会进行自动拼写纠正,如图:
    zsh拼写纠正
    但有时候自动纠正没有那么智能,如图
    自动纠正失败
    可以对这些命令使用alias加上nocorrect前缀,如:
alias rake deploy='nocorrect rake deploy'  
  • 更强大的补全。
    • 连按两次Tab会列出所有的补全列表并直接开始选择。如图:
      两次Tab补全
      并且可以用方向键来选择,但是对我这种很少用方向键的人来说只能猛敲Tab了么,不是,zsh支持使用<ctrl-n/p/f/b>来选择,perfec!
    • 命令选项补全。有多少人依然记不住tar的命令选项?中枪的去抄20遍……在zsh中只需要键入tar-<tab>就会列出所有的选项和帮助说明。用了zsh之后man少用了很多……
    • 命令参数补全。zsh对命令的参数补全也很强大。键入kill <tab>就会列出所有的进程名和对应的进程号。如图
      命令参数补全1
      这还不够,试试键入kill sbin <tab>,如图所示:
      命令参数补全2
      自动为sbin这个进程名补全了进程号。kill进程再也不用两步操作了。
  • 更智能的历史命令。在用<ctrl-p>或者方向上键查找历史命令时,zsh支持限制查找。比如,输入ls,然后再按方向上键,则只会查找用过的ls命令。而此时使用<ctrl-p>则会仍然按之前的方式查找,忽略ls
  • 多个终端会话共享历史记录。经常有多个窗口,tab,tmux的的多个session,panel。这些命令历史不能共享实在是很糟糕的回忆。但是有了zsh之后,这些确实成了回忆,所有的命令历史可以共享。
  • 更智能的cd。首先你甚至不需要再输入cd了,直接输入路径即可。第二,在你知道路径的情况下,比如/usr/local/bin你可以输入cd /u/l/b然后按<tab>进行补全快速输入。这显然不够,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,如图:
    一般通配符搜索
    在zsh中可以做到递归的通配符搜索。使用**/来递归搜索,如图:
    zsh递归通配符搜索
    是不是在很多场景下可以取代find

配置zsh

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

  • 安装oh-my-zsh,可以参考其github上的说明。摘录如下
    • 自动安装:
curl -L http://install.ohmyz.sh | sh  
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  

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


    默认的.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里查看,如图
    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,然后你就可以在你的历史记录中跳来跳去了。

autojump插件设置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容