如何使用ZSH ZLE将文本插入到输入提示符中

6
我希望有一个按键绑定,可以在提示符内将文本粘贴到光标处。
例如:
提示符:ls _ 按下CTRL-Z 提示符:ls textGoesHere 我正在创建一个ZSH ZLE小部件,但我无法弄清如何实现上述功能。
1个回答

7
您可以在小部件中使用参数BUFFERLBUFFERRBUFFER来访问命令缓冲区。其中BUFFER包含整个命令,LBUFFER仅包含当前光标位置左侧的部分,RBUFFER则包含光标右侧的部分。这些参数也可以被修改。
如果您想在光标位置插入一些文本,只需将所需文本前置到RBUFFER即可。
addText () {
    text_to_add="textGoesHere"
    RBUFFER=${text_to_add}${RBUFFER}
}
zle -N addText
bindkey '^Z' addText

5
使用RBUFFER="${text_to_add}${RBUFFER}"不会将光标位置向前移动到插入的文本上方。相反,文本被插入在光标之后,使光标位置保持不变。要在光标位置插入文本,并将光标向前移动到已插入字符的末尾,请使用:LBUFFER+="${text_to_add}" - HerCerM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接