俗话说“工欲善其事,必先利其器”,作为一个长期在命令行下面工作的人,Mac那个自带的Terminal功能太弱了一些,长此用下去,必定是不能忍的。于是,终于轮到此篇的主角上场了:iTerm2 和 Zsh, 这次,我们来一场iTerm2和Zsh的体验之旅……
关于iTerm2
iTerm2是一款完全免费的,专为 Mac OS 用户打造的命令行应用,当然,也是程序员们的最爱。iTerm2本身支持很多自定义化的设置,比如自定义配色,自定义快捷键,方便的水平和垂直分屏功能,等等…… 毫不避讳的讲,说它是如今Mac下最好的终端工具也不为过。当然,日常工作与开发中,用它替代Mac自带的Terminal也是不二的选择。
关于 Zsh 与 Oh My Zsh
有了终端利器iTerm2,当然还得配上一款顺手的shell。众所周知,如今用得最广泛的默认shell,就是bash了,因为它也是很多Linux发行版默认带的shell。作为默认自带的shell,其特点,也就是:特点不是很明显 -_-# 不太方便的地方是:可定制性和可扩展性有限,自动补全功能不够强大…… 所以,既然用上了iTerm2,需要一款更为强大的shell来配合。
关于shell,首当推荐的就是Zsh了。之所以叫Zsh,其含义是:
The last shell you’ll ever need!
可以理解为,一旦用上它,就别无所求了。跟Bash相比,Zsh的补全功能强大了许多,可以自动补全命令、参数、文件名、进程、用户名、变量、权限符,等等…… 另外,还支持插件,通过插件又可以扩展出许多功能来。
既然有了Zsh,那Oh My Zsh又是啥呢?因为 zsh 的默认配置极其复杂繁琐,让人望而却步,直到有了Oh My Zsh这个开源项目,让zsh配置降到0门槛。而且它完全兼容 bash 。所以,我们可以理解为Oh My Zsh是一个方便你配置和使用Zsh的一个开源工具。
掌握了这些姿势,随后我们可以开始动手配置我们逼格满满的终端环境了……
iTerm2 安装与配置
安装iTerm2比较简单,直接从官网下载安装即可。安装好之后,我们还需要进行一系列的设置才行。
主题配置
iTerm2支持许多的主题配色,可以自己定义,也可以参考网上现成的主题配色。我个人比较喜欢Solarized配色,因为可以配合Vim里面的Solarized主题。
下面是一些常用的主题配色的预设置文件:
- iTerm2 Solarized 配色: https://github.com/altercation/solarized
- iTerm2 配色合集网站: http://iterm2colorschemes.com/
- iTerm2 配色合集GitHub地址:https://github.com/mbadolato/iTerm2-Color-Schemes/tree/master/schemes
这些配色预设置文件,可以直接导入到iTerm2中,然后可以直接在设置中选择:
安装Powerline字体
为了终端下能正确的显示fancy字符,需要安装powerline字体,这样,这些fancy字符不至于显示为乱码。 GitHub上已经有制作好的Powerline字体,可以下载了直接安装到系统:
Powerline字体下载: https://github.com/powerline/fonts
安装好之后,就可以选择一款你喜欢的Powerline字体了:Preferences -> Profiles -> Text -> Font -> Change Font
iTerm2其他设置
一切配置妥当,不过好像还差点什么,好像目录名字的显示不够显眼。
可以试试 Preferences -> Profiles -> Text -> Text Rendering 把 Draw bold text in bright colors
前面的勾去掉:
嗯,这下文件和目录可以很容易区分了……
Zsh 与 OhMyZsh 安装与配置
如果你是用的Mac OS,默认应该自带了zsh了,安装之前可以确认一下:
1 | cat /etc/shells |
有/bin/zsh表明已经预装zsh了,没有的话,可以通过命令 brew install zsh
来安装。接下来,我们需要安装的是OhMyZsh,OhMyZsh的安装也比较简单,官网有一键安装脚本。默认安装过后,使用的是robbyrussell主题,你可以在这里找到各种主题。我现在使用的主题是一款修改过的定制主题,叫做:lambda-mod 放在我的GitHub项目mydotfiles上。
找到一款你喜欢的主题,把主题文件下载到 ~/.oh-my-zsh/themes 里面,然后修改 ~/.zshrc 文件,配置好主题名字即可:
1 | ZSH_THEME="lambda-mod" |
待配置妥当,看起来应该是这样的:
Zsh常用设置
跟Bash一样,Bash的配置文件叫做.bashrc,Zsh的配置文件,也放在用户当前目录,叫做.zshrc。 我把我自定义的.zshrc放到了GitHub上,权当抛砖引玉,供大家参考。
接下来我们可以体验一下zsh的各种黑科技了……
来自Zsh的黑科技
路径别名
需要在配置文件(通常是 .zshrc)中先定义好规则,形如:
hash -d sortcut_name=path 配置应用后,直接使用 ~ sortcut_name (甚至直接输 sortcut_name 回车就行了)就可以跳转到相应目录
命令别名
通过在.zshrc中配置alias,可以方便的为其他的命令设置别名,这是个很不错的功能。因为我懒,平时甚至连敲命令也想偷懒,于是,我设置了很多alias。(参考我的.zshrc配置文件)
比如跟git相关的:
1 | alias gs="git status" |
比如,要push提交到远程git仓库的时候,就不必老老实实的输入 git push origin master
了,只需要输入 gps origin master
即可。于是 git pull
也简化成了 gpl
, git commit -m
也简化成了 gc
。
嗯,只要你够懒,相信你一定还能发明出许许多多的alias来…… -_-#
切换目录
在Zsh中,可以通过输入 .
号来跳转,比如:
- 直接输入.. 和 … 可以快速切换到上层和上上层目录
- 直接输入n+1个点,可以往上层跳转 n 层
进程id补全
Zsh的补全功能非常不错,除了一般的目录和文件名补全,还可以自动补全进程ID。比如,我们通常要kill掉一个进程,得先用 ps -aux|grep process_name
先拿到进程id,然后再 kill pid
来终止掉一个进程。在Zsh中可以直接这样:
快速跳转
Zsh支持目录的快速跳转,我们可以使用 d
这个命令,列出最近访问过的各个目录,然后选择目录前面的数字进行快速跳转:
是不是很方便呢?
目录名简写与补全
如果确切的知道我们要进入某一层目录,但是目录名比较长,没关系,Zsh帮你搞定! 比如我们要进入到 ~/workspace/src/dict,我们只需要输入每个目录的首字母就行,然后再TAB键补全,Zsh会帮你搞定剩下的:
常用命令参数补全
Zsh在行的,不光是目录名的补全,嗯,常用的命令参数,它也能给你提供参考:
重复上一条命令
输入 r
,可以很便捷的重复执行上一条命令。
Zsh 常用插件推荐
Zsh支持插件,通过插件扩展可以实现许多方便的功能。这里介绍一下我常用的几个Zsh插件(参考我的.zshrc配置文件)
autojump
autojump也是一个目录直接快速跳转的效率工具,它会自动记录之前访问过的目录,并计算权重。用法也很简单 j directory_name
即可。比如我要访问 ~/workspace/src ,只需要输入 j src
就行了……
sublime
可以方便的在Zsh终端中调用Sublime Text打开文件,比如输入 st README.md
就可以调用机器上安装的Sublime Text打开当前目录的README.md文件进行编辑操作。
web-search
一个方便的终端搜索工具,支持大多常用的搜索引擎,比如:
- 输入
baidu hhkb pro2
直接在浏览器打开百度搜索关键字”hhkb pro2”- 输入
google minila air
直接在浏览器打开Google搜索关键字”minila air”
通过查看这个插件的代码,可以看到支持的搜索引擎,包括baidu, google, bing, yahoo 等等…… 当然,还有广大程序化最爱的GitHub哦!
zsh-autosuggestions
命令自动提示插件,这个是个很有意思也很高效的插件。能记录平时你输入过的命令,下次再输入的时候,它会提前提示你,方便懒人。如果是你需要的命令,直接 Ctrl+F
搞定,来直接看看效果吧:
需要安装两个插件:
配置参考 这里
extract
一个功能强大的解压插件,所有类型的文件解压通过一个命令x全搞定,再也不需要去记tar后面到底是哪几个参数了。
比如: x backup.tar.gz
或者 x temp.zip
最后,再加点特技
Zsh启动特技
可以通过一些配置,让Zsh在启动的时候输出启动画面,比如这个是不是很面熟呢?
咦?仿佛在哪里见过,但是就是想不起来了……
配置参考 这里
iTerm背景特技
iTerm还支持显示背景图,这样我们还可以把单调的终端界面配置得更加酷炫,比如可以这样:
还可以这样:
配置方法:Preferences -> Profiles -> Window -> Background Image 选择一个你喜欢的背景,然后通过Blending调整图片背景的透明度。
完结
iTerm和Zsh的配置就暂且介绍到这里吧,其实介绍到的也只是它们功能中我比较常用的,还有更多的功能等着你去发现。有了这些称手的工具和配置,我们就可以更加高效的去完成日常的编码和运维工作了。当然,此篇文章也不会就此为止,平常使用的过程中如果有新的心得和体会,我会持续更新……