https://github.com/robbyrussell/oh-my-zsh

详情:https://zhuanlan.zhihu.com/p/58073103

安装

第一步 → 把 oh-my-zsh 项目 Clone 下来:
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
第二步 → 复制 .zshrc
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
第三步 → 更改你的默认 Shell
chsh -s /bin/zsh

[

](https://www.jianshu.com/p/7162c4b7a438)
用「zsh」「oh my zsh」「powerlevel10k」,打造属于你的终端环境https://www.jianshu.com/p/7162c4b7a438

代码高亮配置
https://github.com/sirius1024/iterm2-with-oh-my-zsh

主题

powerlevel10k

https://github.com/romkatv/powerlevel10k
https://github.com/romkatv/powerlevel10k#configuration

git status

When using Lean, Classic or Rainbow style, Git status may look like this:
feature:master wip ⇣42⇡42 ⇠42⇢42 *42 merge ~42 +42 !42 ?42

Symbol Meaning Source
feature current branch; replaced with #tagor @commit if not on a branch git status —ignore-submodules=dirty
master remote tracking branch; only shown if different from local branch git rev-parse —abbrev-ref —symbolic-full-name @{upstream}
wip the latest commit’s summary contains “wip” or “WIP” git show —pretty=%s —no-patch HEAD
⇣42 this many commits behind the remote git rev-list —right-only —count HEAD…@{upstream}
⇡42 this many commits ahead of the remote git rev-list —left-only —count HEAD…@{upstream}
⇠42 this many commits behind the push remote git rev-list —right-only —count HEAD…@{push}
⇢42 this many commits ahead of the push remote git rev-list —left-only —count HEAD…@{push}
*42 this many stashes git stash list
merge repository state git status —ignore-submodules=dirty
~42 this many merge conflicts git status —ignore-submodules=dirty
+42 this many staged changes git status —ignore-submodules=dirty
!42 this many unstaged changes git status —ignore-submodules=dirty
?42 this many untracked files git status —ignore-submodules=dirty
the number of staged, unstaged or untracked files is unknown echo $POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY or git config —get bash.showDirtyState

插件

高亮代码

作用:命令错误会显示红色,直到你输入正确才会变绿色

  1. // 进入自定义插件目录
  2. cd $ZSH_CUSTOM/plugins/
  3. cd ~/.oh-my-zsh/custom/plugins/
  4. git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
  5. vim ~/.zshrc
  6. //新增 pluginds
  7. //位置放在最后一个
  8. plugins = (
  9. git
  10. zsh-syntax-highlighting
  11. )
  12. // 添加到最后一行
  13. source /User/lxg/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
  14. :wq
  15. source ~/.zshrc

可选择 补全命令

// 进入自定义插件目录
cd $ZSH_CUSTOM/plugins/
cd ~/.oh-my-zsh/custom/plugins/

git clone https://github.com/zsh-users/zsh-autosuggestions

vim ~/.zshrc

//新增 pluginds
plugins = (
    git
    zsh-autosuggestions
)

source ~/.zshrc

有同学说补全命令的字体不太清晰,与背景颜色太过相近,其实可以自己调整一下字体颜色。 Preferences -> Profiles -> Colors 中有Foreground是标准字体颜色,ANSI Colors中Bright的第一个是补全的字体颜色。

git

alias

Alias Command
g git
ga git add
gaa git add —all
gapa git add —patch
gau git add —update
gav git add —verbose
gap git apply
gapt git apply —3way
gb git branch
gba git branch -a
gbd git branch -d
gbda git branch —no-color —merged | grep -vE “^([+]|\s($(git_main_branch)|$(git_develop_branch))\s*$)” | xargs git branch -d 2>/dev/null
gbD git branch -D
gbl git blame -b -w
gbnm git branch —no-merged
gbr git branch —remote
gbs git bisect
gbsb git bisect bad
gbsg git bisect good
gbsr git bisect reset
gbss git bisect start
gc git commit -v
gc! git commit -v —amend
gcn! git commit -v —no-edit —amend
gca git commit -v -a
gca! git commit -v -a —amend
gcan! git commit -v -a —no-edit —amend
gcans! git commit -v -a -s —no-edit —amend
gcam git commit -a -m
gcas git commit -a -s
gcasm git commit -a -s -m
gcsm git commit -s -m
gcb git checkout -b
gcf git config —list
gcl git clone —recurse-submodules
gccd git clone —recurse-submodules “$@” && cd “$(basename $_ .git)”
gclean git clean -id
gpristine git reset —hard && git clean -dffx
gcm git checkout $(git_main_branch)
gcd git checkout $(git_develop_branch)
gcmsg git commit -m
gco git checkout
gcor git checkout —recurse-submodules
gcount git shortlog -sn
gcp git cherry-pick
gcpa git cherry-pick —abort
gcpc git cherry-pick —continue
gcs git commit -S
gd git diff
gdca git diff —cached
gdcw git diff —cached —word-diff
gdct git describe —tags $(git rev-list —tags —max-count=1)
gds git diff —staged
gdt git diff-tree —no-commit-id —name-only -r
gdnolock git diff $@ “:(exclude)package-lock.json” “:(exclude)*.lock”
gdup git diff @{upstream}
gdv git diff -w $@ | view -
gdw git diff —word-diff
gf git fetch
gfa git fetch —all —prune
gfg git ls-files | grep
gfo git fetch origin
gg git gui citool
gga git gui citool —amend
ggf git push —force origin $(current_branch)
ggfl git push —force-with-lease origin $(current_branch)
ggl git pull origin $(current_branch)
ggp git push origin $(current_branch)
ggpnp ggl && ggp
ggpull git pull origin “$(git_current_branch)”
ggpur ggu
ggpush git push origin “$(git_current_branch)”
ggsup git branch —set-upstream-to=origin/$(git_current_branch)
ggu git pull —rebase origin $(current_branch)
gpsup git push —set-upstream origin $(git_current_branch)
ghh git help
gignore git update-index —assume-unchanged
gignored git ls-files -v | grep “^[[:lower:]]”
git-svn-dcommit-push git svn dcommit && git push github $(git_main_branch):svntrunk
gk gitk —all —branches &!
gke gitk —all $(git log -g —pretty=%h) &!
gl git pull
glg git log —stat
glgp git log —stat -p
glgg git log —graph
glgga git log —graph —decorate —all
glgm git log —graph —max-count=10
glo git log —oneline —decorate
glol git log —graph —pretty=’%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset’
glols git log —graph —pretty=’%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset’ —stat
glod git log —graph —pretty=’%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset’
glods git log —graph —pretty=’%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset’ —date=short
glola git log —graph —pretty=’%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset’ —all
glog git log —oneline —decorate —graph
gloga git log —oneline —decorate —graph —all
glp git log —pretty=
gm git merge
gmom git merge origin/$(git_main_branch)
gmtl git mergetool —no-prompt
gmtlvim git mergetool —no-prompt —tool=vimdiff
gmum git merge upstream/$(git_main_branch)
gma git merge —abort
gp git push
gpd git push —dry-run
gpf git push —force-with-lease
gpf! git push —force
gpoat git push origin —all && git push origin —tags
gpr git pull —rebase
gpu git push upstream
gpv git push -v
gr git remote
gra git remote add
grb git rebase
grba git rebase —abort
grbc git rebase —continue
grbd git rebase $(git_develop_branch)
grbi git rebase -i
grbm git rebase $(git_main_branch)
grbo git rebase —onto
grbs git rebase —skip
grev git revert
grh git reset
grhh git reset —hard
groh git reset origin/$(git_current_branch) —hard
grm git rm
grmc git rm —cached
grmv git remote rename
grrm git remote remove
grs git restore
grset git remote set-url
grss git restore —source
grst git restore —staged
grt cd “$(git rev-parse —show-toplevel || echo .)”
gru git reset —
grup git remote update
grv git remote -v
gsb git status -sb
gsd git svn dcommit
gsh git show
gsi git submodule init
gsps git show —pretty=short —show-signature
gsr git svn rebase
gss git status -s
gst git status
gsta git stash push
gsta git stash save
gstaa git stash apply
gstc git stash clear
gstd git stash drop
gstl git stash list
gstp git stash pop
gsts git stash show —text
gstu git stash —include-untracked
gstall git stash —all
gsu git submodule update
gsw git switch
gswc git switch -c
gswm git switch $(git_main_branch)
gswd git switch $(git_develop_branch)
gts git tag -s
gtv git tag | sort -V
gtl gtl(){ git tag —sort=-v:refname -n -l ${1}* }; noglob gtl
gunignore git update-index —no-assume-unchanged
gunwip git log -n 1 | grep -q -c “—wip—“ && git reset HEAD~1
gup git pull —rebase
gupv git pull —rebase -v
gupa git pull —rebase —autostash
gupav git pull —rebase —autostash -v
glum git pull upstream $(git_main_branch)
gwch git whatchanged -p —abbrev-commit —pretty=medium
gwip git add -A; git rm $(git ls-files —deleted) 2> /dev/null; git commit —no-verify —no-gpg-sign -m “—wip— [skip ci]”
gam git am
gamc git am —continue
gams git am —skip
gama git am —abort
gamscp git am —show-current-patch