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
索引条目的链接。