Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

这篇 iTerm2 + Oh My Zsh 教程手把手让你成为这条街最靓的仔 #44

Open
axuebin opened this issue Nov 13, 2020 · 1 comment

Comments

@axuebin
Copy link
Owner

axuebin commented Nov 13, 2020

这篇 iTerm2 + Oh My Zsh 教程手把手让你成为这条街最靓的仔

前言

作为一名程序员,开发环境不舒服会很大程度影响开发效率,所以一定要花时间好好整一下开发环境(好了,我知道你是在给摸鱼找借口)。

最近短短几个月,换了两次新电脑,经历了两次装机(由于各种原因,没法备份恢复,你懂的),每一次都得重新搞一套属于自己的开发环境。这里就记录一下我是如何一步一步的打造属于自己的Terminal,你如果想和我一样,直接cv 大法就可以搞一套一样的。

Terminal

Terminal我们经常会称作终端,现在中文版的mac里也是叫做这个。

我们每天都需要在其中输入很多命令去做一些事情。可以说,每天有大量的时间都需要面对它。我记得我第一次点下鼠标,打开这个终端的时候,看到了这样一个界面:

我傻了。怎么这么丑?macOS上怎么允许有这么丑的应用?

不行,如果让我每天对着它,一定会把电脑砸了(虽然它是高贵的 16 寸 MacBook Pro),我得找一个第三方Terminal来替代它。

iTerm2

很快,我就找到了新欢,它的名字叫iTerm2,它是一款完全免费,为macOS打造的一款终端工具,可以说是程序员必备了,如果还没用过的,赶紧跟着这篇文章用起来吧。👉iTerm2 官网符合国外网站一向的极简风格(又不是不能用,搞那么花里胡哨干嘛)。直接下载,解压,拖入Application里就 ok 了。打开看看。

怎么感觉不太对,虽然你的背景变黑了,但依然掩盖不了你的丑啊。没事儿,先天不足,后天努力嘛。告别黑底白字,整出最骚终端,开始吧。

on my zsh

主角是它,拥有了它,你一定是你们组最靓的仔。

Oh My Zsh is an open source, community-driven framework for managing your zsh configuration.

安装

官网提供了两种安装方式:

# via curl
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# via wget
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
复制代码

如果,由于一些原因,上面两种方法你都没能安装成功,可以试一下手动安装:

# 下载 oh-my-zsh 源码
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
# 并且把 .zshrc 配置文件拷贝到根目录下
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
# 让 .zshrc 配置文件生效
source ~/.zshrc
复制代码

嗯... 你和我说,clone也不行啊,不可描述的原因,网速不允许啊。那你这样做。在👉oh-my-zsh GitHub上下载zip-> 解压 -> 移动 oh-my-zsh 目录到根目录:

cd ~/Downloads
mv ohmyzsh-master ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
source ~/.zshrc
复制代码

如果还不行,你来找我。好了,重新启动iTerm2,是不是已经变了。

.zshrc

这个文件非常关键,是oh-my-zsh的配置文件,它的位置在根目录下,可以通过vim ~/.zshrc查看。每一次修改它之后,如果想要立即生效需要手动执行source ~/.zshrc

修改配色方案

一打开.zshrc,就可以看到关于配色方案的配置:

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="agnoster"
复制代码

oh-my-zsh提供了很多内置的配色方案,可以通过命令来查看:

ls ~/.oh-my-zsh/themes
复制代码

也可以打开👉https://github.com/ohmyzsh/ohmyzsh/wiki/Themes更为直观的查看所有的配色方案。只要修改ZSH_THEME的值就可以设置对应的配色方案了。如果你想每天都过得不一样,可以设置成random,每次打开iTerm2的都会随机使用一种配色方案。我曾经有一段时间,由于不想折腾,使用的是这个配色方案:agnoster,它是这样的:

当然,有一天,我突然想造作一下,就开始自己配色。(没备份... 找不着了...)如果你觉得默认的配色方案不够骚,并且觉得自己的审美 ok,也可以自己来搭配颜色。

自定义配色方案

入口:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> + 一个配置 -> 选择 Colors

像我这样审美不行的人,花了一整天的时间搞这个,到头来发现,还是默认的更好看一点...⚠️ 别摸一下午鱼搞这个被老板发现,还是下班了再搞吧。

第三方配色方案

当然,不是只有你和我想要自己搞一套最骚的配色方案,大家都有这样的想法。👉iTerm2-Color-Schemes这里有非常多的配色方案题,也已经在👉GitHub上开源。你可以像我一样这样做:

# 找一个目录存放 iterm2 相关的文件
mkdir Code/other/iterm2
# 下载 iTerm2-Color-Schemes
git clone https://github.com/mbadolato/iTerm2-Color-Schemes
# schemes 文件夹就是真实存放配色方案的目录
cd iTerm2-Color-Schemes/schemes
复制代码

