有时我在zsh中使用多行命令:
❯ echo \ > a \ > multiline \ > command
从历史搜索中拉出命令后编辑命令时,我可以更改各行的内容.但是,我无法弄清楚如何插入另一行:
# I want to insert another line after "multiline"... ❯ echo \ > a \ > multiline \ # but hitting <return> here just runs the command,even though there's a backslash at the end of the line > command
如何在从历史记录中拉出的多行命令的中间插入换行符?
解决方法
您可以使用self-insert-unMeta绑定Alt Return以插入文字换行而不接受命令:
bindkey '^[^M' self-insert-unMeta
要使用您的示例:在光标位置按下Alt Return(#)
% echo \ a \ multiline \# command
会得到你这个:
% echo \ a \ multiline \ # command
这不仅适用于编辑历史记录,也适用于键入命令时.因此,您可以像时尚一样在脚本中准备几个命令,并使用单个Return接受它们.
例如,在此示例中按Alt Return而不是#:
% echo command 1# echo command 2# echo command 3
将执行与命令echo命令1相同的操作; echo命令2; echo命令3并产生此输出:
command 1 command 2 command 3