Featured image of post 从零开始打造优雅易用的 macOS 之终端配置

从零开始打造优雅易用的 macOS 之终端配置

为程序员提供的 macOS 新手指南。

终端是我们非常常用的工具,如果你拥有足够技巧,它几乎无所不能,可以管理本地文件,可以通过ssh命令管理远程服务器,可以查看进程、端口信息、网络信息等所有你想要的信息,有了Homebrew以后还可以安装大部分你想要安装的软件,这样一个全能的工具,怎么能容忍它像macOS自带的一样难看又不易用,本文的目的就是分享一下终端配置,照着我的步骤一步一步来,你就能拥有同样美观易用的终端。

前言

终端是我们非常常用的工具,如果你拥有足够技巧,它几乎无所不能,可以管理本地文件,可以通过ssh命令管理远程服务器,可以查看进程、端口信息、网络信息等所有你想要的信息,有了Homebrew以后还可以安装大部分你想要安装的软件,这样一个全能的工具,怎么能容忍它像macOS自带的一样难看又不易用,本文的目的就是分享一下终端配置,照着我的步骤一步一步来,你就能拥有同样美观易用的终端。

最终效果

最终效果

具体步骤

1. 安装iTerm2

推荐使用Homebrew Cask安装:在终端输入homebrew cask install iterm2即可,稍等片刻即可完成安装,安装完成后打开,会提示我们是不是要移动到“应用程序”文件夹,移动不移动均可,打开后界面是这样的: 有朋友可能要问,说好的美观呢?不要着急,要一步一步来,我们先解决Zsh的问题,最后再换最合适的配色。

2. 切换默认shell到Zsh

shell和终端是两回事,你可以使用不同的终端程序,同样也可以使用不同的shell,macOS默认的shell是bash,但shell远不止bash一种,macOS自带的就有好几种,可以通过终端运行cat /etc/shells查看: 查看macOS自带的shell 从列表中可以看到macOS默认已经安装了我们需要的Zsh,输入shell名称就可以进入对应的shell,这里我们不关注其他的shell,我们只关注Zsh,这就是传说中的“终极shell”,毕竟人家名字就是最后一个英文字母Z,很霸气。

但如果只是通过输入shell名字来切换shell,那每次打开终端都需要手动切换一次,这也太麻烦了,可以通过chsh -s命令来切换默认shell,注意这个命令后面不能只跟shell名称,需要完整路径,我们可以通过which命令获取,然后使用chsh -s命令修改即可:

1
chsh -s /bin/zsh

OK,现在我们已经将默认shell切换成了Zsh,可以继续下面的配置了。

Zsh配置

传说中,zsh虽然是一个很棒的shell,但配置复杂,让普通用户望而却步,直到后来有一个叫robbyrussell的大神自己配置了一套方案并制作了一个叫Oh My Zsh的工具把自己的配置文件共享了出来才让Zsh逐步流行开来。

如今Zsh的配置工具已经不止Oh My Zsh一种了,我使用的是配置更为直观方便的antigen。

安装antigen

Oh My Zsh比起来,antigen要冷门的多,但经过使用本人发现,antigen更符合我们的操作习惯,如果你使用过Vundle来管理Vim的插件的话,你一定会更偏爱antigen这种管理Zsh插件的方式的,更详细的介绍可以打开项目Github主页查看。

antigen安装非常简单:

Github上提供了两种安装方式,使用curl或者git:

curl -L git.io/antigen > antigen.zsh or use git.io/antigen-nightly for the latest version

但我推荐使用万能的Homebrew来安装,命令如下:

1
brew install antigen

执行命令的时候发现报错,告诉我们需要修改/usr/local/share/man/man8目录的所有者: 经Google搜索决定直接修改/usr/local的所有者,命令如下:

1
sudo chown -R 你的用户名 /usr/local

之后再执行brew install antigen就可以完成安装:

antigen安装成功

OK,antigen安装成功,下面我们需要做的是:

  • 创建~/.zshrc文件作为zsh的配置文件
  • 初始化antigen的Zsh配置

Zsh基本配置

我们直接复制antigen的Github主页的~/.zshrc配置内容模板:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
source /path-to-antigen/antigen.zsh

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle git
antigen bundle heroku
antigen bundle pip
antigen bundle lein
antigen bundle command-not-found

# Syntax highlighting bundle.
antigen bundle zsh-users/zsh-syntax-highlighting

# Load the theme.
antigen theme robbyrussell

# Tell Antigen that you're done.
antigen apply

需要注意的是,其中path-to-antigen需要换成我们的antigen安装路径,这个路径在安装antigen完成后已经提示我们了:

因此,需要我们把第一行改为

