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

时间:2012-04-12 01:35:25

标签: zsh

我想知道是否可以编写一个zsh脚本,它会将命令写入提示但不执行它,即将它保留在那里供我编辑,然后在我准备好时执行。我可以通过关闭最终的'\ C-m'来做关键绑定这样的事情。例如:

bindkey -s "\e[1;3C" "howdy!"

...我按Alt + RightArrow和文字“你好!”在提示符下打印,然后就在那里。

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

我可以在命令行上编写一个可以退出(例如)“howdy!”的脚本吗?实际上我希望脚本基于几个东西构建一个复杂的命令,但我希望脚本将它保留在CLI上进行最终编辑,因此必须防止自动执行。

提前致谢。

2 个答案:

答案 0 :(得分:4)

原来答案很简单:

print -z $string-to-print

答案 1 :(得分:1)

如果您指的是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

您可以从A User's Guide to the Z-Shell, Chapter 4了解详情。