sudo-command-line() { [[ -z $BUFFER ]] && zle up-history if [[ $BUFFER == sudo\ * ]]; then LBUFFER="${LBUFFER#sudo }" else LBUFFER="sudo $LBUFFER" fi } zle -N sudo-command-line sudo-e-command-line() { [[ -z $BUFFER ]] && zle up-history if [[ $BUFFER == sudo\ -E\ * ]]; then LBUFFER="${LBUFFER#sudo -E }" else LBUFFER="sudo -E $LBUFFER" fi } zle -N sudo-e-command-line # Defined shortcut keys: # - [Esc] [Esc] for plain sudo # - [Esc] [e] for sudo -E bindkey "\e\e" sudo-command-line bindkey "\ee" sudo-e-command-line