ZSH & iTerm2 的最佳实现

ZSH & iTerm2 的最佳实现

最终效果

0x01 安装 iTerm 2

iTerm 2 官网: https://www.iterm2.com/

0x02 设置字体

安装 powerline 字体, 适配 Agnoster 主题

Powerline Font Github : https://github.com/powerline/fonts

在iTerm 2 设置 powerline 字体,个人喜欢 Source Code Pro for Powerline

0x03 设置颜色方案

Solarized Github: https://github.com/altercation/solarized

在 iTerm 2 已经预安装了 Solarized 配色方案,在 color 配色方案选择 Solarized Dark

完了可以选择一张背景图片,并设置合适的透明度。

0x04 安装 oh-my-zsh

mac os 预装了 zsh,切换 shell :

1
chsh -s $(which zsh)

oh my zsh 官网:https://github.com/ohmyzsh/ohmyzsh

oh-my-zsh 的安装:

1
2
3
4
# curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# or wget
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

bash 的环境变量配置文件 ~/.bash_profile , 而 zsh 的环境变量配置文件是 ~/.zshrc

0x05 agnoster 主题

oh my zsh 官方为用户提供了上百种主题,在 ~/.zshrc 文件中配置主题:

1
ZSH_THEME="agnoster"

Agnoster 官网: https://github.com/agnoster/agnoster-zsh-theme

  1. 测试字体是否支持

    1
    $ echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699"
  2. 路径前缀太长的问题,在 ~/.oh-my-zsh/themes 路径下找到 agnoster.zsh-theme 文件,将里面的 build_prompt 下的 prompt_context 字段,注释掉即可。

0x06 oh-my-zsh插件配置

~/.zshrc 文件中配置插件:

1
plugins=(autojump sublime osx zsh-syntax-highlighting git-dw)

1. 推荐插件 autojump

j 是 autojump 命令的简写

  • j: 快速跳转
  • jo: 快速打开

ps: 需要安装autojump的mac平台插件配合使用

2. 推荐插件 osx

  • ofd: 用 Finder 打开当前目录
  • cdf: cd 到当前 Finder 目录
  • pfd: 打印当前 Finder 路径
  • pfs: 打印当前 Finder 选择的文件路径

3. 推荐插件 git

  • gl: git pull
  • gs: git status
  • ga: git add
  • gaa: git add –all
  • gc: git commit
  • gcm: git commit -m
  • gp: git push
  • gb: git branch
  • gba: git branch -a
  • gbd: git branch -d
  • gco: git checkout

4. 推荐插件 sublime

  • st: 用 Sublime Text 打开文件

  • stt: 用 Sublime Text 打开当前目录

  • sst: sudo st,用于编辑系统文件

  • find_project: 从当前目录往上(parent directory)查找 sublime, git 工程

  • create_project: 创建 sublime 工程

0x07 自定义插件

由于 zsh 推荐的插件 git 有一些别名比较难记,所以考虑自定义一个插件 git-dw

1. 创建 git-dw.plugin.zsh 文件

~/.oh-my-zsh/custom/plugins/ 创建 /git-dw/git-dw.plugin.zsh

2. 自定义别名

编辑 git-dw.plugin.zsh 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#
# Aliases
#

alias g='git'

alias ga='git add'
alias gaa='git add --all'

alias gb='git branch'
alias gba='git branch -a'
alias gbd='git branch -d'
alias gbD='git branch -D'

alias gc='git commit'
alias gcm='git commit -m'
alias gc!='git commit --amend'
# alias gcam='git commit -a -m'
# alias gcsm='git commit -s -m'

alias gco='git checkout'
alias gcob='git checkout -b'

alias gcf='git config --list'

# alias gcl='git clone --recurse-submodules'

# alias gclean='git clean -id'
# alias gpristine='git reset --hard && git clean -dfx'


alias gf='git fetch'
alias gfap='git fetch --all --prune'

alias ggpull='git pull origin "$(git_current_branch)"'
alias ggpush='git push origin "$(git_current_branch)"'

alias gh='git help'

alias gl='git pull'
# alias glr='git pull --rebase'
# alias glrv='git pull --rebase -v'
# alias glra='git pull --rebase --autostash'
# alias glrav='git pull --rebase --autostash -v'
# alias glum='git pull upstream master'

alias gm='git merge'

# alias gmom='git merge origin/master'
# alias gmt='git mergetool --no-prompt'
# alias gmtvim='git mergetool --no-prompt --tool=vimdiff'
# alias gmum='git merge upstream/master'
# alias gma='git merge --abort'

alias gp='git push'

alias gr='git remote'
alias grv='git remote -v'
alias gra='git remote add'
alias grmv='git remote rename'
alias grrm='git remote remove'
alias grset='git remote set-url'


# alias grb='git rebase'
# alias grba='git rebase --abort'
# alias grbc='git rebase --continue'
# alias grbd='git rebase develop'
# alias grbi='git rebase -i'
# alias grbm='git rebase master'
# alias grbs='git rebase --skip'
# alias grev='git revert'
# alias grh='git reset'
# alias grhh='git reset --hard'
# alias groh='git reset origin/$(git_current_branch) --hard'
# alias grm='git rm'
# alias grmc='git rm --cached'
# alias grs='git restore'
# alias grss='git restore --source'
# alias grt='cd "$(git rev-parse --show-toplevel || echo .)"'
# alias gru='git reset --'
# alias grup='git remote update'
# alias grv='git remote -v'

alias gs='git status'

alias gst='git stash'
# alias gstaa='git stash apply'
# alias gstc='git stash clear'
# alias gstd='git stash drop'
# alias gstl='git stash list'
# alias gstp='git stash pop'
# alias gsts='git stash show --text'
# alias gstall='git stash --all'

# alias gsu='git submodule update'
# alias gsw='git switch'
# alias gswc='git switch -c'

alias gt='git tag'
# alias gts='git tag -s'
# alias gtv='git tag | sort -V'

3. 自定义方法

1
2
3
4
5
6
7
8
9
# Pretty log messages
function _git_log_prettily(){
if ! [ -z $1 ]; then
git log --pretty=$1
fi
}
compdef _git _git_log_prettily=git-log

...

4. 添加 README.md

5. 应用插件

~/.zshrc 文件中应用插件:

1
plugins=(... git-dw)

现在你重启 shell 就可以看到结果了。

0x08 配置环境变量

~/.zshrc 文件最顶部添加:

1
export PATH=/Users/**/Library/Android/sdk/platform-tools:$PATH
作者

Dench

发布于

2020-02-11

更新于

2020-02-11

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×