终端美化
相关工具介绍
- iTerm2:Mac 下 Terminal 终端的替代品,拥有更多强大的功能,想了解更多请戳 iTerm2 官网;
- zsh:Linux 的一种 shell 外壳,和 bash 属于同类产品;
- Oh-My-Zsh:用来管理 zsh 的配置,同时还有很多社区贡献的主题配置以及好用的插件可供使用,了解更多请戳 Oh-My-Zsh 官网 ;
配置方案总览
- iTerm2 终端工具;
- iTerm2 Solarized Dark Higher Contrast 配色方案;
- Monaco for Powerline 字体;
- zsh (Mac 系统自带,无需安装);
- Oh-My-Zsh;
- Oh-My-Zsh powerlevel9k 主题;
最终效果:
具体配置步骤
1. 安装 iTerm2 终端工具:
打开 iTerm2 官网 直接点击 Download 下载并安装即可。
2. 安装 iTerm2 Solarized Dark Higher Contrast 配色方案:
将该配色方案文件(Solarized Dark Higher Contrast.itermcolors)复制出来,保存到本地,文件命名为 SolarizedDarkHigherContrast.itermcolors ,然后双击即可安装。安装完后打开 iTerm2 终端,依次选择菜单栏:iTerm2 –> Preferences[setting] –> Profiles –> Colors –> Colors Presets –> SolarizedDarkHigherContrast,至此 iTerm2 Solarized Dark Higher Contrast 配色方案已成功安装。
3. 安装 Monaco for Powerline 字体:
将该仓库克隆到本地,然后进入工程目录的 Monaco 目录,双击后缀名为 .otf 的字体文件即可完成该字体的安装。安装该字体的原因主要是为了和 Oh-My-Zsh 的 powerlevel9k 主题相兼容,如果不安装该字体,那么后面安装 powerlevel9kn 主题后会出现乱码。
依次选择iTerm2 –> Preferences[setting] –> Profiles –>Text,将Font选择为Monaco for Powerline。
#该仓库中包含好几种优化后的字体
git clone https://github.com/supermarin/powerline-fonts.git
4. 安装配置 zsh:
zsh 一般 Mac 已经自带了,无需额外安装。可以用 cat /etc/shells 查看 zsh 是否安装,如果列出了 /bin/zsh 则表明 zsh 已经安装了。
接下来修改 iTerm2 终端的默认 Shell,可以用 echo $SHELL 查看当前 Shell 是什么,如果不是 /bin/zsh 则用如下命令修改 iTerm2 的默认 Shell 为 zsh:
chsh -s /bin/zsh
- 安装 Oh-My-Zsh(两种方式):
# option-1: curl
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# option-2: wget
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
- 安装配置 Oh-My-Zsh powerlevel9k 主题:
- 克隆该仓库到 oh-my-zsh 用户自定义主题目录
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
- 修改 ~/.zshrc 配置文件,配置该主题
ZSH_THEME="powerlevel9k/powerlevel9k"
- 修改命令提示符 默认的命令提示符为 user@userdemackbookPro,这样的提示符配合 powerlevel9k 主题太过冗长,因此我选择将该冗长的提示符去掉,在 ~/.zshrc 配置文件后面追加如下内容:
# 注意:DEFAULT_USER 的值必须要是系统用户名才能生效
DEFAULT_USER="user"
简单定制下 powerlevel9k 主题
powerlevel9k 主题的好处就是可以做很多自定义,只需要简单修改 ~/.zshrc 配置即可生效。更多关于该主题的定制请看 customizing-prompt-segments;
默认的 powerlevel9k 主题最右侧显示的元素为:每条命令的执行状态,历史命令条数,当前时间,这样也比较冗余,我在这里将 历史命令条数 这一元素去掉,这样看起来比较简洁。这需要修改 ~/.zshrc 配置文件,在后面追加如下内容,定制该主题的显示元素:
# 设置 oh-my-zsh powerlevel9k 主题左边元素显示
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
# 设置 oh-my-zsh powerlevel9k 主题右边元素显示
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs time)
7. 安装一些比较实用的 oh-my-zsh 插件
关于 oh-my-zsh 插件的管理是很简单的,有两个插件目录:
- /Users/user/.oh-my-zsh/plugins: oh-my-zsh 官方插件目录,该目录已经预装了很多实用的插件,只不过没激活而已;
- /Users/user/.oh-my-zsh/custom/plugins: oh-my-zsh 第三方插件目录;
需要安装哪个插件,只需要把插件下载到上面任何一个目录即可,然后在 ~/.zshrc 配置文件中的 plugins 变量中添加对应插件的名称即可,以下是我挑选的几个比较好用的插件(都是官方自带的,无需另外下载),~/.zshrc 配置文件如下:
常用插件推荐
- 自定补全
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
- 代码高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- git:oh-my-zsh 默认开启的,没什么好说的;
- extract:通用的解压缩插件,可以解压缩任何后缀的压缩文件,使用方法很简单:x 文件名;
- z:很智能的目录跳转插件,能记录之前 cd 过哪些目录,然后模糊匹配跳转,不需要输入全路径即可跳转,使用方法:z dir_pattern
- 插件配置
# Add wisely, as too many plugins slow down shell startup.
# 注意:zsh-syntax-highlighting 必须放在最后面(官方推荐)
plugins=(
git
extract
z
zsh-autosuggestions
zsh-syntax-highlighting
)
source ~/.zshrc
严重抄袭以下文章: 我的 Mac 终端配置(Mac OSX + iTerm2 + Zsh + Oh-My-Zsh)iTerm2 + Oh My Zsh 打造舒适终端体验
zsh解释
zsh和bash
两种不同的shell解释工具。zsh可以看成是bash的升级版。
.zprofile, .zshrc和.zshenv
经常需要在这些文件里面设置环境变量或执行shell命令。
相关文件和具体作用如下:
~/.zprofile ~/.zprofile是这些启动文件和关机文件中的一个. 它在登录时被读取. 它的兄弟文件
~/.zshrc
则是在交互时读取.~/.zshrc
因为**~/.zprofile** 只在登录时加载一次, 所以最好把只加载一次的东西放进里面, 之后还能被子shell继承, 比如环境变量, 这是非常好的例子.
在另一方面, ~/.zshrc通常会保留那些不能被子shell继承的东西, 比如别名和函数, 自定义提示, 历史自定义等等. 除此之外, 每次启动新shell都会运行的命令应该被放进 ~/.zshrc 文件
~/.zshenv
对于Z-shell而言, ~/.zshenv 是另一个存储环境变量的好的地方. ~/.zshenv 总会被加载. 相当于环境变量。
- ~/.zlogin
登录时调用
- ~/.zlogout
~/.zlogout 会在登出会话的时候被读取. 在这里做清理工作很重要.
下面是这些 zsh 启动和关机文件的处理顺序.
.zshenv → .zprofile → .zshrc → .zlogin → .zlogout