5

它不是必需的,但它让我有点烦恼,这是我的 .zshrc 中的片段

一个名为 add_sudo 的函数/小部件,它将位于行首,在此处写入 sudo,然后应位于行尾。

它绑定到 ctrl+f

但它不会出现在行尾,它会忽略最后一个命令并在编写 sudo 后坐在那里。

add_sudo() {
  zle beginning-of-line;
  zle -U "sudo ";
  zle end-of-line;
}

zle -N add_sudo
bindkey "^f" add_sudo

有什么解决办法吗?

4

1 回答 1

7

这个我可以回答!我刚加入,很高兴能提供帮助.....我读错了问题,但现在我来这里是为了救赎自己,在@4ae1e1 的帮助下,所有功劳归功于他提到使用 BUFFER= 和 CURSOR=

add_sudo (){
prefix="sudo"
BUFFER="$prefix $BUFFER"
CURSOR=$(($CURSOR + $#prefix + 1))
}
zle -N add_sudo
bindkey "^f" add_sudo

做你想做的事,现在我也可以在每次忘记 sudo 后使用它!

编辑x2

值得注意的是,这实际上将光标放回到它之前的位置,这是我的首选用途。正如 4aelel 所说,您可以使用 CURSOR+=5 将其放在行尾。

同样值得注意的是,我意识到我真的没有解决这个问题,因为它是如何使用 zsh 和 zli 做到这一点,而不是如何做到这一点。如果我遇到答案,我会附上这两个解决方案。我是 zli 的新手,它的细微差别,最近才搬到 zsh。

于 2015-10-24T09:55:13.050 回答