1
source /usr/local/share/antigen/antigen.zsh

下面我们在Home文件夹下新建.zshrc,直接使用vim ~/.zshrc新建即可,然后将上面的模板内容粘贴进去,不过要记得改第一行。

完成之后在终端输入source ~/.zshrc马上生效,如果有新增加的插件,会显示Installing XXX,这里忘了截图,完成后你的终端就变成了这样:

很好,antigen的安装和基础配置已经生效了,下面我们需要做的是:

  • 更换喜欢的主题,养眼最重要
  • 安装其他实用插件,增强Zsh

修改主题

zsh自带了很多很多主题,使用antigen theme 主题名命令就可以直接在终端中更换,也可以用antigen theme random来更换为随机主题,可以自行体验各种主题。

作为外貌党,本人尝试了很多主题,最后还是觉得**agnoster**这个主题最符合本人审美,所以一直使用,当然不排除有其他更棒的主题我没有发现,有兴趣的朋友可以再发掘,有能力的朋友还可以自己修改主题,这里我们先看一下agnoster的样子: agnoster主题 不出意外的出现了乱码,因为这个主题需要Melso等字体的支持,现在这台全新安装的系统自然是没有的,我们从这里下载字体,进入页面后,点击“View Raw”即可下载,下载完成后双击安装即可。

也可以选择其他Powerline字体,可查看这个页面中的“Install a patched font”部分。

安装完成后需要到iTerm2的设置中修改字体为Melso,

Preference——>Profiles——>左侧Default——>Text——>下方Change Font

选择Melso LG M Regular for Powerline,修改完成后,乱码问题就解决了:

不过我们只是通过antigen theme命令临时更换了主题,如果需要永久更换为agnoster主题,在终端中输入vim ~/.zshrc之后,将主题设置行的antigen theme robbyrussel修改为antigen theme agnoster,保存退出后source ~/.zshrc即可,若看不到效果生效重启终端即可。

主题的工作就完成了,下面我们需要做的是:

  • 了解Zsh的强大功能
  • 通过插件增强Zsh的功能

功能展示及插件安装

通过安装插件,Zsh可以变得非常强大,知乎用户韦易笑的一个回答中非常直观的展示了Zsh的强大,可以点击点击链接查看——为什么说 zsh 是 shell 中的极品? - 韦易笑的回答 - 知乎

作为普通macOS用户,我们并不需要太多的功能,毕竟功能强大同时也意味着需要额外的配置、额外的学习成本以及额外的系统资源,因此我们需要一个折衷,在这里我们参考知乎上的内容进行功能展示,分享一下本人目前的简单配置,并说明如何通过安装插件实现。

色彩高亮

检查命令输入是否错误

这一插件很实用,能够根据你的输入实时判断命令的正确与否,红色代表错误命令,绿色代表正确命令,白色则为参数、文件名等,如果你敲完了命令,发现是红的,不用运行你就应该知道你哪里输错了。

色彩高亮

插件安装方法

这一功能已经包含在了antigen的模板配置文件中,~/.zshrc中的

1
2
 # Syntax highlighting bundle.
 antigen bundle zsh-users/zsh-syntax-highlighting

实现的就是这个功能,无须额外安装。

命令提示

越来越聪明的智能提示

终端下命令非常多,即使是使用终端多年的朋友也无法全部记住,特别是各种参数更是令人眼花缭乱,这个时候命令提示功能就能一展身手了,当你输入时,插件会根据你的历史输入信息自动提示,比如我这一会经常在用vim ~/.zshrc命令来修改Zsh配置,安装这个插件后,我一输入v,插件就根据我的历史输入情况,用浅色显示提示了后面内容:

命令提示

这个时候只要按住Ctrl+F键,就可以自动输入提示的内容,非常方便。这个功能对于那些输入次数不多内容又长的命令实在是神器,比如你偶尔需要登录的远程服务器,你输入一个ssh,后面就给你补全了,还有解压缩命令的参数,运行过一次后就能智能提示,再也不怕记不住了。

插件安装方法

终端中输入vim ~/.zshrc,在.zshrc中添加如下内容:

1
antigen bundle zsh-users/zsh-autosuggestions

保存之后,source ~/.zshrc或者重启终端即可。

智能补全

一个Tab走遍天下

Zsh的补全功能非常强大,不需要插件就能拥有非常好的体验,比如知乎那篇介绍中提到的几个功能,均不需要安装额外的插件,比如你知道目录子目录情况下,可以通过类似这样的命令使用Tab补全:

补全前

Tab补全前

按Tab补全效果

Tab补全后

