Created
April 25, 2018 13:58
-
-
Save dbenfouzari/a3952a0cf5eece926178329766f5d7f5 to your computer and use it in GitHub Desktop.
.zshrc
This file contains hidden or 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
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. | |
export PATH="$PATH:$HOME/.rvm/bin" | |
# Add MacPorts to PATH | |
export PATH=/opt/local/bin:/opt/local/sbin:$PATH | |
# Add Maven | |
export PATH=/usr/local/apache-maven-3.5.3/bin:$PATH | |
# ============================================================================= | |
# Functions | |
# ============================================================================= | |
powerlevel9k_random_color(){ | |
local code | |
#for code ({000..255}) echo -n "$%F{$code}" | |
#code=$[${RANDOM}%11+10] # random between 10-20 | |
code=$[${RANDOM}%211+20] # random between 20-230 | |
printf "%03d" $code | |
} | |
zsh_wifi_signal(){ | |
local signal=$(nmcli -t device wifi | grep '^*' | awk -F':' '{print $6}') | |
local color="yellow" | |
[[ $signal -gt 75 ]] && color="green" | |
[[ $signal -lt 50 ]] && color="red" | |
echo -n "%F{$color}\uf1eb" # \uf1eb is | |
} | |
cra() { | |
create-react-app $1 --scripts-version=react-scripts-ts | |
} | |
# ============================================================================= | |
# Variables | |
# ============================================================================= | |
export LANG="en_US.UTF-8" | |
export LC_ALL="en_US.UTF-8" | |
# ============================================================================= | |
# Plugins | |
# ============================================================================= | |
# Check if zplug is installed | |
[ ! -d ~/.zplug ] && git clone https://github.com/zplug/zplug ~/.zplug | |
source ~/.zplug/init.zsh | |
# zplug | |
zplug 'zplug/zplug', hook-build:'zplug --self-manage' | |
# zsh-users | |
zplug "zsh-users/zsh-completions" | |
zplug "zsh-users/zsh-autosuggestions" | |
zplug "zsh-users/zsh-history-substring-search" | |
zplug "zsh-users/zsh-syntax-highlighting", defer:2 | |
#zplug "zsh-users/zsh-completions", defer:0 | |
#zplug "zsh-users/zsh-autosuggestions", defer:2, on:"zsh-users/zsh-completions" | |
#zplug "zsh-users/zsh-syntax-highlighting", defer:3, on:"zsh-users/zsh-autosuggestions" | |
#zplug "zsh-users/zsh-history-substring-search", defer:3, on:"zsh-users/zsh-syntax-highlighting" | |
# oh-my-zsh | |
#zplug "zplug/zplug" | |
#zplug "robbyrussell/oh-my-zsh", use:"lib/*.zsh" | |
# Supports oh-my-zsh plugins and the like | |
if [[ $OSTYPE = (linux)* ]]; then | |
zplug "plugins/archlinux", from:oh-my-zsh, if:"which pacman" | |
zplug "plugins/dnf", from:oh-my-zsh, if:"which dnf" | |
fi | |
if [[ $OSTYPE = (darwin)* ]]; then | |
zplug "plugins/osx", from:oh-my-zsh | |
zplug "plugins/brew", from:oh-my-zsh, if:"which brew" | |
zplug "plugins/macports", from:oh-my-zsh, if:"which port" | |
fi | |
zplug "bhilburn/powerlevel9k", use:powerlevel9k.zsh-theme | |
zplug "plugins/archlinux", from:oh-my-zsh | |
zplug "plugins/common-aliase", from:oh-my-zsh | |
zplug "plugins/colored-man-pages", from:oh-my-zsh | |
zplug "plugins/colorize", from:oh-my-zsh | |
zplug "plugins/command-not-found", from:oh-my-zsh | |
zplug "plugins/copydir", from:oh-my-zsh | |
zplug "plugins/copyfile", from:oh-my-zsh | |
zplug "plugins/cp", from:oh-my-zsh | |
zplug "plugins/dircycle", from:oh-my-zsh | |
zplug "plugins/docker-compose", from:oh-my-zsh | |
zplug "plugins/encode64", from:oh-my-zsh | |
zplug "plugins/extract", from:oh-my-zsh | |
zplug "plugins/history", from:oh-my-zsh | |
zplug "plugins/jira", from:oh-my-zsh | |
zplug "plugins/nmap", from:oh-my-zsh | |
zplug "plugins/tmux", from:oh-my-zsh | |
zplug "plugins/tmuxinator", from:oh-my-zsh | |
zplug "plugins/urltools", from:oh-my-zsh | |
zplug "plugins/web-search", from:oh-my-zsh | |
zplug "plugins/z", from:oh-my-zsh | |
zplug "plugins/git", from:oh-my-zsh | |
zplug "plugins/go", from:oh-my-zsh | |
zplug "plugins/svn", from:oh-my-zsh | |
zplug "plugins/node", from:oh-my-zsh | |
zplug "plugins/npm", from:oh-my-zsh | |
# zplug "plugins/nvm", from:oh-my-zsh | |
zplug "plugins/bundler", from:oh-my-zsh | |
zplug "plugins/gem", from:oh-my-zsh | |
zplug "plugins/rbenv", from:oh-my-zsh | |
zplug "plugins/pip", from:oh-my-zsh | |
zplug "plugins/sudo", from:oh-my-zsh | |
zplug "plugins/git-flow", from:oh-my-zsh | |
#zplug "themes/gnzh", from:oh-my-zsh, as:theme | |
#zplug "plugins/git", from:oh-my-zsh, if:"which git" | |
#zplug "plugins/go", from:oh-my-zsh, if:"which go" | |
#zplug "plugins/golang", from:oh-my-zsh, if:"which go" | |
#zplug "plugins/nmap", from:oh-my-zsh, if:"which nmap" | |
#zplug "plugins/sudo", from:oh-my-zsh, if:"which sudo" | |
#zplug "plugins/tmux", from:oh-my-zsh, if:"which tmux" | |
#zplug "plugins/bundler", from:oh-my-zsh, if:"which bundle" | |
#zplug "plugins/colored-man-pages", from:oh-my-zsh | |
#zplug "plugins/extract", from:oh-my-zsh | |
#zplug "plugins/fancy-ctrl-z", from:oh-my-zsh | |
#zplug "plugins/git", from:oh-my-zsh, if:"which git" | |
#zplug "plugins/globalias", from:oh-my-zsh | |
#zplug "plugins/gpg-agent", from:oh-my-zsh, if:"which gpg-agent" | |
#zplug "plugins/httpie", from:oh-my-zsh, if:"which httpie" | |
#zplug "plugins/nanoc", from:oh-my-zsh, if:"which nanoc" | |
#zplug "plugins/vi-mode", from:oh-my-zsh | |
# plugins | |
# Enhanced cd | |
zplug "b4b4r07/enhancd", use:enhancd.sh | |
# Bookmarks and jump | |
#zplug "jocelynmallon/zshmarks" | |
# Enhanced dir list with git features | |
zplug "supercrabtree/k" | |
# Tips for aliases | |
#zplug "djui/alias-tips" | |
# Auto-close and delete matching delimiters | |
zplug "hlissner/zsh-autopair", defer:2 | |
# Docker completion | |
zplug "felixr/docker-zsh-completion" | |
# Jump back to parent directory | |
zplug "tarrasch/zsh-bd" | |
# Simple zsh calculator | |
zplug "arzzen/calc.plugin.zsh" | |
zplug "creationix/nvm" | |
# Directory colors | |
zplug "seebi/dircolors-solarized", ignore:"*", as:plugin | |
# Load theme | |
zplug "bhilburn/powerlevel9k", use:powerlevel9k.zsh-theme | |
# Trailing whitespace | |
zplug "bronson/vim-trailing-whitespace" | |
# Theme setup | |
# Easily switch primary foreground/background colors | |
DEFAULT_FOREGROUND=006 DEFAULT_BACKGROUND=235 | |
DEFAULT_COLOR=$DEFAULT_FOREGROUND | |
# powerlevel9k prompt theme | |
#DEFAULT_USER=$USER | |
POWERLEVEL9K_MODE="nerdfont-complete" | |
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 | |
#POWERLEVEL9K_SHORTEN_STRATEGY="truncate_right" | |
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=false | |
POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true | |
POWERLEVEL9K_ALWAYS_SHOW_USER=false | |
POWERLEVEL9K_CONTEXT_TEMPLATE="\uF109 %m" | |
POWERLEVEL9K_CONTEXT_DEFAULT_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR="\uE0B4" | |
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR="%F{$(( $DEFAULT_BACKGROUND - 2 ))}|%f" | |
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR="\uE0B6" | |
POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR="%F{$(( $DEFAULT_BACKGROUND - 2 ))}|%f" | |
POWERLEVEL9K_PROMPT_ON_NEWLINE=true | |
POWERLEVEL9K_RPROMPT_ON_NEWLINE=false | |
POWERLEVEL9K_STATUS_VERBOSE=true | |
POWERLEVEL9K_STATUS_CROSS=true | |
POWERLEVEL9K_PROMPT_ADD_NEWLINE=true | |
#POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{cyan}\u256D\u2500%f" | |
#POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{014}\u2570%F{cyan}\uF460%F{073}\uF460%F{109}\uF460%f " | |
#POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="╭─%f" | |
#POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="╰─%F{008}\uF460 %f" | |
#POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="" | |
#POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{008}> %f" | |
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="╭" | |
#POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="❱ " | |
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="╰\uF460 " | |
#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context ssh root_indicator dir_writable dir ) | |
#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon root_indicator context dir_writable dir vcs) | |
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(root_indicator context dir_writable dir vcs) | |
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(command_execution_time background_jobs status time ssh) | |
POWERLEVEL9K_VCS_CLEAN_BACKGROUND="green" | |
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow" | |
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND="magenta" | |
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_DIR_WRITABLE_FORBIDDEN_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_DIR_WRITABLE_FORBIDDEN_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_STATUS_OK_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_STATUS_OK_FOREGROUND="green" | |
POWERLEVEL9K_STATUS_OK_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))" | |
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red" | |
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))" | |
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_TIME_FORMAT="%D{%T \uF017}" # 15:29:33 | |
POWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_VCS_GIT_GITHUB_ICON="" | |
POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON="" | |
POWERLEVEL9K_VCS_GIT_GITLAB_ICON="" | |
POWERLEVEL9K_VCS_GIT_ICON="" | |
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_EXECUTION_TIME_ICON="\u23F1" | |
#POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0 | |
#POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 | |
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_USER_ICON="\uF415" # | |
POWERLEVEL9K_USER_DEFAULT_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_USER_DEFAULT_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_USER_ROOT_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_USER_ROOT_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_ROOT_INDICATOR_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_ROOT_INDICATOR_FOREGROUND="magenta" | |
POWERLEVEL9K_ROOT_INDICATOR_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_ROOT_INDICATOR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))" | |
POWERLEVEL9K_ROOT_INDICATOR_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))" | |
#POWERLEVEL9K_ROOT_ICON=$'\uFF03' # # | |
POWERLEVEL9K_ROOT_ICON=$'\uF198' # | |
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_SSH_FOREGROUND="yellow" | |
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_SSH_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))" | |
POWERLEVEL9K_SSH_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))" | |
POWERLEVEL9K_SSH_ICON="\uF489" # | |
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_HOST_ICON_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_HOST_ICON_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_HOST_ICON="\uF109" # | |
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND" | |
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red" | |
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow" | |
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green" | |
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red" | |
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow" | |
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green" | |
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND" | |
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND" | |
# ============================================================================= | |
# Options | |
# ============================================================================= | |
# improved less option | |
export LESS="--tabs=4 --no-init --LONG-PROMPT --ignore-case --quit-if-one-screen --RAW-CONTROL-CHARS" | |
# Watching other users | |
#WATCHFMT="%n %a %l from %m at %t." | |
watch=(notme) # Report login/logout events for everybody except ourself. | |
#watch=(all) # Report login/logout events for everybody except ourself. | |
LOGCHECK=60 # Time (seconds) between checks for login/logout activity. | |
REPORTTIME=5 # Display usage statistics for commands running > 5 sec. | |
#WORDCHARS="\"*?_-.[]~=/&;!#$%^(){}<>\"" | |
#WORDCHARS="\"*?_-[]~&;!#$%^(){}<>\"" | |
WORDCHARS='`~!@#$%^&*()-_=+[{]}\|;:",<.>/?'"'" | |
# History | |
HISTFILE=~/.zsh_history | |
HISTSIZE=100000 | |
SAVEHIST=100000 | |
setopt autocd # Allow changing directories without `cd` | |
setopt append_history # Dont overwrite history | |
setopt extended_history # Also record time and duration of commands. | |
setopt share_history # Share history between multiple shells | |
setopt hist_expire_dups_first # Clear duplicates when trimming internal hist. | |
setopt hist_find_no_dups # Dont display duplicates during searches. | |
setopt hist_ignore_dups # Ignore consecutive duplicates. | |
setopt hist_ignore_all_dups # Remember only one unique copy of the command. | |
setopt hist_reduce_blanks # Remove superfluous blanks. | |
setopt hist_save_no_dups # Omit older commands in favor of newer ones. | |
# Changing directories | |
#setopt auto_pushd | |
setopt pushd_ignore_dups # Dont push copies of the same dir on stack. | |
setopt pushd_minus # Reference stack entries with "-". | |
setopt extended_glob | |
# ============================================================================= | |
# Aliases | |
# ============================================================================= | |
# In the definitions below, you will see use of function definitions instead of | |
# aliases for some cases. We use this method to avoid expansion of the alias in | |
# combination with the globalias plugin. | |
# Directory coloring | |
if [[ $OSTYPE = (darwin|freebsd)* ]]; then | |
export CLICOLOR="YES" # Equivalent to passing -G to ls. | |
export LSCOLORS="exgxdHdHcxaHaHhBhDeaec" | |
[ -d "/opt/local/bin" ] && export PATH="/opt/local/bin:$PATH" | |
# Prefer GNU version, since it respects dircolors. | |
if which gls &>/dev/null; then | |
alias ls='() { $(whence -p gls) -Ctr --file-type --color=auto $@ }' | |
else | |
alias ls='() { $(whence -p ls) -CFtr $@ }' | |
fi | |
else | |
alias ls='() { $(whence -p ls) -Ctr --file-type --color=auto $@ }' | |
fi | |
# Set editor preference to nvim if available. | |
if which nvim &>/dev/null; then | |
alias vim='() { $(whence -p nvim) $@ }' | |
else | |
alias vim='() { $(whence -p vim) $@ }' | |
fi | |
# Generic command adaptations | |
alias grep='() { $(whence -p grep) --color=auto $@ }' | |
alias egrep='() { $(whence -p egrep) --color=auto $@ }' | |
# Custom helper aliases | |
alias ccat='highlight -O ansi' | |
alias rm='rm -v' | |
# Directory management | |
alias la='ls -a' | |
alias ll='ls -l' | |
alias lal='ls -al' | |
alias d='dirs -v' | |
alias 1='pu' | |
alias 2='pu -2' | |
alias 3='pu -3' | |
alias 4='pu -4' | |
alias 5='pu -5' | |
alias 6='pu -6' | |
alias 7='pu -7' | |
alias 8='pu -8' | |
alias 9='pu -9' | |
alias pu='() { pushd $1 &> /dev/null; dirs -v; }' | |
alias po='() { popd &> /dev/null; dirs -v; }' | |
zshaddhistory() { whence ${${(z)1}[1]} >| /dev/null || return 1 } | |
# ============================================================================= | |
# Key Bindings | |
# ============================================================================= | |
# Common CTRL bindings. | |
bindkey "^a" beginning-of-line | |
bindkey "^e" end-of-line | |
bindkey "^f" forward-word | |
bindkey "^b" backward-word | |
bindkey "^k" kill-line | |
bindkey "^d" delete-char | |
bindkey "^y" accept-and-hold | |
bindkey "^w" backward-kill-word | |
bindkey "^u" backward-kill-line | |
bindkey "^R" history-incremental-pattern-search-backward | |
bindkey "^F" history-incremental-pattern-search-forward | |
# Do not require a space when attempting to tab-complete. | |
bindkey "^i" expand-or-complete-prefix | |
# Fixes for alt-backspace and arrows keys | |
bindkey '^[^?' backward-kill-word | |
bindkey "^[[1;5C" forward-word | |
bindkey "^[[1;5D" backward-word | |
## Emulate tcsh's backward-delete-word | |
#tcsh-backward-kill-word () { | |
# local WORDCHARS="${WORDCHARS:s#/#}" | |
# zle backward-kill-word | |
#} | |
#zle -N tcsh-backward-kill-word | |
# https://github.com/sickill/dotfiles/blob/master/.zsh.d/key-bindings.zsh | |
tcsh-backward-word () { | |
local WORDCHARS="${WORDCHARS:s#/#}" | |
zle emacs-backward-word | |
} | |
zle -N tcsh-backward-word | |
bindkey '\e[1;3D' tcsh-backward-word | |
bindkey '\e^[[D' tcsh-backward-word # tmux | |
tcsh-forward-word () { | |
local WORDCHARS="${WORDCHARS:s#/#}" | |
zle emacs-forward-word | |
} | |
zle -N tcsh-forward-word | |
bindkey '\e[1;3C' tcsh-forward-word | |
bindkey '^[^[[C' tcsh-forward-word # tmux | |
tcsh-backward-delete-word () { | |
local WORDCHARS="${WORDCHARS:s#/#}" | |
zle backward-delete-word | |
} | |
zle -N tcsh-backward-delete-word | |
bindkey "^[^?" tcsh-backward-delete-word # urxvt | |
# ============================================================================= | |
# Completions | |
# ============================================================================= | |
zstyle ':completion:*' rehash true | |
#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 '' | |
# case-insensitive (all), partial-word and then substring completion | |
zstyle ":completion:*" matcher-list \ | |
"m:{a-zA-Z}={A-Za-z}" \ | |
"r:|[._-]=* r:|=*" \ | |
"l:|=* r:|=*" | |
zstyle ":completion:*:default" list-colors ${(s.:.)LS_COLORS} | |
# ============================================================================= | |
# Startup | |
# ============================================================================= | |
# Load SSH and GPG agents via keychain. | |
setup_agents() { | |
[[ $UID -eq 0 ]] && return | |
if which keychain &> /dev/null; then | |
local -a ssh_keys gpg_keys | |
for i in ~/.ssh/**/*pub; do test -f "$i(.N:r)" && ssh_keys+=("$i(.N:r)"); done | |
gpg_keys=$(gpg -K --with-colons 2>/dev/null | awk -F : '$1 == "sec" { print $5 }') | |
if (( $#ssh_keys > 0 )) || (( $#gpg_keys > 0 )); then | |
alias run_agents='() { $(whence -p keychain) --quiet --eval --inherit any-once --agents ssh,gpg $ssh_keys ${(f)gpg_keys} }' | |
#[[ -t ${fd:-0} || -p /dev/stdin ]] && eval `run_agents` | |
unalias run_agents | |
fi | |
fi | |
} | |
setup_agents | |
unfunction setup_agents | |
# Install plugins if there are plugins that have not been installed | |
if ! zplug check; then | |
printf "Install plugins? [y/N]: " | |
if read -q; then | |
echo; zplug install | |
fi | |
fi | |
# Then, source plugins and add commands to $PATH | |
zplug load | |
# dircolors | |
if zplug check "seebi/dircolors-solarized"; then | |
if which gdircolors &> /dev/null; then | |
alias dircolors='() { $(whence -p gdircolors) }' | |
fi | |
if which dircolors &> /dev/null; then | |
scheme="dircolors.256dark" | |
eval $(dircolors ~/.zplug/repos/seebi/dircolors-solarized/$scheme) | |
fi | |
fi | |
# history | |
if zplug check "zsh-users/zsh-history-substring-search"; then | |
zmodload zsh/terminfo | |
bindkey "$terminfo[kcuu1]" history-substring-search-up | |
bindkey "$terminfo[kcud1]" history-substring-search-down | |
bindkey "^[[1;5A" history-substring-search-up | |
bindkey "^[[1;5B" history-substring-search-down | |
fi | |
# highlighting | |
if zplug check "zsh-users/zsh-syntax-highlighting"; then | |
#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10' | |
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor) | |
ZSH_HIGHLIGHT_PATTERNS=('rm -rf *' 'fg=white,bold,bg=red') | |
typeset -A ZSH_HIGHLIGHT_STYLES | |
ZSH_HIGHLIGHT_STYLES[cursor]='bg=yellow' | |
ZSH_HIGHLIGHT_STYLES[globbing]='none' | |
ZSH_HIGHLIGHT_STYLES[path]='fg=white' | |
ZSH_HIGHLIGHT_STYLES[path_pathseparator]='fg=grey' | |
ZSH_HIGHLIGHT_STYLES[alias]='fg=cyan' | |
ZSH_HIGHLIGHT_STYLES[builtin]='fg=cyan' | |
ZSH_HIGHLIGHT_STYLES[function]='fg=cyan' | |
ZSH_HIGHLIGHT_STYLES[command]='fg=green' | |
ZSH_HIGHLIGHT_STYLES[precommand]='fg=green' | |
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green' | |
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=yellow' | |
ZSH_HIGHLIGHT_STYLES[redirection]='fg=magenta' | |
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=cyan,bold' | |
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=green,bold' | |
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=magenta,bold' | |
ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=yellow,bold' | |
fi | |
[ -d "$HOME/bin" ] && export PATH="$HOME/bin:$PATH" | |
# Source local zsh customizations. | |
[[ -f ~/.zsh_rclocal ]] && source ~/.zsh_rclocal | |
# Source functions and aliases. | |
[[ -f ~/.zsh_functions ]] && source ~/.zsh_functions | |
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases | |
export NVM_DIR="$HOME/.nvm" | |
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm | |
#autoload -Uz compinit | |
#compinit | |
#ZLE_RPROMPT_INDENT=0 | |
# vim: ft=zsh | |
# place this after nvm initialization! | |
autoload -U add-zsh-hook | |
load-nvmrc() { | |
local node_version="$(nvm version)" | |
local nvmrc_path="$(nvm_find_nvmrc)" | |
if [ -n "$nvmrc_path" ]; then | |
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") | |
if [ "$nvmrc_node_version" = "N/A" ]; then | |
nvm install | |
elif [ "$nvmrc_node_version" != "$node_version" ]; then | |
nvm use | |
fi | |
elif [ "$node_version" != "$(nvm version default)" ]; then | |
echo "Reverting to nvm default version" | |
nvm use default | |
fi | |
} | |
add-zsh-hook chpwd load-nvmrc | |
load-nvmrc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment