我试图在键绑定"Control Space"上执行任意命令。zsh。我有以下代码
function space-run() {
$BUFFER=" $BUFFER"
zle reset-prompt
zle accept-line
}
zle -N space-run
bindkey '^ ' space-run # bind to control space
换句话说,我想在命令之前添加一个空格,然后执行它,因为在我的zsh配置中,以空格开头的命令不会被添加到历史记录中。
上面的代码不工作,它一直说"command not found: ls=ls"如果我输入ls并按Control Space
我期望$BUFFER="BUFFER"美元;会添加空格,但我不确定会发生什么,因为它显然没有这样做。
我也不确定zle reset-prompt是做什么的,或者是否需要它。
我应该如何修复我的代码,使我得到想要的行为?
这没有意义。
$BUFFER=" $BUFFER"
假设BUFFER
的值为ls。该行将展开为
"ls= ls"
,这将被解释为要执行的命令。
zsh中的变量名分配语法为
NAME=value
所以在你的情况下
BUFFER=" $BUFFER"