如何使用 ZSH ZLE 在输入提示中插入文本

Chr*_*ski 3 shell zsh

我想要一个键绑定,它将在提示中的光标处粘贴文本。

例如:

迅速的: ls _

按 CTRL-Z

迅速的: ls textGoesHere

我正在创建一个 ZSH ZLE 小部件,但我不知道如何实现上述目标。

Ada*_*hon 5

您可以从小部件中使用参数BUFFER,LBUFFER和访问命令缓冲区RBUFFERBUFFER包含整个命令,而LBUFFER只包含当前光标位置左侧RBUFFER的部分和光标右侧的部分。这些参数也可以修改。

如果要在光标位置插入一些文本,只需将所需文本添加到RBUFFER

addText () {
    text_to_add="textGoesHere"
    RBUFFER=${text_to_add}${RBUFFER}
}
zle -N addText
bindkey '^Z' addText
Run Code Online (Sandbox Code Playgroud)

  • 使用 `RBUFFER="${text_to_add}${RBUFFER}"` 不会将光标位置向前移动到插入的文本上。相反,文本将插入到光标之后,保持光标位置不变。要在光标位置插入文本,但将光标向前移动到插入的字符上,请使用:`LBUFFER+="${text_to_add}"`。 (5认同)