diff --git a/.zshrc b/.zshrc index bcc22c5..5464d36 100644 --- a/.zshrc +++ b/.zshrc @@ -1,3 +1,4 @@ +zstyle :compinstall filename '/home/patrick/.zshrc' autoload -Uz promptinit && promptinit autoload -Uz compinit && compinit autoload -Uz colors && colors @@ -7,28 +8,55 @@ zstyle ':completion:*' accept-exact "*(N)" zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zsh/compcache -bindkey -v -bindkey '^?' backward-delete-char -bindkey '^R' history-incremental-search-backward +# Fix keyboard +bindkey -v # Vi bindings +export KEYTIMEOUT=1 # Reduce esc timeout +if [[ "${terminfo[khome]}" != "" ]]; then + bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line +fi +if [[ "${terminfo[kend]}" != "" ]]; then + bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line +fi -# PROMPT +bindkey ' ' magic-space # [Space] - do history expansion + +if [[ "${terminfo[kcbt]}" != "" ]]; then + bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards +fi + +bindkey '^?' backward-delete-char # [Backspace] - delete backward +if [[ "${terminfo[kdch1]}" != "" ]]; then + bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward +else + bindkey "^[[3~" delete-char + bindkey "^[3;5~" delete-char + bindkey "\e[3~" delete-char +fi + +bindkey '^R' history-incremental-search-backward # Reverse history search + +# Enable colors + +# GIT PROMPT function parse_git_dirty() { - STATUS=$(command git status --porcelain --untracked-files=no | tail -n1) - if [[ -n $STATUS ]]; then - echo "%{$fg[red]%}✗" - else - echo "%{$fg[green]%}✔" - fi + STATUS=$(command git status --porcelain --untracked-files=no | tail -n1) + if [[ -n $STATUS ]]; then + echo "%{$fg[red]%}✘" + else + echo "%{$fg[green]%}✔" + fi } function git_prompt() { - isgit=$(command git rev-parse --is-inside-work-tree 2>/dev/null) - if [[ $isgit == "true" ]]; then - ref=$(command git symbolic-ref HEAD -q --short) - echo "%{$fg[cyan]%}$ref $(parse_git_dirty)%{$reset_color%}" - fi + isgit=$(command git rev-parse --is-inside-work-tree 2>/dev/null) + if [[ $isgit == "true" ]]; then + ref=$(command git symbolic-ref HEAD -q --short) + echo "%{$fg[cyan]%}$ref$(parse_git_dirty)%{$reset_color%}" + fi } + +# Theme setopt promptsubst GIT='$(git_prompt)' PROMPT="%(?, ,%{$fg[red]%}FAIL%{$reset_color%} @@ -42,41 +70,42 @@ zstyle ':completion:*:*:*:*:*' menu select # Case insensitive autocomplete zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' + zstyle ':completion:*' list-colors '' +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' + +# disable named-directories autocompletion zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories +# Loading dots for autocomplete expand-or-complete-with-dots() { - [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam - print -Pn "%{%F{red}......%f%}" - [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam - zle expand-or-complete - zle redisplay + [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam + print -Pn "%{%F{red}......%f%}" + [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam + zle expand-or-complete + zle redisplay } zle -N expand-or-complete-with-dots bindkey '^I' expand-or-complete-with-dots HISTFILE=~/.zsh_history -HISTSIZE=10000 -SAVEHIST=10000 +HISTSIZE=1000 +SAVEHIST=1000 setopt extendedglob +setopt histignoredups -export EDITOR='vim' +if [ -f ~/.zshrc.local ]; then + source ~/.zshrc.local +fi -alias pacman='sudo pacman --color always' -alias ls='ls --color=auto' -alias iptables='sudo iptables' -alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles.git --work-tree=$HOME' +# SSH Agent using Keychain +eval $(keychain --eval --quiet id_ed25519 id_ecdsa id_dsa id_rockrobo old_id_ed25519) # PAZI if command -v pazi &>/dev/null; then - eval "$(pazi init zsh)" + eval "$(pazi init zsh)" fi -# Ensure our build toolchain is in the path! -export PATH="/opt/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH" - -# Add gems to path -export PATH="$HOME/.gem/ruby/2.7.0/bin:$PATH" - -# Enable ccache -export PATH="/usr/lib/ccache/bin/:$PATH" +export LANG=en_GB.UTF-8 +export LC_CTYPE=en_GB.UTF-8 +export EDITOR='vim'