我有这个片段:

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 手册:

关于zsh - 如何在 zsh 小部件定义中移动光标位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23311822/

10-16 21:52