如何写入实际的编辑缓冲区

如何写入实际的编辑缓冲区

Control我希望通过敲击+来写入“ls”,但不执行r。我正在使用以下代码,但它将命令写入将用于执行的缓冲区Enter。我希望以某种方式直接写出来,但我不知道如何:

_prefill() {
  print -z "ls"
}

zle -N _prefill
bindkey '^r' _prefill

答案1

$BUFFER在小部件功能中,编辑缓冲区在(整个缓冲区)和$LBUFFER$RBUFFER分别是光标左侧和右侧的缓冲区部分)中公开。info zsh BUFFER详情请参阅1。所以在这里,你会这样做:

_prefill() LBUFFER+=ls

print -z是为下一个命令预填充缓冲区,因此通常使用外部zle 小部件。


1 您可能需要安装一个zsh-doc软件包或等效程序,因为并非所有系统都默认安装 zsh 文档(手册页除外,这些手册页不足以容纳这种大小的手册)。该文档也可以在线获取最新版本。这是对应BUFFER索引条目的链接

相关内容