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

zsh在脚本中创建命令行,但不执行它,zsh,Zsh,我想知道是否有可能编写一个zsh脚本,将命令写入提示符,但不执行它,也就是说,让我在准备好后编辑并执行它。我可以通过省略最后一个“\C-m”来使用键绑定执行类似的操作。例如: bindkey -s "\e[1;3C" "howdy!" 。。。我按下Alt+RightArrow,文本“howdy!”会在提示下打印出来,就在那里 我还可以通过将命令写入历史文件,然后用向上箭头调用它来完成我想要的事情。我试过“echo-n sometext”,但不起作用 我是否可以编写一个脚本,退出并在命令行上留下

我想知道是否有可能编写一个zsh脚本,将命令写入提示符,但不执行它,也就是说,让我在准备好后编辑并执行它。我可以通过省略最后一个“\C-m”来使用键绑定执行类似的操作。例如:

bindkey -s "\e[1;3C" "howdy!"
。。。我按下Alt+RightArrow,文本“howdy!”会在提示下打印出来,就在那里

我还可以通过将命令写入历史文件,然后用向上箭头调用它来完成我想要的事情。我试过“echo-n sometext”,但不起作用

我是否可以编写一个脚本,退出并在命令行上留下(说)“你好!”?事实上,我希望脚本基于一些内容构建一个复杂的命令,但我希望脚本将其保留在CLI上进行最终编辑,因此必须防止自动执行


提前感谢。

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

# 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

你可以从中学到更多。答案很简单:

print -z $string-to-print

zle:未找到函数定义文件zle:仅当zle为activelilydjwg时才能调用小部件,谢谢。你的帖子里有很多东西要细细琢磨,而且它完全按照你的建议绑定了密钥。但是它仍然不能帮助我创建一个脚本,当它退出时会在命令行上留下一些东西。我认为上面的“hello”函数看起来很有前途,并试图胡闹,但我无法从命令行让它自己运行。使用my.zshrc中的“autoload-uzle”,我得到:zle:未找到函数定义文件。。。在未修改my.zshrc的情况下,我得到:zle:widgets只能在zle处于活动状态时调用,我知道我有很多阅读工作要做:(@rayadrews:你是如何调用导致此错误的zle命令的?我只是在CLI上键入了“hello”“zle hello”和其他一些操作,并得到了这些错误。但我对这个“zle”一无所知,我只是希望得到最好的结果。无论如何,似乎有一个非常简单的解决方案来解决我的问题:“print-z$the command string”这正是我想要的。