sudo: make the behavior more in line with expectations (#9047)

This commit is contained in:
MDHD 2020-07-06 10:13:49 -05:00 committed by GitHub
parent a8fee4036b
commit fd9781b4c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -13,15 +13,28 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
sudo-command-line() { sudo-command-line() {
[[ -z $BUFFER ]] && zle up-history [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
if [[ $BUFFER == sudo\ * ]]; then if [[ -n $EDITOR && $BUFFER == $EDITOR\ * ]]; then
LBUFFER="${LBUFFER#sudo }" if [[ ${#LBUFFER} -le ${#EDITOR} ]]; then
elif [[ $BUFFER == $EDITOR\ * ]]; then RBUFFER=" ${BUFFER#$EDITOR }"
LBUFFER="${LBUFFER#$EDITOR }" LBUFFER="sudoedit"
LBUFFER="sudoedit $LBUFFER" else
LBUFFER="sudoedit ${LBUFFER#$EDITOR }"
fi
elif [[ $BUFFER == sudoedit\ * ]]; then elif [[ $BUFFER == sudoedit\ * ]]; then
LBUFFER="${LBUFFER#sudoedit }" if [[ ${#LBUFFER} -le 8 ]]; then
LBUFFER="$EDITOR $LBUFFER" RBUFFER=" ${BUFFER#sudoedit }"
LBUFFER="$EDITOR"
else
LBUFFER="$EDITOR ${LBUFFER#sudoedit }"
fi
elif [[ $BUFFER == sudo\ * ]]; then
if [[ ${#LBUFFER} -le 4 ]]; then
RBUFFER="${BUFFER#sudo }"
LBUFFER=""
else
LBUFFER="${LBUFFER#sudo }"
fi
else else
LBUFFER="sudo $LBUFFER" LBUFFER="sudo $LBUFFER"
fi fi