同样,如果clone不下来就下载zip解压就好了。通过以下操作路径可以导入所有配色方案:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Colors -> 右下角 Color Presets -> Import...找到schemes文件夹选中所有配色方案就好了,然后你就眼花缭乱会收获满满的幸福。没事,等等会有更高级的方案。

安装字体 PowerFonts

为什么要安装字体呢?有些主题是会设置图标的,我们电脑上的字体一般都不支持这些图标,会出现乱码。

打开👉Fonts下载zip包都本地解压,就会得到很多字体。

# 将下载好的 fonts 移动到之前建的目录
mv ~/Downlaods/fonts-master ~/Code/other/iterm2/fonts
cd ~/Code/other/iterm2/fonts
# 执行安装文件
./install.sh
复制代码

这样就安装好了,然后通过以下操作路径设置字体:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Text

可以选择Meslo这个字体,乱码的图标就正常了。

毛玻璃效果/窗口大小

如果想要更高逼格的毛玻璃效果,并且找到自己舒服的大小(???),可以在这里设置:

操作路径:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Window

自定义背景

激动人心的时刻,你可以为你的终端设置一个自己喜欢的小姐姐图片作为背景,敲命令的时候都会更带劲吧:

~~咳咳,Dota 云玩家们,你是更喜欢冰女还是火女?~~操作路径:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Window

状态栏

可以为每个打开的终端都设置一个状态栏,显示一些系统信息(比如 CPU、RAM、当前目录等)。操作路径:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Session

总结

经过这一番折腾,一个属于你自己的高颜值终端就诞生了。不过,总感觉这样还是有点麻烦,有没有更厉害的玩意儿?有的,我们这就用起来。

神器 Powerlevel10k

👉Powerlevel10k简单来说就是一个ZSH的主题,只不过它的功能很强大,以下简称p10k

安装 P10k

我们用的是Oh My Zsh,所以这样安装p10k即可:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
复制代码

然后需要打开~/.zshrc设置ZSH_THEME:

ZSH_THEME="powerlevel10k/powerlevel10k
复制代码

安装字体 Nerd Fonts

上文我们已经安装了PowerFonts,如果需要使用一些图标,这个字体是不够用的,我们需要一个强大的字体:👉Nerd Fonts,它支持下面这么多种图标:

安装字体

你可以如官网所说,通过brew来安装:

brew tap homebrew/cask-fonts
brew cask install font-hack-nerd-font
复制代码

但是我不建议这样,包括不建议你下载zip包,因为这个文件太大了,太大了,太大了。。。我们可以这样:打开👉https://github.com/ryanoasis/nerd-fonts/releases,滑动页面找到Assets区域,如图:

我们只要下载箭头所指的Hack.zip这个字体包,解压缩之后就会获得一些ttf字体文件,双击安装即可。

zshrc 设置字体

POWERLEVEL9K_MODE="nerdfont-complete"
ZSH_THEME="powerlevel10k/powerlevel10k"
复制代码

注意,需要设置在ZSH_THEME之前。

iTerm2 设置字体

操作路径:菜单栏 -> Profiles -> Open Profiles -> Edit Profiles -> 选择 Text

这样,所有的图标就都可以正常显示了。

自动配置

如果你指定了ZSH_THEME="powerlevel10k/powerlevel10k"但是在zshrc里没进行任何手动的配置,打开iTerm2的时候就会触发自动配置的流程。也可以通过以下命令再次进入自动配置的流程:

p10k configure
复制代码

问题大致如下:

  1. 这个符号看起来像钻石(旋转的正方形)吗?
  2. 这个符号看起来像锁吗?
  3. 这个符号看起来像 Debian logo 吗?
  4. 这些图标都交叉分布在 X 之间吗?
  5. 风格
  6. 编码
  7. 是否显示时间
  8. 目录层级分隔符
  9. 头部(左边)
  10. 尾部(右边)
  11. 是否换行
  12. 左边和右边是否有连接线
  13. 命令行和提示是否连接
  14. 两行命令之间分布稀疏还是松散
  15. 是否需要图标

后面几个选项随意,执行完命令之后,就会初始化p10k:在根目录下生成~/.p10k.zsh,并且在~/.zshrc底部写入:

如果想废除p10k的配置,只需要删除~/.p10k.zsh,并且删除上面这条命令即可。

自定义配置

如果你想当高玩,也可以在~/.zshrc里手动配置p10k,或者在~/.p10k.zsh基础上进行修改。这个得要自己看文档摸索啦,这里我简单说几个配置:

  • POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
  • POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
  • POWERLEVEL9K_VCS_GIT_GITHUB_ICON

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS显示在命令行左边区域的元素:

和上图相对应的配置为:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user dir vcs newline)
复制代码

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS显示在命令行右边区域的元素:

和上图相对应的配置为:

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(time)
复制代码

可以在POWERLEVEL9K_LEFT_PROMPT_ELEMENTSPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTS里用的字段有:

字段 含义
user 用户名
dir 当前目录名
vcs 远程仓库信息
os_icon 系统图标
date 日期
host 主机名
status 上一条命令的执行状态
time 当前时间
... ...

如果还想了解更多,自行前往👉 文档查看。POWERLEVEL9K_VCS_GIT_GITHUB_ICON如果它是一个Github目录,就会显示这个图标:

所以出现在窗口里的图标都可以自定义,可以通过命令查看目前正在使用的图标:

get_icon_names
复制代码

找到想要修改的KEY就可以修改图标了。

注意:需要使用Nerd Fonts才能收货这满满的快乐。

有人问,这个图标的代码该去哪找呢?在这里:👉https://www.nerdfonts.com/cheat-sheet这是Nerd Fonts能够支持的所有图标,可以直接使用关键字进行搜索。比如,我想修改Git的图标:

找到喜欢的图标之后,右下角的f113就是这个图标的值,只需要这样就了:

POWERLEVEL9K_VCS_GIT_GITHUB_ICON=\uf113'
复制代码

快造作起来~

插件

到了这一步,你的iTerm2应该已经颜值爆表,足够好看了。毕竟这是我们的饭碗,光好看不行,得好用,来了解一下强大的插件体系。首先,我们先了解一下插件在~/.zshrc的哪个位置,找到下面这个字段就不会错了:

plugins=(git)
复制代码

git

git插件是自带插件,默认已经开启,它可以让我们使用非常好用的的git命令,提高开发效率:

用了插件之前的 git 命令 用了插件之后的 git 命令
git add --all gaa
git branch -D gbD
git commit -a -m gcam
git checkout -b gcb
git checkout master gcm

是不是简单多了。可以通过命令查看所有配置:

vim ~/.oh-my-zsh/plugins/git/git.plugin.zsh
复制代码

自动跳转对应目录

如果你像我一样是一个整理狂魔,会把文件、目录一层一层的整理好。

整理一时爽,用时就不爽

目录层级深了,年龄大了,就找不到文件放哪了,cd起来也不方便了,有什么办法可以解决呢?教你两招。

设置别名 alias

打开~/.zshrc输入别名,比如:

alias articles='~/Code/GitHub/articles'
复制代码

然后执行articles就会自动跳到~/Code/GitHub/articles了。这样还是比较麻烦的,得为每个目录都配置alias

autojump 插件

autojump插件会记录你所有的访问记录,不同单独配置,直接访问即可。

安装
brew install autojump
复制代码
配置

打开~/.zshrc加一行代码:

[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
复制代码

然后就是source一下就生效了。

使用

使用j命令就可以执行auto-jump,比如j articles

前提是你访问过articles目录,也就是你得让它记住。

zsh-autosuggestions

这个插件的作用很简单,就是像它名字一样,会在你输入命令的时候提示并且自动完成:

brew install zsh-autosuggestions
复制代码

colors

这是一个文件目录美化插件,如图所示:

gem install colorls
复制代码

然后执行colors就好了,你也可以设置alias更高效一点:

alias lc='colorls -lA --sd'
复制代码

设置了别名之后,就像我一样,输入lc就好了。我就只用了以上几个插件,已经能够大幅度提升工作效率了,如果有其它好用的插件,一定要告诉我呀。

VS Code 配置

如果你用的是VS Code,需要再配置一下字体:

{
  "terminal.integrated.fontFamily": "Hack Nerd Font"
}
复制代码

homebrew 安装

上面的几个插件都用的是brew命令安装,应该不在少数的人刚开始电脑上是没有brew的:

brew: command not found
复制代码

然后就百度了一下,说要装一个叫Homebrew的东西,然后就按照官网的方式执行安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
复制代码

如果安装成功了,恭喜你,你的运气真的很好。如果没安装成功,那你一定会各种百度如何安装,然后还是安装不成功:

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
复制代码

有人告诉你,换一个中科大的源试试:

/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
复制代码

然后,你可能会卡在这:

==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
复制代码

也就是因为不可描述的原因,下载homebrew-core这个库的时候网络不行了,那我们就手动clone一个吧,或者下载一个zip包解压到对应目录:

cd "$(brew --repo)/Library/Taps/"
mkdir homebrew && cd homebrew
git clone git://mirrors.ustc.edu.cn/homebrew-core.git
复制代码

然后再执行上面的命令安装就好了:

/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
复制代码

会看到成功安装的提示:

==> Installation successful!
复制代码

写在最后

就问你这样一套终端开发环境骚不骚好不好用。不说别的,看着这背景,写代码都更有动力了。

@saviou3r
Copy link

其实我更想要一个一建配置脚本

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants