#!/bin/zsh # Vi mode + requirements for ALL keybindings to work correctly bindkey -v export KEYTIMEOUT=1 # Keybinding functions #function name #function #description autoload edit-command-line; zle -N edit-command-line # Edit line in Vim buffer # Unbind some default keybindings bindkey -r "^U" "^W" "^G" "^J" "^Q" "^R" "^[[200~" # Keybindings #key #command #description bindkey "^E" edit-command-line # Ctrl-e to edit line in Vim buffer bindkey "^D" kill-whole-line # Ctrl-d to delete line bindkey "^X" clear-screen # Ctrl-x to clear screen bindkey "^[[H" beginning-of-line # Home Key bindkey "^[[4~" end-of-line # End Key bindkey "^[[P" delete-char # Delete Key bindkey "^[[4h" overwrite-mode # Insert Key bindkey "^[[1;5D" emacs-backward-word # Ctrl-Right to go back one word bindkey "^[[1;5C" emacs-forward-word # Ctrl-Left to go forward one word bindkey "^[[1;3D" emacs-backward-word # Alt-Right to go back one word bindkey "^[[1;3C" emacs-forward-word # Alt-Left to go forward one word bindkey "^[[5~" emacs-backward-word # PgUp to go back one word bindkey "^[[6~" emacs-forward-word # PgDn to go forward one word bindkey "^H" backward-delete-word # Ctrl-Backspace to delete entire word behind cursor bindkey "^[[M" delete-word # Ctrl-Delete to delete currect word in front of the cursor # Basic auto/tab complete: autoload -U compinit zstyle ':completion:*' menu select zmodload zsh/complist compinit _comp_options+=(globdots) # Include hidden files. # Use Vim keys in tab complete menu bindkey -M menuselect 'h' vi-backward-char bindkey -M menuselect 'k' vi-up-line-or-history bindkey -M menuselect 'l' vi-forward-char bindkey -M menuselect 'j' vi-down-line-or-history bindkey -v '^?' backward-delete-char # Ignore ctrl-d to exit shell setopt ignore_eof