导读 | 命令行是程序员的最爱,默认的bash shell 虽然功能已经很强大,但显得太朴素了,也不够智能,远远谈不上酷炫,虽然已经远远将 windows 的 cmd 甩开几百条街。但对于极客来说,bash 还是太弱了,长得也难看。 |
zsh
的功能比bash
强大很多,但配置过于复杂,起初只有极客才在用。后来,有个穷极无聊的程序员可能是实在看不下去广大猿友一直只能使用单调的bash
, 于是他创建了一个名为 oh-my-zsh
的开源项目…
自此,只需要简单的安装配置,小白程序员们都可以用上高档大气上档次,狂拽炫酷吊炸天的 oh-my-zsh
以centos7为例:(mac也是类似的操作)
查看系统是否安装了zsh,如果没找到/bin/zsh
,就需要先安装
cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
centos7默认情况下没安装zsh
用 yum
安装 zsh
$ sudo yum -y install zsh
安装成功
$ cat /etc/shells | grep zsh /bin/zsh
切换shell为zsh
$ chsh -s /bin/zsh Changing shell for root. Shell changed.
退出,重启终端,可看到shell已切换成功
$ echo $SHELL /bin/zsh
一行命令即可自动化安装
$ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
成功界面:
退出重新登入终端,即可看到oh-my-zsh已经生效
接下来只需简单的配置,就可以享受 oh-my-zsh
的强大
oh-my-zsh有很多漂亮的主题:
在主题列表中选择自己心宜的主题,安装很简单,打开配置文件 ~/.zhsrc
,将 ZSH_THEME
值改为你所选的主题名称
如:
$ vim ~/.zshrc # 修改主题名称 ZSH_THEME="ys"
然后重新加载配置文件
$ source ~/.zshrc
每次修改配置文件后,都需要再次加载配置文件才能生效
oh-my-zsh默认安装了git插件,在git仓库中,会提示当前所在的分支。此外,还有大量优秀的插件,具体可查看插件仓库,以下只介绍几个我常用的插件
- extract
linux下的压缩文件有多种格式,我总是忘记不同格式的解压命令,如果有一个通用的指令可以解压所有文件就好了,extract插件就能解决此问题
现在不管是 zip, tar.bz2, gz
等格式的压缩文件,都只需要执行 extract filename
即可
- z
z插件可以智能在历史的cd命令中智能地选择指令,如,我们在终端执行过cd /usr/local/nginx/conf/vhost
,以后只需要执行z vhost
即可,不必再去敲长串的命令了
以上两个插件都是
oh-my-zsh
自带的,只需要在配置文件的plugins配置中加入插件名称即可,多个插件用空格隔开
- zsh-autosuggestions
zsh-autosuggestions属于第三方插件,可以提示我们插入历史命令
如,我执行过php artisan ide-helper:generate
命令,下次当我输入php
时,就会自动示指令,并且会随着我们的输入而实时地匹配最符合的历史指令,当所提示的指令符合我们的预期,只需要按右箭头即可补全
安装此插件的流程:
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
在配置文件中中添加插件名称
综上,配置文件plugins的内容如下:
plugins=( git extract z zsh-autosuggestions )
重新载入配置文件,即可生效
以下是可能遇到的小问题
使用自动补全插件可能会与vim的提示功能相冲突,如会报以下错误:
$ vim t _arguments:451: _vim_files: function definition file not found
解决方法:将~/.zcompdump*
删除即可
$ rm -rf ~/.zcompdump* $ exec zsh
有时候执行 cd
会卡,这让人难以忍受。原因是 oh-my-zsh
在获取 git 信息,可以将 git 信息隐藏:
git config --global oh-my-zsh.hide-status 1
关于 oh-my-zsh
的功能,本文所涉及的仅是冰山一角,这些已经足够我平时使用了,极大提高了效率,相信我,一旦用过这个尤物,你再也不能忍受单调枯燥的 bash
了
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/123372.html