macOS 环境安装和配置

又是一波接一波的骚操作把系统搞崩的一天,为了节省今后重装系统配置环境的时间,把各种环境的安装和配置做个记录吧……


Xcode

安装

当然是去 App Store 下载了,之后的 Homebrew 等都要依赖它。


Homebrew

macOS 缺失的软件包的管理器

算是强迫症必备吧

安装

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew Cask

"To install, drag this icon…" no more!

同上

安装

1
2
brew tap caskroom/cask
brew install vitorgalvao/tiny-scripts/cask-repair

这里还安装了 cask-repair,用于添加新的 Cask 或者更新 Cask,详见 How To Contribute

配置

使用 cask-repair 提交新的 Cask 或者更新时,会默认使用系统的文本编辑器打开 Cask 的信息文件 *.rb,一般都默认为 TextEdit.app,可以在 ~/.bash_profile 中修改 Homebrew 使用的文本编辑器

1
export HOMEBREW_EDITOR=code

code 表示将 Homebrew 使用的文本编辑器改为 Visual Studio Code


Python

为了方便不同版本的 Python 共存,并且隔离多个 Python 环境,使用 Conda 进行管理。

Conda 是 Python、R、Ruby 等多种语言的包、依赖和环境管理

Conda 有多个不同的发行版,比如 AnacondaMiniconda 等,前者包含了许多科学计算的包,因此安装包体积很大,为了节省安装时间和占用空间,就使用 Miniconda。

安装

1
brew cask install miniconda

配置

安装好以后需要将 Conda 的路径加入环境变量,在 ~/.bash_profile 中加入

1
export PATH=${PATH}:/usr/local/miniconda3/bin

使用

  • 列出所有环境(默认环境为 base)

    1
    conda env list
  • 创建新的环境

    1
    conda create --name <name> python=<version>
  • 从已有环境复制一个环境

    1
    conda create --name <new name> --clone <old name>
  • 进入 & 退出环境

    1
    2
    conda activate <name>  # 进入名为 name 的环境,或者使用 source activate <name>
    conda deactivate # 退出当前环境,或者使用 source deactivate
  • 安装包(默认安装到当前环境,如果没有进入任何环境,则安装到 base 中)

    1
    conda install <package>

LaTeX

配置 LaTeX 的环境是最头疼的……经过我的多次尝(作)试(死),总算摸索出正确的姿势……那就是用 Docker。首先 Homebrew 安装 Docker

1
brew cask install docker

镜像可以使用 shoujiaxin/texlive,此镜像基于 Debian 且安装了 TeXLive 2019。

1
docker pull shoujiaxin/texlive:latest

带有 latest tag 的镜像会安装最新版本的 TeXLive;带有 cjk tag 的镜像中用于配置特殊中文字体,目前加入了隶书

使用时可以用类似下面的命令创建可执行文件,将命令重定向至 Docker 镜像。以 xelatex 命令为例,创建文件 xelatex 并写入

1
2
3
#!/bin/sh
set -euo pipefail
docker run -i --rm -w "$(pwd)" -v "$(pwd):$(pwd)" shoujiaxin/texlive xelatex "$@"

给予文件执行权限

1
sudo chmod +x ./xelatex

将文件所在路径加入 ~/.zshrc 即可。

Zsh

macOS 的默认终端是 Bash,相比 Zsh 功能和可定制性有限,本着生命在于折腾的原则,换!

切换默认 Shell

终端输入

1
chsh -s /bin/zsh

输入管理员密码,重启终端即可将默认的 Shell 切换到 Zsh,如需切换回来,执行

1
chsh -s /bin/bash

Zsh 的配置位于 ~/.zshrc,需要继续使用 Bash 的配置可以在末尾添加

1
source ~/.bash_profile

安装和配置 Oh My Zsh

Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout...

终端执行

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

安装完成后 Oh My Zsh 的配置文件位于 ~/.oh-my-zsh

更换主题和背景

Oh My Zsh 的主题不是很喜欢,故换成 Powerlevel9kInstall the Powerlevel9k Theme 介绍了各种安装主题的方法,这里使用安装到 Oh My Zsh 的方法。

执行

1
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

可以将主题安装到 ~/.oh-my-zsh/custom/themes/ 中,修改 ~/.zshrc

1
ZSH_THEME="powerlevel9k/powerlevel9k"

即可更换主题为 Powerlevel9k。

Powerlevel9k 依赖 Powerline 字体,否则终端中会有乱码,Install a Powerline Font 介绍了几种安装 Powerline 字体的方法,经过多次尝试,这里使用最便捷的方法,即安装 Nerd 字体,执行

1
2
# brew tap caskroom/fonts
brew cask install font-hack-nerd-font

目前 (2019-02-27) 如果按照官方的安装步骤,tap 了 caskroom/fonts,在执行 brew update 时会报错,猜测是因为 Homebrew 更新后 Homebrew Cask 已经包含了各种字体,所以可以直接安装,也可以在安装完成以后 untap 一下。

字体安装完成修改 ~/.zshrc

1
2
3
4
POWERLEVEL9K_MODE='nerdfont-complete'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs history time)
DEFAULT_USER="<username>"

可以完成字体配置和各种自定义。其中,POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 控制终端左侧显示内容:dir 显示当前路径、dir_writable 在当前路径没有写权限时会显示一个 🔒、vcs 则是显示版本控制;POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 控制终端右侧显示内容:status 命令返回的状态、history 历史记录数以及 time 时间等;设置 DEFAULT_USER 可以隐藏登录该用户时终端左侧显示的用户名。

安装插件

  • zsh-autosuggestions 终端输入

    1
    git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

    将 zsh-autosuggestions 的源码 clone 到 ~/.oh-my-zsh/custom/plugins。打开 ~/.zshrc,将 zsh-autosuggestions 添加到 plugins=() 行的括号中,多个插件用空格分隔。

  • zsh-syntax-highlighting 终端输入

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

    将 zsh-syntax-highlighting 的源码 clone 到 ~/.oh-my-zsh/custom/plugins。打开 ~/.zshrc,将 zsh-syntax-highlighting 添加到 plugins=() 行的括号中,多个插件用空格分隔。