cd命令加Tab你几乎可以在目录里自由跳转,输入cd后按Tab键会出现所有目录,再按一次Tab键则可以在所有目录里跳转,这时不仅可以使用Tab键跳转,还可以使用方向键,避免只能一个一个的跳转,这样文件夹再多也不怕了,这体验真的是好极了。

放一个动图展示一下: Tab自动补全

对于命令参数的补全功能也非常实用,输入命令 -,按Tab就可以提示该命令包含的参数,用Tab键选中参数后,回车就可以直接输入。

插件安装方法:

Zsh自身已经包含了大量补全功能,通过插件可以强化这一功能,终端中输入vim ~/.zshrc,在.zshrc中添加如下内容:

1
antigen bundle zsh-users/zsh-completions

保存之后,source ~/.zshrc或者重启终端即可。

快速跳转

切换目录随心所欲

  • 利用cd -配合Tab键快速切换历史目录: 系统自带的bash只能一级一级的切换到上一次查看的目录,Zsh则完全不受此约束,结合Tab键可以快速跳转到之前访问过的任一目录: cd -跳转
  • 通过安装z.sh实现更强大的跳转 如果你是一个运维人员,可能会很需要这样的工具,但对于大部分普通用户而言,需求比较有限,因此我没有安装这一插件,z.sh可以认为是cd -的强化版,后者只能记录本次使用Zsh访问过的目录,而z.sh则可以记住从使用Zsh以来你访问过的目录,并会统计次数形成权重,基于权重让你能够最快的访问到你最经常访问的目录,具体可以查看知乎韦易笑的回答来了解z.sh的强大功能。

插件安装方法:

需要z.sh的朋友,只需要在终端中输入vim ~/.zshrc,在.zshrc中添加如下内容:

1
antigen bundle rupa/z z.sh

保存之后,source ~/.zshrc或者重启终端即可。

另外几个Zsh的实用技巧

  • 使用cd命令的时候,若不带参数,cd可以省略
  • 隐藏命令提示符前的主机名用户名: 只需要在.zshrc中添加DEFAULT_USER="你的用户名",source或者重启终端即可,要注意用户名大小写。

隐藏主机名用户名

  • man命令彩色显示: 只需要在.zshrc中添加如下内容:
1
2
3
4
5
6
7
8
#为man命令增加结果高亮显示
export LESS_TERMCAP_mb=$'\E[01;31m'       # begin blinking
export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # begin bold
export LESS_TERMCAP_me=$'\E[0m'           # end mode
export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
export LESS_TERMCAP_so=$'\E[38;5;246m'    # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\E[0m'           # end underline
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline

之后,source ~/.zshrc或重启终端即可,效果:

man命令高亮显示

iTerm配置

Zsh的主要配置已经完成了,喜欢折腾的朋友可以自己去安装新插件,不喜欢折腾的朋友可以至此为止了,拥有了上面几个简单的插件,Zsh带给我们的用户体验已经非常棒了,现在我们一起来对iTerm进行一些配置,让iTerm与系统更协调。

更换配色主题

美观永远是第一位的,看上面这些截图的配色,实在谈不上美观,话不多说,我们动手修改一下,前人已经建立了iTerm主题站,将大量主题打包提供,我们只需下载这个主题包,并通过查看主页选择自己喜欢的主题后导入即可:

点击访问iTerm2主题站 iTerm2主题站

导入方式如下: 导入iTerm2主题 很多好看的主题,这里我暂时直接导入了经典的Molokai主题,可以自己进行一些微调。 导入iTerm2主题

OK,主题暂不折腾,有时间可以从那么多主题里面慢慢挑。

Hotkey Window

终端作为常用工具,时不时呼出一下是很有必要的,如果呼出的界面再能有点逼格那就现好不过了,很久以前我就参考网上教程设置了Hotkey Window,虽然很简单,但逼格十足,所以这里还是要说一下:

  1. 进入Preference设置界面,目前我们已经有了一个Default默认配置,点击左下角的+号,新增一个设置,命名为Hotkey Window
  2. 选择Window选项卡,配置Hotkey Window Hotkey Window 和要的是Style要选择Full-Width Top of Screen,透明度等自己根据喜好设置。
  3. 选择Keys选项卡,为Hotkey Window添加快捷键,我使用的是Command+option+T Hotkey Windows设置快捷键 Hotkey Windows设置快捷键

设置完成后就可以用全局快捷键Command+option+T在屏幕上方呼出一个半透明的终端窗口,再按一次Command+option+T关闭。

Hotkey Window效果

结语

对终端的配置暂时告一段落,日后有精力可能会增加一下antigen的几个常用命令使用,增加几个Zsh插件的说明,并补充一下使用iTerm2配置快速登录SSH服务器等内容。

感谢

本文内容部分参考了以下文章,向作者表示感谢:

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计