Created
June 23, 2022 18:23
-
-
Save dharmx/7959b029ec249e638278c4906b2aa9a8 to your computer and use it in GitHub Desktop.
Monolithic .zshrc file that uses zplug.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ZDOTDIR="$HOME" | |
[ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env" | |
# Colors | |
# black | |
foreground='#d4d4d5' | |
background='#101317' | |
color0='#171c21' | |
color8='#949494' | |
# red | |
color1='#f87070' | |
color9='#f87070' | |
# green | |
color2='#79dcaa' | |
color10='#36c692' | |
# yellow | |
color3='#ffe59e' | |
color11='#ffe59e' | |
# blue | |
color4='#7ab0df' | |
color12='#7ab0df' | |
# magenta | |
color5='#c397d8' | |
color13='#b77ee0' | |
# cyan | |
color6='#70c0ba' | |
color14='#54ced6' | |
# white | |
color7='#d4d4d5' | |
color15='#ffffff' | |
# FZF colors | |
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS | |
--color fg:$color7,bg:$background,hl:$color1,fg+:$color13,bg+:$background,hl+:$color5 | |
--color info:$color2,prompt:$color12,spinner:$color12,pointer:$color3,marker:$color3 | |
" | |
# Fix LS_COLORS being unreadable. | |
export LS_COLORS='*.7z=38;5;40:*.WARC=38;5;40:*.a=38;5;40:*.arj=38;5;40:*.bz2=38;5;40:*.cpio=38;5;40:*.gz=38;5;40:*.lrz=38;5;40:*.lz=38;5;40:*.lzma=38;5;40:*.lzo=38;5;40:*.rar=38;5;40:*.s7z=38;5;40:*.sz=38;5;40:*.tar=38;5;40:*.tbz=38;5;40:*.tgz=38;5;40:*.warc=38;5;40:*.xz=38;5;40:*.z=38;5;40:*.zip=38;5;40:*.zipx=38;5;40:*.zoo=38;5;40:*.zpaq=38;5;40:*.zst=38;5;40:*.zstd=38;5;40:*.zz=38;5;40:*@.service=38;5;45:*AUTHORS=38;5;220;1:*CHANGES=38;5;220;1:*CONTRIBUTORS=38;5;220;1:*COPYING=38;5;220;1:*COPYRIGHT=38;5;220;1:*CodeResources=38;5;239:*Dockerfile=38;5;155:*HISTORY=38;5;220;1:*INSTALL=38;5;220;1:*LICENSE=38;5;220;1:*LS_COLORS=48;5;89;38;5;197;1;3;4;7:*MANIFEST=38;5;243:*Makefile=38;5;155:*NOTICE=38;5;220;1:*PATENTS=38;5;220;1:*PkgInfo=38;5;239:*README=38;5;220;1:*README.md=38;5;220;1:*README.rst=38;5;220;1:*VERSION=38;5;220;1:*authorized_keys=1:*cfg=1:*conf=1:*config=1:*core=38;5;241:*id_dsa=38;5;192;3:*id_ecdsa=38;5;192;3:*id_ed25519=38;5;192;3:*id_rsa=38;5;192;3:*known_hosts=1:*lock=38;5;248:*lockfile=38;5;248:*pm_to_blib=38;5;240:*rc=1:*.1p=38;5;7:*.32x=38;5;213:*.3g2=38;5;115:*.3ga=38;5;137;1:*.3gp=38;5;115:*.3p=38;5;7:*.82p=38;5;121:*.83p=38;5;121:*.8eu=38;5;121:*.8xe=38;5;121:*.8xp=38;5;121:*.A64=38;5;213:*.BAT=38;5;172:*.BUP=38;5;241:*.C=38;5;81:*.CFUserTextEncoding=38;5;239:*.DS_Store=38;5;239:*.F=38;5;81:*.F03=38;5;81:*.F08=38;5;81:*.F90=38;5;81:*.F95=38;5;81:*.H=38;5;110:*.IFO=38;5;114:*.JPG=38;5;97:*.M=38;5;110:*.MOV=38;5;114:*.PDF=38;5;141:*.PFA=38;5;66:*.PL=38;5;160:*.R=38;5;49:*.RData=38;5;178:*.Rproj=38;5;11:*.S=38;5;110:*.S3M=38;5;137;1:*.SKIP=38;5;244:*.TIFF=38;5;97:*.VOB=38;5;115;1:*.a00=38;5;213:*.a52=38;5;213:*.a64=38;5;213:*.a78=38;5;213:*.aac=38;5;137;1:*.accdb=38;5;60:*.accde=38;5;60:*.accdr=38;5;60:*.accdt=38;5;60:*.adf=38;5;213:*.adoc=38;5;184:*.afm=38;5;66:*.agda=38;5;81:*.agdai=38;5;110:*.ahk=38;5;41:*.ai=38;5;99:*.aiff=38;5;136;1:*.alac=38;5;136;1:*.allow=38;5;112:*.am=38;5;242:*.amr=38;5;137;1:*.ape=38;5;136;1:*.apk=38;5;215:*.application=38;5;116:*.aria2=38;5;241:*.asc=38;5;192;3:*.asciidoc=38;5;184:*.asf=38;5;115:*.asm=38;5;81:*.ass=38;5;117:*.atr=38;5;213:*.au=38;5;137;1:*.automount=38;5;45:*.avi=38;5;114:*.awk=38;5;172:*.bak=38;5;241:*.bash=38;5;172:*.bash_login=1:*.bash_logout=1:*.bash_profile=1:*.bat=38;5;172:*.bfe=38;5;192;3:*.bib=38;5;178:*.bin=38;5;124:*.bmp=38;5;97:*.bsp=38;5;215:*.c=38;5;81:*.c++=38;5;81:*.cab=38;5;215:*.caf=38;5;137;1:*.cap=38;5;29:*.car=38;5;57:*.cbr=38;5;141:*.cbz=38;5;141:*.cc=38;5;81:*.cda=38;5;136;1:*.cdi=38;5;213:*.cdr=38;5;97:*.chm=38;5;141:*.cl=38;5;81:*.clj=38;5;41:*.cljc=38;5;41:*.cljs=38;5;41:*.cljw=38;5;41:*.cnc=38;5;7:*.coffee=38;5;074;1:*.cp=38;5;81:*.cpp=38;5;81:*.cr=38;5;81:*.crx=38;5;215:*.cs=38;5;81:*.css=38;5;125;1:*.csv=38;5;78:*.ctp=38;5;81:*.cue=38;5;116:*.cxx=38;5;81:*.dart=38;5;51:*.dat=38;5;137;1:*.db=38;5;60:*.deb=38;5;215:*.def=38;5;7:*.deny=38;5;196:*.description=38;5;116:*.device=38;5;45:*.dhall=38;5;178:*.dicom=38;5;97:*.diff=48;5;197;38;5;232:*.directory=38;5;116:*.divx=38;5;114:*.djvu=38;5;141:*.dll=38;5;241:*.dmg=38;5;215:*.dmp=38;5;29:*.doc=38;5;111:*.dockerignore=38;5;240:*.docm=38;5;111;4:*.docx=38;5;111:*.drw=38;5;99:*.dtd=38;5;178:*.dts=38;5;137;1:*.dump=38;5;241:*.dwg=38;5;216:*.dylib=38;5;241:*.ear=38;5;215:*.el=38;5;81:*.elc=38;5;241:*.eln=38;5;241:*.eml=38;5;125;1:*.enc=38;5;192;3:*.entitlements=1:*.epf=1:*.eps=38;5;99:*.epsf=38;5;99:*.epub=38;5;141:*.err=38;5;160;1:*.error=38;5;160;1:*.etx=38;5;184:*.ex=38;5;7:*.example=38;5;7:*.f=38;5;81:*.f03=38;5;81:*.f08=38;5;81:*.f4v=38;5;115:*.f90=38;5;81:*.f95=38;5;81:*.fcm=38;5;137;1:*.feature=38;5;7:*.flac=38;5;136;1:*.flif=38;5;97:*.flv=38;5;115:*.fm2=38;5;213:*.fmp12=38;5;60:*.fnt=38;5;66:*.fon=38;5;66:*.for=38;5;81:*.fp7=38;5;60:*.ftn=38;5;81:*.fvd=38;5;124:*.fxml=38;5;178:*.gb=38;5;213:*.gba=38;5;213:*.gbc=38;5;213:*.gbr=38;5;7:*.gel=38;5;213:*.gemspec=38;5;41:*.ger=38;5;7:*.gg=38;5;213:*.ggl=38;5;213:*.gif=38;5;97:*.git=38;5;197:*.gitattributes=38;5;240:*.gitignore=38;5;240:*.gitmodules=38;5;240:*.go=38;5;81:*.gp3=38;5;115:*.gp4=38;5;115:*.gpg=38;5;192;3:*.gs=38;5;81:*.h=38;5;110:*.h++=38;5;110:*.hi=38;5;110:*.hidden-color-scheme=1:*.hidden-tmTheme=1:*.hin=38;5;242:*.hpp=38;5;110:*.hs=38;5;81:*.htm=38;5;125;1:*.html=38;5;125;1:*.hxx=38;5;110:*.icns=38;5;97:*.ico=38;5;97:*.ics=38;5;7:*.ii=38;5;110:*.img=38;5;124:*.iml=38;5;166:*.in=38;5;242:*.info=38;5;184:*.ini=1:*.ipa=38;5;215:*.ipk=38;5;213:*.ipynb=38;5;41:*.iso=38;5;124:*.j64=38;5;213:*.jad=38;5;215:*.jar=38;5;215:*.java=38;5;074;1:*.jhtm=38;5;125;1:*.jpeg=38;5;97:*.jpg=38;5;97:*.js=38;5;074;1:*.jsm=38;5;074;1:*.json=38;5;178:*.jsonl=38;5;178:*.jsonnet=38;5;178:*.jsp=38;5;074;1:*.kak=38;5;172:*.key=38;5;166:*.lagda=38;5;81:*.lagda.md=38;5;81:*.lagda.rst=38;5;81:*.lagda.tex=38;5;81:*.last-run=1:*.less=38;5;125;1:*.lhs=38;5;81:*.libsonnet=38;5;142:*.lisp=38;5;81:*.lnk=38;5;39:*.localized=38;5;239:*.localstorage=38;5;60:*.log=38;5;190:*.lua=38;5;81:*.m=38;5;110:*.m2v=38;5;114:*.m3u=38;5;116:*.m3u8=38;5;116:*.m4=38;5;242:*.m4a=38;5;137;1:*.m4v=38;5;114:*.map=38;5;7:*.markdown=38;5;184:*.md=38;5;184:*.md5=38;5;116:*.mdb=38;5;60:*.mde=38;5;60:*.mdump=38;5;241:*.merged-ca-bundle=1:*.mf=38;5;7:*.mfasl=38;5;7:*.mht=38;5;125;1:*.mi=38;5;7:*.mid=38;5;136;1:*.midi=38;5;136;1:*.mjs=38;5;074;1:*.mkd=38;5;184:*.mkv=38;5;114:*.mm=38;5;7:*.mobi=38;5;141:*.mod=38;5;137;1:*.moon=38;5;81:*.mount=38;5;45:*.mov=38;5;114:*.mp3=38;5;137;1:*.mp4=38;5;114:*.mp4a=38;5;137;1:*.mpeg=38;5;114:*.mpg=38;5;114:*.msg=38;5;178:*.msql=38;5;222:*.mtx=38;5;7:*.mustache=38;5;125;1:*.mysql=38;5;222:*.nc=38;5;60:*.ndjson=38;5;178:*.nds=38;5;213:*.nes=38;5;213:*.nfo=38;5;184:*.nib=38;5;57:*.nim=38;5;81:*.nimble=38;5;81:*.nix=38;5;155:*.nrg=38;5;124:*.nth=38;5;97:*.numbers=38;5;112:*.o=38;5;241:*.odb=38;5;111:*.odp=38;5;166:*.ods=38;5;112:*.odt=38;5;111:*.oga=38;5;137;1:*.ogg=38;5;137;1:*.ogm=38;5;114:*.ogv=38;5;115:*.old=38;5;242:*.opus=38;5;137;1:*.org=38;5;184:*.orig=38;5;241:*.otf=38;5;66:*.out=38;5;242:*.p12=38;5;192;3:*.p7s=38;5;192;3:*.pacnew=38;5;33:*.pages=38;5;111:*.pak=38;5;215:*.part=38;5;239:*.patch=48;5;197;38;5;232;1:*.path=38;5;45:*.pbxproj=1:*.pc=38;5;7:*.pcap=38;5;29:*.pcb=38;5;7:*.pcf=1:*.pcm=38;5;136;1:*.pdf=38;5;141:*.pem=38;5;192;3:*.pfa=38;5;66:*.pfb=38;5;66:*.pfm=38;5;66:*.pgn=38;5;178:*.pgp=38;5;192;3:*.pgsql=38;5;222:*.php=38;5;81:*.pi=38;5;7:*.pid=38;5;248:*.pk3=38;5;215:*.pl=38;5;208:*.plist=1:*.plt=38;5;7:*.ply=38;5;216:*.pm=38;5;203:*.png=38;5;97:*.pod=38;5;184:*.pot=38;5;7:*.pps=38;5;166:*.ppt=38;5;166:*.ppts=38;5;166:*.pptsm=38;5;166;4:*.pptx=38;5;166:*.pptxm=38;5;166;4:*.profile=1:*.properties=38;5;116:*.ps=38;5;99:*.psd=38;5;97:*.psf=1:*.pxd=38;5;97:*.pxm=38;5;97:*.py=38;5;41:*.pyc=38;5;240:*.qcow=38;5;124:*.r=38;5;49:*.r[0-9]{0,2}=38;5;239:*.rake=38;5;155:*.rb=38;5;41:*.rdata=38;5;178:*.rdf=38;5;7:*.rkt=38;5;81:*.rlib=38;5;241:*.rmvb=38;5;114:*.rnc=38;5;178:*.rng=38;5;178:*.rom=38;5;213:*.rpm=38;5;215:*.rs=38;5;81:*.rss=38;5;178:*.rst=38;5;184:*.rstheme=1:*.rtf=38;5;111:*.ru=38;5;7:*.s=38;5;110:*.s3m=38;5;137;1:*.sample=38;5;114:*.sass=38;5;125;1:*.sassc=38;5;244:*.save=38;5;213:*.sc=38;5;41:*.scala=38;5;41:*.scan=38;5;242:*.sch=38;5;7:*.scm=38;5;7:*.scpt=38;5;219:*.scss=38;5;125;1:*.sed=38;5;172:*.service=38;5;45:*.sfv=38;5;116:*.sgml=38;5;178:*.sh=38;5;172:*.sid=38;5;137;1:*.sig=38;5;192;3:*.signature=38;5;192;3:*.sis=38;5;7:*.sms=38;5;213:*.snapshot=38;5;45:*.socket=38;5;45:*.sparseimage=38;5;124:*.spl=38;5;7:*.sql=38;5;222:*.sqlite=38;5;60:*.srt=38;5;117:*.ssa=38;5;117:*.st=38;5;213:*.stackdump=38;5;241:*.state=38;5;248:*.stderr=38;5;160;1:*.stl=38;5;216:*.storyboard=38;5;196:*.strings=1:*.sty=38;5;7:*.sub=38;5;117:*.sublime-build=1:*.sublime-commands=1:*.sublime-keymap=1:*.sublime-project=1:*.sublime-settings=1:*.sublime-snippet=1:*.sublime-workspace=1:*.sug=38;5;7:*.sup=38;5;117:*.svg=38;5;99:*.swap=38;5;45:*.swift=38;5;219:*.swo=38;5;244:*.swp=38;5;244:*.sx=38;5;81:*.t=38;5;114:*.target=38;5;45:*.tcc=38;5;110:*.tcl=38;5;64;1:*.tdy=38;5;7:*.tex=38;5;184:*.textile=38;5;184:*.tf=38;5;168:*.tfm=38;5;7:*.tfnt=38;5;7:*.tfstate=38;5;168:*.tfvars=38;5;168:*.tg=38;5;7:*.theme=38;5;116:*.tif=38;5;97:*.tiff=38;5;97:*.timer=38;5;45:*.tmTheme=1:*.tmp=38;5;244:*.toast=38;5;124:*.toml=38;5;178:*.torrent=38;5;116:*.ts=38;5;115:*.tsv=38;5;78:*.ttf=38;5;66:*.twig=38;5;81:*.txt=38;5;253:*.typelib=38;5;60:*.un~=38;5;241:*.urlview=38;5;116:*.user-ca-bundle=1:*.v=38;5;81:*.vala=38;5;81:*.vapi=38;5;81:*.vb=38;5;81:*.vba=38;5;81:*.vbs=38;5;81:*.vcard=38;5;7:*.vcd=38;5;124:*.vcf=38;5;7:*.vdf=38;5;215:*.vdi=38;5;124:*.vfd=38;5;124:*.vhd=38;5;124:*.vhdx=38;5;124:*.vim=38;5;172:*.viminfo=1:*.vmdk=38;5;124:*.vob=38;5;115;1:*.vpk=38;5;215:*.vtt=38;5;117:*.war=38;5;215:*.wav=38;5;136;1:*.webloc=38;5;116:*.webm=38;5;115:*.webp=38;5;97:*.wma=38;5;137;1:*.wmv=38;5;114:*.woff=38;5;66:*.woff2=38;5;66:*.wrl=38;5;216:*.wv=38;5;136;1:*.wvc=38;5;136;1:*.xcconfig=1:*.xcf=38;5;7:*.xcsettings=1:*.xcuserstate=1:*.xcworkspacedata=1:*.xib=38;5;208:*.xla=38;5;76:*.xln=38;5;7:*.xls=38;5;112:*.xlsx=38;5;112:*.xlsxm=38;5;112;4:*.xltm=38;5;73;4:*.xltx=38;5;73:*.xml=38;5;178:*.xpi=38;5;215:*.xpm=38;5;97:*.xsd=38;5;178:*.xsh=38;5;41:*.yaml=38;5;178:*.yml=38;5;178:*.z[0-9]{0,2}=38;5;239:*.zcompdump=38;5;241:*.zig=38;5;81:*.zlogin=1:*.zlogout=1:*.zprofile=1:*.zsh=38;5;172:*.zshenv=1:*.zwc=38;5;241:*.zx[0-9]{0,2}=38;5;239:bd=38;5;68:ca=38;5;17:cd=38;5;113;1:di=34:do=38;5;127:ex=38;5;208;1:pi=38;5;126:fi=0:ln=target:mh=38;5;222;1:no=0:or=48;5;196;38;5;232;1:ow=38;5;220;1:sg=48;5;3;38;5;0:su=38;5;220;1;3;100;1:so=38;5;197:st=38;5;86;48;5;234:tw=48;5;235;38;5;139;3:' | |
export GPG_TTY="${TTY:-$(tty)}" | |
export SUDO_PROMPT="passwd: " | |
export TERMINAL="st" | |
export BROWSER="qutebrowser" | |
export VISUAL="nvim" | |
export EDITOR="nvim" | |
export MANPAGER="less -s -M +Gg" | |
export LESS="--RAW-CONTROL-CHARS" | |
export XDG_CONFIG_HOME="$HOME/.config" | |
export XDG_CACHE_HOME="$HOME/.cache" | |
export XDG_DATA_HOME="$HOME/.local/share" | |
export XDG_STATE_HOME="$HOME/.local/state" | |
export XDG_CONFIG_DIRS="/etc/xdg" | |
export XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/flatpak/exports/share:$XDG_DATA_HOME/flatpak/exports/share" | |
export XDG_RUNTIME_DIR="/run/user/$(id -u)" | |
export XDG_DESKTOP_DIR="$HOME/Desktop" | |
export XDG_DOWNLOAD_DIR="$HOME/Downloads" | |
export XDG_TEMPLATES_DIR="$HOME/Templates" | |
export XDG_PUBLICSHARE_DIR="$HOME/Public" | |
export XDG_DOCUMENTS_DIR="$HOME/Documents" | |
export XDG_MUSIC_DIR="$HOME/Music" | |
export XDG_PICTURES_DIR="$HOME/Pictures" | |
export XDG_VIDEOS_DIR="$HOME/Videos" | |
export PATH="$PATH:$XDG_DATA_HOME/gem/ruby/3.0.0/bin:$XDG_DATA_HOME/../bin" | |
export LESS_TERMCAP_mb=$'\e[1;32m' | |
export LESS_TERMCAP_md=$'\e[1;32m' | |
export LESS_TERMCAP_me=$'\e[0m' | |
export LESS_TERMCAP_se=$'\e[0m' | |
export LESS_TERMCAP_so=$'\e[01;33m' | |
export LESS_TERMCAP_ue=$'\e[0m' | |
export LESS_TERMCAP_us=$'\e[1;4;31m' | |
export AWT_TOOLKIT="MToolkit" | |
export _JAVA_AWT_WM_NONREPARENTING=1 | |
export JDK_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Djdk.gtk.version=2.2 -Dsun.java2d.opengl=true' | |
export RANGER_DEVICONS_SEPARATOR=" " | |
export SXHKD_SHELL="zsh" | |
### Spotify Customization | |
if [ -d "$HOME/.spicetify" ]; then | |
export SPICETIFY_INSTALL="$HOME/.spicetify" | |
export PATH="$PATH:$HOME/.spicetify" | |
fi | |
### Android / Lineage Dev | |
if [ -d "$XDG_CONFIG_HOME/adb-fastboot/platform-tools" ]; then | |
export PATH="$PATH:$XDG_CONFIG_HOME/adb-fastboot/platform-tools" | |
fi | |
### Aliases | |
alias g=git | |
alias ga='git add' | |
alias gaa='git add --all' | |
alias gam='git am' | |
alias gama='git am --abort' | |
alias gamc='git am --continue' | |
alias gams='git am --skip' | |
alias gamscp='git am --show-current-patch' | |
alias gap='git apply' | |
alias gapa='git add --patch' | |
alias gapt='git apply --3way' | |
alias gau='git add --update' | |
alias gav='git add --verbose' | |
alias gb='git branch' | |
alias gbD='git branch -D' | |
alias gba='git branch -a' | |
alias gbd='git branch -d' | |
alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch -d 2>/dev/null' | |
alias gbl='git blame -b -w' | |
alias gbnm='git branch --no-merged' | |
alias gbr='git branch --remote' | |
alias gbs='git bisect' | |
alias gbsb='git bisect bad' | |
alias gbsg='git bisect good' | |
alias gbsr='git bisect reset' | |
alias gbss='git bisect start' | |
alias gc='git commit -v' | |
alias 'gc!'='git commit -v --amend' | |
alias gca='git commit -v -a' | |
alias 'gca!'='git commit -v -a --amend' | |
alias gcam='git commit -a -m' | |
alias 'gcan!'='git commit -v -a --no-edit --amend' | |
alias 'gcans!'='git commit -v -a -s --no-edit --amend' | |
alias gcas='git commit -a -s' | |
alias gcasm='git commit -a -s -m' | |
alias gcb='git checkout -b' | |
alias gcd='git checkout $(git_develop_branch)' | |
alias gcf='git config --list' | |
alias gclr='git clone --recurse-submodules' | |
alias gcl='git clone' | |
alias gcld='git clone --depth' | |
alias gclean='git clean -id' | |
alias gcm='git checkout $(git_main_branch)' | |
alias gcmsg='git commit -m' | |
alias 'gcn!'='git commit -v --no-edit --amend' | |
alias gco='git checkout' | |
alias gcor='git checkout --recurse-submodules' | |
alias gcount='git shortlog -sn' | |
alias gcp='git cherry-pick' | |
alias gcpa='git cherry-pick --abort' | |
alias gcpc='git cherry-pick --continue' | |
alias gcs='git commit -S' | |
alias gcsm='git commit -s -m' | |
alias gcss='git commit -S -s' | |
alias gcssm='git commit -S -s -m' | |
alias gd='git diff' | |
alias gdca='git diff --cached' | |
alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' | |
alias gdcw='git diff --cached --word-diff' | |
alias gds='git diff --staged' | |
alias gdt='git diff-tree --no-commit-id --name-only -r' | |
alias gdup='git diff @{upstream}' | |
alias gdw='git diff --word-diff' | |
alias gf='git fetch' | |
alias gfa='git fetch --all --prune --jobs=10' | |
alias gfg='git ls-files | grep' | |
alias gfo='git fetch origin' | |
alias gg='git gui citool' | |
alias gga='git gui citool --amend' | |
alias ggpull='git pull origin "$(git_current_branch)"' | |
alias ggpur=ggu | |
alias ggpush='git push origin "$(git_current_branch)"' | |
alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' | |
alias ghh='git help' | |
alias gignore='git update-index --assume-unchanged' | |
alias gignored='git ls-files -v | grep "^[[:lower:]]"' | |
alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' | |
alias gk='\gitk --all --branches &!' | |
alias gke='\gitk --all $(git log -g --pretty=%h) &!' | |
alias gl='git pull' | |
alias glg='git log --stat' | |
alias glgg='git log --graph' | |
alias glgga='git log --graph --decorate --all' | |
alias glgm='git log --graph --max-count=10' | |
alias glgp='git log --stat -p' | |
alias glo='git log --oneline --decorate' | |
alias globurl='noglob urlglobber ' | |
alias glod='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'\' | |
alias glods='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'\'' --date=short' | |
alias glog='git log --oneline --decorate --graph' | |
alias gloga='git log --oneline --decorate --graph --all' | |
alias glol='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\' | |
alias glola='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\'' --all' | |
alias glols='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\'' --stat' | |
alias glp=_git_log_prettily | |
alias glum='git pull upstream $(git_main_branch)' | |
alias gm='git merge' | |
alias gma='git merge --abort' | |
alias gmom='git merge origin/$(git_main_branch)' | |
alias gmtl='git mergetool --no-prompt' | |
alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' | |
alias gmum='git merge upstream/$(git_main_branch)' | |
alias gp='git push' | |
alias gpd='git push --dry-run' | |
alias gpf='git push --force-with-lease' | |
alias 'gpf!'='git push --force' | |
alias gpoat='git push origin --all && git push origin --tags' | |
alias gpr='git pull --rebase' | |
alias gpristine='git reset --hard && git clean -dffx' | |
alias gpsup='git push --set-upstream origin $(git_current_branch)' | |
alias gpu='git push upstream' | |
alias gpv='git push -v' | |
alias gr='git remote' | |
alias gra='git remote add' | |
alias grb='git rebase' | |
alias grwh='git rm --cached `git ls-files -i -c --exclude-from=.gitignore`' | |
alias grwhx='git ls-files -i -c --exclude-from=.gitignore | xargs git rm --cached' | |
alias grad='git rm -r --cached . && git add .' | |
alias grba='git rebase --abort' | |
alias grbc='git rebase --continue' | |
alias grbd='git rebase $(git_develop_branch)' | |
alias grbi='git rebase -i' | |
alias grbm='git rebase $(git_main_branch)' | |
alias grbo='git rebase --onto' | |
alias grbom='git rebase origin/$(git_main_branch)' | |
alias grbs='git rebase --skip' | |
alias grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}' | |
alias grev='git revert' | |
alias grh='git reset' | |
alias grhh='git reset --hard' | |
alias grm='git rm' | |
alias grmc='git rm --cached' | |
alias grmv='git remote rename' | |
alias groh='git reset origin/$(git_current_branch) --hard' | |
alias grrm='git remote remove' | |
alias grs='git restore' | |
alias grset='git remote set-url' | |
alias grss='git restore --source' | |
alias grst='git restore --staged' | |
alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' | |
alias gru='git reset --' | |
alias grup='git remote update' | |
alias grv='git remote -v' | |
alias gsb='git status -sb' | |
alias gsd='git svn dcommit' | |
alias gsh='git show' | |
alias gsi='git submodule init' | |
alias gsps='git show --pretty=short --show-signature' | |
alias gsr='git svn rebase' | |
alias gss='git status -s' | |
alias gst='git status' | |
alias gsta='git stash push' | |
alias gstaa='git stash apply' | |
alias gstall='git stash --all' | |
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 gstu='gsta --include-untracked' | |
alias gsu='git submodule update' | |
alias gsw='git switch' | |
alias gswc='git switch -c' | |
alias gswd='git switch $(git_develop_branch)' | |
alias gswm='git switch $(git_main_branch)' | |
alias gtl='gtl(){ git tag --sort=-v:refname -n -l "${1}*" }; noglob gtl' | |
alias gts='git tag -s' | |
alias gtv='git tag | sort -V' | |
alias gunignore='git update-index --no-assume-unchanged' | |
alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1' | |
alias gup='git pull --rebase' | |
alias gupa='git pull --rebase --autostash' | |
alias gupav='git pull --rebase --autostash -v' | |
alias gupv='git pull --rebase -v' | |
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' | |
alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"' | |
### Utility functions | |
function _smooth_fzf() { | |
local fname | |
local current_dir=$PWD | |
cd "${XDG_CONFIG_HOME:-~/.config}" | |
fname="$(fzf)" || return | |
$EDITOR "$fname" | |
cd "$current_dir" | |
} | |
function _sudo_replace_buffer() { | |
local old=$1 new=$2 space=${2:+ } | |
# if the cursor is positioned in the $old part of the text, make | |
# the substitution and leave the cursor after the $new text | |
if [[ $CURSOR -le ${#old} ]]; then | |
BUFFER="${new}${space}${BUFFER#$old }" | |
CURSOR=${#new} | |
# otherwise just replace $old with $new in the text before the cursor | |
else | |
LBUFFER="${new}${space}${LBUFFER#$old }" | |
fi | |
} | |
function _sudo_command_line() { | |
# If line is empty, get the last run command from history | |
[[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)" | |
# Save beginning space | |
local WHITESPACE="" | |
if [[ ${LBUFFER:0:1} = " " ]]; then | |
WHITESPACE=" " | |
LBUFFER="${LBUFFER:1}" | |
fi | |
{ | |
# If $SUDO_EDITOR or $VISUAL are defined, then use that as $EDITOR | |
# Else use the default $EDITOR | |
local EDITOR=${SUDO_EDITOR:-${VISUAL:-$EDITOR}} | |
# If $EDITOR is not set, just toggle the sudo prefix on and off | |
if [[ -z "$EDITOR" ]]; then | |
case "$BUFFER" in | |
sudo\ -e\ *) _sudo_replace_buffer "sudo -e" "" ;; | |
sudo\ *) _sudo_replace_buffer "sudo" "" ;; | |
*) LBUFFER="sudo $LBUFFER" ;; | |
esac | |
return | |
fi | |
# Check if the typed command is really an alias to $EDITOR | |
# Get the first part of the typed command | |
local cmd="${${(Az)BUFFER}[1]}" | |
# Get the first part of the alias of the same name as $cmd, or $cmd if no alias matches | |
local realcmd="${${(Az)aliases[$cmd]}[1]:-$cmd}" | |
# Get the first part of the $EDITOR command ($EDITOR may have arguments after it) | |
local editorcmd="${${(Az)EDITOR}[1]}" | |
# Note: ${var:c} makes a $PATH search and expands $var to the full path | |
# The if condition is met when: | |
# - $realcmd is '$EDITOR' | |
# - $realcmd is "cmd" and $EDITOR is "cmd" | |
# - $realcmd is "cmd" and $EDITOR is "cmd --with --arguments" | |
# - $realcmd is "/path/to/cmd" and $EDITOR is "cmd" | |
# - $realcmd is "/path/to/cmd" and $EDITOR is "/path/to/cmd" | |
# or | |
# - $realcmd is "cmd" and $EDITOR is "cmd" | |
# - $realcmd is "cmd" and $EDITOR is "/path/to/cmd" | |
# or | |
# - $realcmd is "cmd" and $EDITOR is /alternative/path/to/cmd that appears in $PATH | |
if [[ "$realcmd" = (\$EDITOR|$editorcmd|${editorcmd:c}) \ | |
|| "${realcmd:c}" = ($editorcmd|${editorcmd:c}) ]] \ | |
|| builtin which -a "$realcmd" | command grep -Fx -q "$editorcmd"; then | |
_sudo_replace_buffer "$cmd" "sudo -e" | |
return | |
fi | |
# Check for editor commands in the typed command and replace accordingly | |
case "$BUFFER" in | |
$editorcmd\ *) _sudo_replace_buffer "$editorcmd" "sudo -e" ;; | |
\$EDITOR\ *) _sudo_replace_buffer '$EDITOR' "sudo -e" ;; | |
sudo\ -e\ *) _sudo_replace_buffer "sudo -e" "$EDITOR" ;; | |
sudo\ *) _sudo_replace_buffer "sudo" "" ;; | |
*) LBUFFER="sudo $LBUFFER" ;; | |
esac | |
} always { | |
# Preserve beginning space | |
LBUFFER="${WHITESPACE}${LBUFFER}" | |
# Redisplay edit buffer (compatibility with zsh-syntax-highlighting) | |
zle redisplay | |
} | |
} | |
function _vi_search_fix() { | |
zle vi-cmd-mode | |
zle .vi-history-search-backward | |
} | |
function _default_greeter() { | |
c1="\033[1;30m" | |
c2="\033[1;31m" | |
c3="\033[1;32m" | |
c4="\033[1;33m" | |
c5="\033[1;34m" | |
c6="\033[1;35m" | |
c7="\033[1;36m" | |
c8="\033[1;37m" | |
reset="\033[1;0m" | |
printf "\n $c1▇▇ $c2▇▇ $c3▇▇ $c4▇▇ $c5▇▇ $c6▇▇ $c7▇▇ $c8▇▇ $reset\n\n" | |
} | |
### ZSH options | |
YTFZF_CONFIG_DIR="$XDG_CONFIG_HOME/ytfzf" | |
YTFZF_CONFIG_FILE="$YTFZF_CONFIG_DIR/conf.sh" | |
MANPAGER='nvim +Man! +"set nocul" +"set noshowcmd" +"set noruler" +"set noshowmode" +"set laststatus=0" +"set showtabline=0" +"set nonumber"' | |
umask 022 | |
zmodload zsh/zle | |
zmodload zsh/zpty | |
zmodload zsh/complist | |
autoload _vi_search_fix | |
autoload -Uz colors | |
autoload -U compinit | |
colors | |
zle -N _vi_search_fix | |
zle -N _sudo_command_line | |
# adapted from https://is.gd/RRNqsV | |
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} | |
zstyle ":completion:*" sort false | |
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*' | |
zstyle ":completion:*" special-dirs true | |
zstyle ":completion:*" ignored-patterns | |
zstyle ":completion:*" completer _complete | |
zstyle ':autocomplete:*' default-context '' | |
zstyle ':autocomplete:*' min-delay 0.05 | |
zstyle ':autocomplete:*' min-input 1 | |
zstyle ':autocomplete:*' ignored-input '' | |
zstyle ':autocomplete:*' list-lines 16 | |
zstyle ':autocomplete:history-search:*' list-lines 16 | |
zstyle ':autocomplete:history-incremental-search-*:*' list-lines 16 | |
zstyle ':autocomplete:*' recent-dirs cdr | |
zstyle ':autocomplete:*' insert-unambiguous no | |
zstyle ':autocomplete:*' widget-style complete-word | |
zstyle ':autocomplete:*' fzf-completion no | |
zstyle ':autocomplete:*' add-space executables aliases functions builtins reserved-words commands | |
HISTFILE="$XDG_CACHE_HOME/zsh/.zhistory" | |
HISTSIZE=10000 | |
SAVEHIST=10000 | |
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor regexp root line) | |
ZSH_HIGHLIGHT_MAXLENGTH=512 | |
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=$color8,bold" | |
while read -r opt | |
do | |
setopt $opt | |
done <<-EOF | |
AUTOCD | |
AUTO_MENU | |
AUTO_PARAM_SLASH | |
COMPLETE_IN_WORD | |
NO_MENU_COMPLETE | |
HASH_LIST_ALL | |
ALWAYS_TO_END | |
NOTIFY | |
NOHUP | |
MAILWARN | |
INTERACTIVE_COMMENTS | |
NOBEEP | |
APPEND_HISTORY | |
SHARE_HISTORY | |
INC_APPEND_HISTORY | |
EXTENDED_HISTORY | |
HIST_IGNORE_ALL_DUPS | |
HIST_IGNORE_SPACE | |
HIST_NO_FUNCTIONS | |
HIST_EXPIRE_DUPS_FIRST | |
HIST_SAVE_NO_DUPS | |
HIST_REDUCE_BLANKS | |
EOF | |
while read -r opt | |
do | |
unsetopt $opt | |
done <<-EOF | |
FLOWCONTROL | |
NOMATCH | |
CORRECT | |
EQUALS | |
EOF | |
eval "$(zoxide init zsh)" | |
### Configure and load plugins using ZPLUG | |
ZPLUG_CACHE_DIR="$XDG_CACHE_HOME/zsh/zplug" | |
ZPLUG_REPOS="$XDG_DATA_HOME/zsh/zplug" | |
ZPLUG_HOME="$ZDOTDIR/zplug" | |
ZPLUG_BIN="$ZDOTDIR/bin" | |
ZPLUG_THREADS=10 | |
if [ ! -d "$ZPLUG_HOME" ]; then | |
echo "ZPLUG not found. Cloning..." | |
git clone --depth 1 https://github.com/zplug/zplug "$ZPLUG_HOME" | |
fi | |
source "$ZPLUG_HOME/init.zsh" | |
alias use="zplug" | |
use "zsh-users/zsh-history-substring-search", "depth:1" | |
use "zsh-users/zsh-syntax-highlighting", "depth:1" | |
use "marlonrichert/zsh-autocomplete", "depth:1" | |
use "hlissner/zsh-autopair", "depth:1" | |
use "zsh-users/zsh-autosuggestions", "depth:1" | |
use "junegunn/fzf-bin", "from:gh-r", "as:command", "rename-to:fzf" | |
use "romkatv/gitstatus", "depth:1" | |
use "MichaelAquilina/zsh-you-should-use", "depth:1" | |
unalias use | |
if ! zplug check --verbose | |
then | |
print -n "Install? [y/N]: " | |
if read -q | |
then | |
echo; zplug install | |
fi | |
fi | |
zplug load | |
### Keybindings | |
bindkey '^[[H' beginning-of-line | |
bindkey '^[[F' end-of-line | |
bindkey -s '^K' 'ls^M' | |
bindkey -s '^o' '_smooth_fzf^M' | |
# prepend sudo on the current commmand | |
bindkey -M emacs '' _sudo_command_line | |
bindkey -M vicmd '' _sudo_command_line | |
bindkey -M viins '' _sudo_command_line | |
# fix backspace and other stuff in vi-mode | |
bindkey -M viins '\e/' _vi_search_fix | |
bindkey "^?" backward-delete-char | |
bindkey "^H" backward-delete-char | |
bindkey "^U" backward-kill-line | |
### Load starship | |
eval "$(starship init zsh)" | |
export STARSHIP_CONFIG=$XDG_CONFIG_HOME/starship/starship.toml | |
greet="xbl" | |
greet_path="$HOME/.bin/eyecandy/$greet" | |
[ -f "$greet_path" ] && eval "$greet_path" || _default_greeter | |
unset greet_path greet | |
# vim:ft=zsh:nowrap |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment