浏览代码

sudo: keep space before the command to ignore it in the history (#9178)

Co-authored-by: Marc Cornellà <marc.cornella@live.com>
daddeffe 4 年之前
父节点
当前提交
cd17aed9e1
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      plugins/sudo/sudo.plugin.zsh

+ 11 - 0
plugins/sudo/sudo.plugin.zsh

@@ -14,6 +14,14 @@
 
 sudo-command-line() {
     [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
+
+    # Save beginning space
+    local WHITESPACE=""
+    if [[ ${LBUFFER:0:1} == " " ]] ; then 
+        WHITESPACE=" "
+        LBUFFER="${LBUFFER:1}"
+    fi
+
     if [[ -n $EDITOR && $BUFFER == $EDITOR\ * ]]; then
         if [[ ${#LBUFFER} -le ${#EDITOR} ]]; then
             RBUFFER=" ${BUFFER#$EDITOR }"
@@ -38,6 +46,9 @@ sudo-command-line() {
     else
         LBUFFER="sudo $LBUFFER"
     fi
+
+    # Preserve beginning space
+    LBUFFER="${WHITESPACE}${LBUFFER}"
 }
 zle -N sudo-command-line
 # Defined shortcut keys: [Esc] [Esc]