Created
April 8, 2018 10:13
-
-
Save niko/657421978356b64b713ddbc25bb4a33e to your computer and use it in GitHub Desktop.
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
# https://stackoverflow.com/questions/171563/whats-in-your-zshrc | |
#{{{ ZSH Modules | |
autoload -U compinit promptinit zcalc zsh-mime-setup | |
compinit | |
promptinit | |
zsh-mime-setup | |
#}}} | |
#{{{ Options | |
# why would you type 'cd dir' if you could just type 'dir'? | |
setopt AUTO_CD | |
# Now we can pipe to multiple outputs! | |
setopt MULTIOS | |
# This makes cd=pushd | |
setopt AUTO_PUSHD | |
# This will use named dirs when possible | |
setopt AUTO_NAME_DIRS | |
# If we have a glob this will expand it | |
setopt GLOB_COMPLETE | |
setopt PUSHD_MINUS | |
# No more annoying pushd messages... | |
# setopt PUSHD_SILENT | |
# blank pushd goes to home | |
setopt PUSHD_TO_HOME | |
# this will ignore multiple directories for the stack. Useful? I dunno. | |
setopt PUSHD_IGNORE_DUPS | |
# 10 second wait if you do something that will delete everything. I wish I'd had this before... | |
setopt RM_STAR_WAIT | |
# use magic (this is default, but it can't hurt!) | |
setopt ZLE | |
setopt CHECK_JOBS # ask if jobs are running before quitting | |
setopt HUP | |
setopt VI | |
# only fools wouldn't do this ;-) | |
export EDITOR="vi" | |
# If I could disable Ctrl-s completely I would! | |
setopt NO_FLOW_CONTROL | |
# Be Reasonable! | |
setopt NUMERIC_GLOB_SORT | |
# I don't know why I never set this before. | |
setopt EXTENDED_GLOB | |
# hows about arrays be awesome? (that is, frew${cool}frew has frew surrounding all the variables, not just first and last | |
setopt RC_EXPAND_PARAM | |
#}}} | |
# copy with a progress bar. | |
alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --" | |
#{{{ Completion Stuff | |
bindkey -M viins '\C-i' complete-word | |
# Faster! (?) | |
zstyle ':completion::complete:*' use-cache 1 | |
# case insensitive completion | |
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' | |
zstyle ':completion:*' verbose yes | |
zstyle ':completion:*:descriptions' format '%B%d%b' | |
zstyle ':completion:*:messages' format '%d' | |
zstyle ':completion:*:warnings' format 'No matches for: %d' | |
zstyle ':completion:*' group-name '' | |
#zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete | |
zstyle ':completion:*' completer _expand _force_rehash _complete _approximate _ignored | |
# generate descriptions with magic. | |
zstyle ':completion:*' auto-description 'specify: %d' | |
# Don't prompt for a huge list, page it! | |
zstyle ':completion:*:default' list-prompt '%S%M matches%s' | |
# Don't prompt for a huge list, menu it! | |
zstyle ':completion:*:default' menu 'select=0' | |
# Have the newer files last so I see them first | |
zstyle ':completion:*' file-sort modification reverse | |
# color code completion!!!! Wohoo! | |
zstyle ':completion:*' list-colors "=(#b) #([0-9]#)*=36=31" | |
unsetopt LIST_AMBIGUOUS | |
setopt COMPLETE_IN_WORD | |
# Separate man page sections. Neat. | |
zstyle ':completion:*:manuals' separate-sections true | |
# Egomaniac! | |
zstyle ':completion:*' list-separator 'fREW' | |
# complete with a menu for xwindow ids | |
zstyle ':completion:*:windows' menu on=0 | |
zstyle ':completion:*:expand:*' tag-order all-expansions | |
# more errors allowed for large words and fewer for small words | |
zstyle ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) )' | |
# Errors format | |
zstyle ':completion:*:corrections' format '%B%d (errors %e)%b' | |
# Don't complete stuff already on the line | |
zstyle ':completion::*:(rm|vi):*' ignore-line true | |
# Don't complete directory we are already in (../here) | |
zstyle ':completion:*' ignore-parents parent pwd | |
zstyle ':completion::approximate*:*' prefix-needed false | |
#}}} | |
#{{{ Key bindings | |
# oh wow! This is killer... try it! | |
bindkey -M vicmd "q" push-line | |
bindkey -M viins 'jj' vi-cmd-mode | |
bindkey -M vicmd 'u' undo | |
# it's like, space AND completion. Gnarlbot. | |
bindkey -M viins ' ' magic-space | |
#}}} | |
#{{{ History Stuff | |
# Where it gets saved | |
HISTFILE=~/.history | |
# Don't overwrite, append! | |
setopt APPEND_HISTORY | |
# Write after each command | |
setopt INC_APPEND_HISTORY | |
# Killer: share history between multiple shells | |
setopt SHARE_HISTORY | |
# If I type cd and then cd again, only save the last one | |
setopt HIST_IGNORE_DUPS | |
# Even if there are commands inbetween commands that are the same, still only save the last one | |
setopt HIST_IGNORE_ALL_DUPS | |
# Pretty Obvious. Right? | |
setopt HIST_REDUCE_BLANKS | |
# If a line starts with a space, don't save it. | |
setopt HIST_IGNORE_SPACE | |
setopt HIST_NO_STORE | |
# When using a hist thing, make a newline show the change before executing it. | |
setopt HIST_VERIFY | |
# Save the time and how long a command ran | |
setopt EXTENDED_HISTORY | |
setopt HIST_SAVE_NO_DUPS | |
setopt HIST_EXPIRE_DUPS_FIRST | |
setopt HIST_FIND_NO_DUPS | |
#}}} | |
_force_rehash() { | |
(( CURRENT == 1 )) && rehash | |
return 1 # Because we didn't really complete anything | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment