zsh 在脚本中创建命令行但不执行它

Ray*_*ews 5 zsh

我想知道是否可以编写一个 zsh 脚本,该脚本将向提示符写入命令但不执行它,即将它留在那里供我编辑,然后在我准备好时执行。我可以通过省略最后的“\C-m”来使用键绑定来做类似的事情。例如:

bindkey -s "\e[1;3C" "howdy!"
Run Code Online (Sandbox Code Playgroud)

...我按 Alt+RightArrow 和文本“你好!” 在提示符下打印并留在那里。

我也可以通过将我的命令写入历史文件然后用向上箭头调用它来做我想做的事情。我试过 'echo -n sometext' 但它不起作用。

我可以编写一个脚本来退出(说)“你好!”在命令行上吗?实际上,我希望脚本基于几件事构建一个复杂的命令,但我希望脚本将其留在 CLI 上进行最终编辑,因此必须防止自动执行。

提前致谢。

Ray*_*ews 5

答案很简单:

print -z $string-to-print
Run Code Online (Sandbox Code Playgroud)


lil*_*jwg 2

如果您指的是 zsh 函数而不是外部脚本,您可以编写一个 zle (zsh line editor的缩写)小部件并将其绑定到某个键。

# define to function to use
hello () {
 BUFFER=hello
 zle end-of-line
}
# create a zle widget, which will invoke the function.
zle -N hello
# bindkey Alt-a to that widget
bindkey "\ea" hello
Run Code Online (Sandbox Code Playgroud)

您可以从Z-Shell 用户指南的第 4 章了解更多信息。