工作了一段时间,有了些许积蓄,忍痛买了Macbook Pro,真香…Mac上理所当然的配置了zs,平时工作是在Ubuntu环境下,折腾了一番,终于也在Ubuntu的终端下配置了zsh,再次真像,大大提高工作效率。
1 安装zsh
1.1 安装zsh
对于一般的Ubuntu系统,配置好正确的源之后,就能直接键入以下命令安装:
sudo apt-get install zsh
1.2 配置zsh
zsh的配置是一门大学问,这里不赘述,直接给出一个配置文件,大家可以下载后放入zsh配置文档直接使用。(我的一个法国朋友手配的,相当顺手)
把.zshrc拷贝到相应用户的home目录即可
(也可以把你的bash的配置文件(/.bash_prorile或者/.profile等)给拷贝到zsh的配置文件~/.zshrc里,因为zsh兼容bash)
1.3 取代bash,设为默认shell
sudo usermod -s /bin/zsh username
或者
chsh -s /bin/zsh
chsh -s `which zsh`
如果要切换回去bash:
chsh -s /bin/bash
当然你实在不愿意把zsh当成默认的shell, 而又想使用它, 那么你可以每次进入是都使用zsh进入, 而输入exit退出
2 安装oh-my-zsh
2.1
直接用zsh会很蛋疼,因为zsh功能很强大但是太复杂,所以需要oh-my-zsh来将它简单化
直接用git从github上面下载包
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
1
备份已有的zshrc, 替换zshrc
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
直接使用脚本安装
cd oh-my-zsh/tools
./install.sh
你可以直接直接使用如下命令安装
curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
其本质就是下载并执行了github上的install.sh脚本, 该脚本位于oh-my-zsh/tools/install.sh
2.2 配置主题
备份已有的zshrc, 替换zshrc
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
oh-my-zsh集成了大量的主题, 位于oh-my-zsh/theme
配置主题, 可以通过修改~/.zshrc中的环境变量ZSH_THEME来完成
ZSH_THEME="agnoster" # (this is one of the fancy ones)
如果你觉得主题太多你可以选择使用随机模式, 来由系统随机选择
ZSH_THEME="random" # (...please let it be pie... please be some pie..)
推荐主题: agnoster
由于这个主题使用了一些特殊字符,需要安装字体:
sudo apt-get install fonts-powerline
2.3 配置插件
修改~/.zshrc中plugins
plugins=(git bundler osx rake ruby)
详细的插件信息, 可以参见zsh插件Plugins介绍
更新oh-my-zsh
默认情况下, 您将被提示检查每几周的升级. 如果你想我ZSH自动升级本身没有提示你, 修改`~/.zshrc
disable_update_prompt = true
禁用自动升级, 修改~/.zshrc
disable_auto_update = true
当然你也可以选择手动更新
如果你想在任何时间点升级(也许有人刚刚发布了一个新的插件,你不想等待一个星期?)你只需要运行:
upgrade_oh_my_zsh
卸载oh-my-zsh
如果你想卸载oh-my-zsh, 只需要执行uninstall_oh_my_zsh zsh, 从命令行运行. 这将删除本身和恢复你以前的bash或者zsh配置.
uninstall_oh_my_zsh zsh
参考链接:https://blog.csdn.net/gatieme/article/details/52741221
3 其他特性
3.1命令补全
虽然Bash可以使用tab自动补全命令,但oh-my-zsh的补全功能更强。比如你想进入Nginx所在目录 /usr/local/nginx,输入 cd/u/l/n 按下tab系统就能自动将其补全为 cd /usr/local/nginx;比如,输入 git,按下tab,就给你返回关于git的命令;再比如,你要进入一个名字很长的文件夹,你只要输入前几个字符,再按tab就能补全。
你也可以使用 alias 命令查看,会发现oh-my-zsh默认已经把很多命令组合并取了别名。
3.2 在目录中穿越
我们通常会遇到这种情况:先进入一个很深的目录,又要换到另一个目录。通常我们会使用 cd - 回到最近的一次目录,或者使用 history 查看之前所有的目录。但是oh-my-zsh提供了更强大的 d 命令。
d 命令会列出最近进入的目录历史,并且会给这些目录加上序号,只要输入对应目录的序号,就能进入该目录。
使用前面提到的 alias 命令可以查看其它一些目录跳转的快捷方式:
rogn@ubuntu ~ alias
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..
Git友好
使用Git做版本控制时,经常需要对仓库的代码进行 status、add、commit等操作,以及审视Git仓库的提交状态,oh-my-zsh对Git有很友好的支持。
如下图,我们 cd 到一个目录,发现命令行前多了一对括号,括号中的 master 表示当前目录是一个Git仓库,且在master分支下。如果当前分支有文件改动,master后面会增加一个*号,表示工作区有文件改动但没有执行 add。执行 git add后,*变成了 +,表示添加到了站暂存区。再执行git commit,master后面的符号消失,工作区又干净了。切换分支,括号里变成了dev,表示当前已经是dev分支。
安装自动提示插件
下载插件
git clone git://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
配置插件, 可以通过修改~/.zshrc中的plugins来完成
plugins=(
git
zsh-autosuggestions
)
由于自动提示的亮度太低,不容易看到,所以我们需要修改下自动提示的亮度
vim ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
将这里调整为10
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=‘fg=10’
修改之后需要重新加载一下
source ~/.zshrc
效果:
自动提示插件效果
高亮插件
下载插件
git clone git://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
配置方式同上,高亮插件一般设置为最后一个加载的插件