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 |
插件
高亮代码
作用:命令错误会显示红色,直到你输入正确才会变绿色
// 进入自定义插件目录cd $ZSH_CUSTOM/plugins/cd ~/.oh-my-zsh/custom/plugins/git clone https://github.com/zsh-users/zsh-syntax-highlighting.gitvim ~/.zshrc//新增 pluginds//位置放在最后一个plugins = (gitzsh-syntax-highlighting)// 添加到最后一行source /User/lxg/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh:wqsource ~/.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 |
