iTerm2+zsh实现好用美观的Mac终端

Clloz · · 8,479次浏览 ·

前言

我在 Mac 上一直都是使用的默认的终端 terminalshell 也是使用的默认的 bash,一直也看到别人对于 iterm2+zsh 的推崇,不过觉得麻烦一直觉得没折腾。今天看到了一篇写的比较明了的文章,发现其实安装起来也不是很麻烦,于是就折腾了一下,确实很不错,不过对于 item2zsh 我都还不是太熟悉,具体的使用要慢慢体会了。

安装 iTerm2

#第一次使用brew cask 命令
brew tap caskroom/cask

#cask安装iTerm2
brew cask install iterm2

安装成功后在 Launchpad 中可以看到有一个新图标出现,打开 iTerm2。如果你想用快捷键快速启动程序而不是点击图标,参考我的这篇文章

快捷键修改

在自带的 terminal⌥ + 左右方向键 可以用来定位光标到前一个或后一个单词,不过在 iterm2 中这两个快捷键被用作其他功能,我们可以手动改回来。按 ⌘ + O 打开 profile 然后选择 edit profile,在 profile 中选择 keys 选项卡,找到 ⌥→⌘← 选项,双击修改 ActionSend Escape SequenceESC+ 改为 b(左箭头)和 f (右箭头)。

选择配色方案

我们可以根据自己的喜好来选择 iTerm2 的配色方案,先检查下终端颜色配置为 xterm-256color,位置在 iTerm2 -> Preferences -> Profiles -> Terminal

xterm256

然后我们可以在 iTerm2 -> Preferences -> Profiles -> Colors 中选择我们的配色方案,不过自带的配色方案比较少,我们可以自己导入配色方案。

有人就开源了一款叫 iTerm2-Color-Schemes 的配色合集,里面有各种经典、常用的配色方案,来使用 Git下载到本地。

#克隆到自己想要的位置
git clone https://github.com/mbadolato/iTerm2-Color-Schemes

iterm-color-import

然后点击图中红框位置的下拉框选择其中的 import 然后选择刚刚克隆的 iTerm2-Color-Schemes 中的 schemes 文件夹中的全部文件导入,我们就有非常多的配色方案可用了, 大家可以选择自己喜欢的,我使用的是 Dracula

安装字体

想要让 iTerm2 显示图标我们就得用一些特别的字体,图标字体并不是 ASCII 码字体,在 iTerm2 中可以进行配置,所以先要安装这个字体。这款字体叫 nerd-fonts,它支持下面这么多种图标。

nerd-font

brew tap caskroom/fonts
brew cask install font-hack-nerd-font

安装的时候会去 Github 下载字体,现在 github 安装似乎非常慢,最好还是用梯子或者代理,否则可能安装失败。

安装成功后需要在 iTerm2 中配置一下,在 iTerm2 -> Preferences -> Profiles -> Text -> Font -> Change Font 栏位中,Text 下面勾选 Use a different font for non-ASCII text,然后再选择字体以及设置字体大小,需要注意的是 FontNon-ASCII Font 所选择的字体和字体大小必须一致,否则会出现显示异常。

iterm-font

安装 zsh

我印象中我的 Mac 是没有手动安装 zsh 的,系统是 mojave 10.14.5,应该是现在的系统自带的,不过默认 shell 还是 bash

#查看系统支持的shell
cat  /etc/shells

#如果没有zsh,则用brew安装
brew install zsh

#查看当前使用shell
echo $SHELL

#设置zsh为默认shell
chsh -s /bin/zsh

#设置bash为默认shell
chsh -s /bin/bash

更新 zsh 到最新版本

Mac 现在自带 zsh,据说下个 MacOS 版本 Catalina 会将 zsh 作为默认 shellMac 自带的 zsh 并不是最新版本的,想要安装最新版本的可以使用 Homebrew

# check the zsh info
brew info zsh

# install zsh
brew install zsh

# add shell path
sudo vim /etc/shells

# add the following line into the very end of the file(/etc/shells)
/usr/local/bin/zsh

# change default shell
chsh -s /usr/local/bin/zsh

CentOS7 更新 zsh

CentOS7 的通过 yum 安装的 zsh 版本为 5.0.2,但是很多主题需要更高的版本。比如我使用的Powerlevel9k 主题,在使用 git init 的时候就经常会报错,每次都只能把主题换了再操作,很麻烦。这里给大家说一下如何通过源码安装最新的 zsh

最新版 zsh 下载地址 zsh-5.8.tar.xz,下载速度可能比较慢,不过还好文件不大,耐心等待。

下载好 zsh-5.8.tar.xz 后用 scp 上传到服务器,然后执行以下操作。

yum -y install gcc perl-ExtUtils-MakeMaker
yum -y install ncurses-devel
# 编译安装
tar xvf zsh-5.8.tar.xz
cd zsh-5.8
./configure
make && make install
# 将zsh加入/etc/shells
vim /etc/shells # 添加:/usr/local/bin/zsh
#设置zsh为默认shell
chsh -s /usr/local/bin/zsh

