我有这段代码: insert_sudo () { zle beginning-of-line; zle -U "sudo "; zle end-of-line; } zle -N insert-sudo insert_sudo bindkey "\es" insert-sudo 但是\es只会将"sudo"添加到一行的末尾,而不是像我预期的那样添加到一行的开头。请帮忙!
请尝试以下操作:insert_sudo() { BUFFER="sudo $BUFFER"; zle end-of-line; } 这会直接修改特殊的$BUFFER变量,该变量包含命令行的内容,通过在开头添加sudo然后将光标放置在行末。 zle -U的问题在于它只在小部件完成后才生效。来自zsh手册: 在当前小部件完成后,ZLE会像用户输入字符串一样处理。