summaryrefslogtreecommitdiff
path: root/zsh/.zshrc
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/.zshrc')
-rw-r--r--zsh/.zshrc166
1 files changed, 166 insertions, 0 deletions
diff --git a/zsh/.zshrc b/zsh/.zshrc
new file mode 100644
index 0000000..ec4a213
--- /dev/null
+++ b/zsh/.zshrc
@@ -0,0 +1,166 @@
+## startx automatically {{{
+[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
+# }}}
+## Bindings {{{
+bindkey -v
+bindkey -a 'k' history-beginning-search-backward
+bindkey -a 'j' history-beginning-search-forward
+bindkey '^?' backward-delete-char # backspace
+bindkey '^N' history-beginning-search-forward
+bindkey '^P' history-beginning-search-backward
+bindkey '^a' beginning-of-line
+bindkey '^b' backward-char
+bindkey '^e' end-of-line
+bindkey '^f' forward-char
+bindkey '^h' backward-delete-char
+bindkey '^k' kill-line
+bindkey '^u' kill-whole-line
+bindkey '^v' visual-mode
+bindkey '^w' backward-kill-word
+# }}}
+## Options and modules {{{
+
+# History
+HISTFILE=$HOME/.zsh_history
+HISTSIZE=1000000
+SAVEHIST=$HISTSIZE
+
+setopt append_history
+setopt extended_history
+setopt hist_ignore_space
+setopt inc_append_history
+setopt share_history
+
+# Completion
+zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
+
+# Prompt
+if [[ -n $SSH_CLIENT ]]; then
+PROMPT='%F{red}[%M]%f %0~ $ '
+else
+PROMPT='%0~ $ '
+fi
+# }}}
+## Plugins {{{
+[ ! -d ~/.zsh/zgen ] && git clone https://github.com/tarjoilija/zgen.git ~/.zsh/zgen
+source "$HOME/.zsh/zgen/zgen.zsh"
+
+if ! zgen saved; then
+ echo "Creating a zgen save"
+ zgen load rupa/z
+ zgen load urbainvaes/fzf-marks
+ zgen load zsh-users/zsh-completions src
+ zgen load zsh-users/zsh-syntax-highlighting
+ zgen load zsh-users/zsh-autosuggestions
+ zgen save
+fi
+
+bindkey '^y' autosuggest-accept
+bindkey '^z' z
+
+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=6'
+
+# }}}
+## fzf {{{
+
+[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
+
+# Use fzf with z
+unalias z 2> /dev/null
+z() {
+ [ $# -gt 0 ] && _z "$*" && return
+ cd "$(_z -l 2>&1 | fzf --height 40% --reverse --inline-info +s --tac --query "$*" | sed 's/^[0-9,.]* *//')"
+ zle && zle reset-prompt
+}
+zle -N z
+
+# }}}
+## Colors {{{
+
+[[ -f $HOME/.local/colors.zsh ]] && source $HOME/.local/colors.zsh
+
+colorschemes=$(ls ${HOME}/.Xresources)
+
+function colo {
+
+ COLORSCHEME=$1
+ XRESOURCE_FILE=${HOME}/.Xresources/$COLORSCHEME
+
+ # Change colors for current session
+ if [[ ! -z "$TMUX" ]]; then
+ printf '\x1bPtmux;'
+ esc='\x1b\x1b'
+ else
+ esc='\x1b'
+ fi
+
+ /usr/bin/cpp ${XRESOURCE_FILE} | tr -d ' \t' | sed -n \
+ -e "s/.*background:/${esc}]11;/p" \
+ -e "s/.*foreground:/${esc}]10;/p" \
+ -e "s/.*cursorColor:/${esc}]12;/p" \
+ -e "s/.*borderColor:/${esc}]708;/p" \
+ -e "s/.*color\\([0-9][^:]*\\):/${esc}]4;\\1;/p" | tr \\n \\a
+
+ # Change color for future sessions
+ xrdb ${XRESOURCE_FILE}
+
+ echo "export COLORSCHEME=$1" > $HOME/.local/colors.zsh
+ source $HOME/.local/colors.zsh
+}
+
+# Completion for colorschemes (-M -> Case insensitive)
+compctl -k "(${colorschemes})" -M 'm:{a-z}={A-Z}' colo
+
+function show256 {
+ for i in {0..255} ; do
+ printf "\x1b[48;5;%sm%3d\e[0m " "$i" "$i"
+ if (( i == 15 )) || (( i > 15 )) && (( (i-15) % 6 == 0 )); then
+ printf "\n";
+ fi
+ done
+}
+
+# }}}
+## Aliases {{{
+
+# Directories
+alias cdd='cd ~/dotfiles'
+
+# Vim
+alias n='nvim'
+alias ns='nvim -S Session.vim'
+alias v='vim'
+alias vs="vim -S Session.vim"
+
+# Git
+alias g='git'
+alias ga='git add'
+alias gc='git commit'
+alias gd='git diff'
+alias gl='git pull'
+alias gp='git push'
+alias gr='git remote'
+alias gra='git remote add'
+alias gst='git status'
+alias rd='cd $(git rev-parse --show-toplevel)'
+
+# GNU Make
+alias mi='make install'
+alias mc='make clean'
+alias mca='make clean-all'
+
+# Misc
+alias a='vifm . .'
+alias ff='FreeFem++'
+alias m='cd ~/.mutt/attachments && mutt && cd -'
+alias e='nvim'
+alias mux='tmuxinator'
+alias email="mbsync -a"
+
+# Applications
+alias -s pdf='xdg-open'
+
+# Global
+alias -g grep='grep --color=auto --exclude-dir={.git,.hg}'
+
+# }}}