我没有指定安装路径,默认的安装路径就是 /usr/local/bin/zsh,我们将这个路径添加到 /etc/shells 中然后设置为默认的 shell 即可。重启终端我们就可以看到版本已经变为最新的了。

安装 oh-my-zsh

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安装完成后 iTerm2 已经产生了明显的变化了,同时我们的用户文件夹 ~ 中生成了一个 .zshrcoh-my-zsh 的配置文件。到这一步基本已经大功告成了,下面我们要做的就是对这个配置文件进行改动来达到我们的目标。

关联 .bash_profile

需要注意的是当前我们使用的 shell 换成了 zsh,我们原来在 .bash_profile 中的配置不会被读取,所以我们要在 .zshrc 中加上一句 source ~/.bash_profile,这样我们原来的配置也会生效。

配置主题

oh-my-zsh 默认的主题是 robbyrussell,并不是很好看,我们可以使用 powerlevel10k 主题,让我们的 powerline 更酷炫。

#安装主题
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# 或者 gitee 这个版本安装
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

#修改.zshrc中的ZSH_THEME参数
vim ~/.zshrc
ZSH_THEME="powerlevel10k/powerlevel10k"

#用source命令让配置立即生效
source ~/.zshrc
# 后面会出来 p10k 的配置向导,跟着配置即可。如果后面想要修改配置,一种方法是直接修改 ~/.p10k.zsh 文件,另一种方法是执行 p10k configure 命令

p10k 不需要像 p9k 那样自己进行复杂的定制,设置向导中已经囊括了比较常用的配置,如果你还是要自己定制可以参考 p10k – README

插件

oh-my-zsh 有很多非常好用的插件,下面是一些推荐的插件已经安装方法,安装好的插件只要在 ~/.zshrc 中的 plugins=(git autojump cp extract sudo z zsh-syntax-highlighting zsh-autosuggestions) 依次写入用空格分开即可。

autojump

能够记忆我们之前去过的目录,不需要多次 cd ,直接 j 目录名 就可以直接进入。

#安装
brew install autojump

#在 ~/.zshrc 中加入如下配置
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
source $ZSH/oh-my-zsh.sh

zsh-autosuggestion

如图所示,输入命令时可提示自动补全(灰色部分),然后按键盘 即可补全(详细介绍

#安装
$ git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

zsh-syntax-highlighting

日常用的命令会高亮显示,命令错误显示红色,如下图(详细介绍

#安装
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

colorls

colorls 是一个 Ruby 实现的脚本,它可以配合 powerlevel9k 显示电脑上的文件图标(应该是通过后缀判断的),效果如下

colorls

#安装
sudo gem install colorls

我在 CentOS 中安装 colorls 的时候提示 ruby 版本太低,用 rvm 安装高版本 ruby,但是重启后 rvm 加载有问题。google 后发现,要在 .zshrc 中加上 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

一些小技巧

  • 连续按两次 tab 会补全列表,补全项可以使用 ctrl+n/p/f/b 上下左右切换
  • 输入目录名即可进入,不用 cd 了,输入 .. 即可到上级目录,返回上次目录输入 -
  • 输入 d 即可看到目录列表
  • 智能的命令纠错功能(需开启 ENABLE_CORRECTION 配置)
  • Cmd + Shift + H 可以查看剪切板的历史记录
  • Cmd + Option + B 可以利用时间轴来查看之前输入的命令

vscode 的配置

为了能够在 vscode 中能够正常使用新的终端,我们需要在 vscodesetting.json 中加入如下配置。

"terminal.external.osxExec": "iTerm.app",
"terminal.integrated.shell.osx": "/bin/zsh",
"terminal.integrated.fontFamily": "Hack Nerd Font",
"terminal.integrated.fontSize": 14,

iterm-vscode

Linux 配置

zshoh-my-zsh 也是可以在 Linux 上配置的,我在自己的阿里云服务器上也配置了和 mac 上相同的效果,包括了上面所用到的插件,现在远程的服务器和本地的 Mac 操作上没什么差别,都非常好用。关于 nerd 字体的问题,如果是 ssh 远程连接自己的服务器,那么在远程的服务器上没有安装也没有关系,本地只要安装了就可以正常显示,比如我是用的 iTerm2 来连接阿里云的服务器,显示没有什么问题,而如果你用阿里云网站上给的在线远程连接即使安装了字体也无法正常显示。

参考文章

  1. 打造 Mac 下高颜值好用的终端环境
  2. oh-my-zsh插件推荐
  3. 那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的
  4. iTerm2 快捷键集锦

Clloz

人生をやり直す

3 个评论

Wei · 2019年9月24日 - 下午9:51

安装oh-my-zsh的时候,代码前半部分缺失了 sh -c”$(,完整的是:sh -c”(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)”

    Clloz · 2019年9月30日 - 上午11:43

    感谢提醒,已修改。

dufu · 2019年11月5日 - 下午4:59

纠正一下,安装字体的时候,最新版本brew tap caskroom/fonts变了,brew tap homebrew/cask-fonts :yellow_heart: :yellow_heart: :yum:

Wei进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

我不是机器人*

 

00:00/00:00