我有这个片段:
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”附加到一行的末尾,而不是我预期的行的开头。请帮忙!
答案 0 :(得分:5)
尝试以下方法:
insert_sudo() { BUFFER="sudo $BUFFER"; zle end-of-line; }
这会直接修改包含命令行内容的特殊$BUFFER
变量,方法是先加sudo
,然后将光标放在行的末尾。
zle -U
的问题是它只在小部件完成后才生效。来自zsh
手册:
当前执行的小部件完成后,ZLE将表现得像 字符串中的字符由用户键入。