fd9781b4c7036a3ef0a62744b9ecae327f9f2f24
- Author
- MDHD <MDHD.Yee@outlook.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
sudo: make the behavior more in line with expectations (#9047)
Diff
1diff --git a/plugins/sudo/sudo.plugin.zsh b/plugins/sudo/sudo.plugin.zsh
2index f405b025f333c8278047d6f8832e3fb700d6de70..51579377d07fc78ea371c47e27adc7d7aaaa2790 100644
3--- a/plugins/sudo/sudo.plugin.zsh
4+++ b/plugins/sudo/sudo.plugin.zsh
5@@ -13,15 +13,28 @@
6 # ------------------------------------------------------------------------------
7
8 sudo-command-line() {
9- [[ -z $BUFFER ]] && zle up-history
10- if [[ $BUFFER == sudo\ * ]]; then
11- LBUFFER="${LBUFFER#sudo }"
12- elif [[ $BUFFER == $EDITOR\ * ]]; then
13- LBUFFER="${LBUFFER#$EDITOR }"
14- LBUFFER="sudoedit $LBUFFER"
15+ [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
16+ if [[ -n $EDITOR && $BUFFER == $EDITOR\ * ]]; then
17+ if [[ ${#LBUFFER} -le ${#EDITOR} ]]; then
18+ RBUFFER=" ${BUFFER#$EDITOR }"
19+ LBUFFER="sudoedit"
20+ else
21+ LBUFFER="sudoedit ${LBUFFER#$EDITOR }"
22+ fi
23 elif [[ $BUFFER == sudoedit\ * ]]; then
24- LBUFFER="${LBUFFER#sudoedit }"
25- LBUFFER="$EDITOR $LBUFFER"
26+ if [[ ${#LBUFFER} -le 8 ]]; then
27+ RBUFFER=" ${BUFFER#sudoedit }"
28+ LBUFFER="$EDITOR"
29+ else
30+ LBUFFER="$EDITOR ${LBUFFER#sudoedit }"
31+ fi
32+ elif [[ $BUFFER == sudo\ * ]]; then
33+ if [[ ${#LBUFFER} -le 4 ]]; then
34+ RBUFFER="${BUFFER#sudo }"
35+ LBUFFER=""
36+ else
37+ LBUFFER="${LBUFFER#sudo }"
38+ fi
39 else
40 LBUFFER="sudo $LBUFFER"
41 fi