zshrc 整理
之前是太懒——或者说是太勤快了,zshrc
文件基本上是每种机器一个,然后有一部分共用代码写到单独的文件里分别 source
。最近因为配置本身出了点问题,这才真正下手把 zshrc
好好整理了一下。
我从 oh my zsh 获得大部分的 plugin:据说 prezto 更快一些,但自从放弃 rvm 之后 oh my zsh 的性能也不再是瓶颈了。另外 oh my zsh 有个挺好用的选项是 ZSH_CUSTOM
,指定它为 git repo 中的文件夹,这样就可以把来自 oh my zsh 的 plugin 和 theme 和自己的配置分开管理了。
所以思路大体上是所有机器共用一个 git repo 中的 zshrc
文件,symbolic link 到用户目录下面。具体系统相关的配置,比如 OS X/BSD/Linux 区别的;以及不同机器用途的配置,比如公司的机器上需要有 perforce 的配置,用作终端的机器上有 mosh 的配置,都写成 oh my zsh 的 plugin,放到 git repo 中,ZSH_CUSTOM
指定的目录。最后每个机器上 touch
一个标识类别的文件,在 zshrc
里用一个巨丑的 if-elif-fi
来指定各类机器的 plugins 列表。
最终 HOME 目录看起来是这个样子的:
# 标识这台机器是个人用途的 mac
# pers-个人/serv-服务器/aka-公司
# mac-Mac/lnx-Linux/bsd-BSD
.m_pers_mac
.omz # oh my zsh 的目录
.xxconfig # git blessed 个人配置文件
├── omz # export ZSH_CUSTOM=$HOME/.xxconfig/omz
│ ├── plugins # 'x_' 是为了区别 oh my zsh 官方的前缀
│ │ ├── x_emacs
│ │ ├── x_global
│ │ ├── x_keychain
│ │ ├── x_mosh
│ │ ├── x_osx
│ │ ├── x_p4
│ │ ├── x_svn
│ │ └── x_tmux
│ └── themes
└── zshrc
.zshrc -> .xxconfig/zshrc # symbolic link