我有这个片段:
insert_sudo () { zle beginning-of-line; zle -U "sudo "; zle end-of-line; }
zle -N insert-sudo insert_sudo
bindkey "\es" insert-sudo
Run Code Online (Sandbox Code Playgroud)
但\es只是将"sudo"附加到一行的末尾,而不是我预期的行的开头.请帮忙!
请尝试以下方法:
insert_sudo() { BUFFER="sudo $BUFFER"; zle end-of-line; }
Run Code Online (Sandbox Code Playgroud)
这$BUFFER通过预先添加sudo 然后将光标放在行的末尾来直接修改包含命令行内容的特殊变量.
问题zle -U是它只在小部件完成后才生效.从zsh手册:
在当前执行的窗口小部件完成后,ZLE的行为就像字符串中的字符是由用户键入的一样.