【问题标题】:ZSH and ZLE, move to the beginning-of-line, write string, move to the endZSH 和 ZLE,移到行首,写字符串,移到行尾
【发布时间】:2015-10-24 09:34:15
【问题描述】:

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

有什么解决办法吗?

【问题讨论】:

  • 您应该直接修改$BUFFER(即BUFFER="sudo $BUFFER"),然后移动$CURSOR(即(( CURSOR += 5 )))。如您所见,推入输入堆栈完全不直观。

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


【解决方案1】:

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

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。

【讨论】:

猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 2013-08-25
  • 2021-11-23
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2018-02-25
相关资源
最近更新 更多