ZSH和ZLE,移动到行首,写入字符串,移动到最后

时间:2015-10-24 09:34:16

标签: zsh oh-my-zsh prezto zsh-zle

它不是必不可少的,但它让我有点烦恼, 这是我的.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

对此有何解决方案?

1 个答案:

答案 0 :(得分:5)

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

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

你想要什么,现在我也可以在每次忘记sudo之后使用它!

EDITx2

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

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