有时我在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绑定(bind)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 command 1; echo command 2; echo command 3命令相同的操作并产生以下输出:
command 1
command 2
command 3

关于zsh - 在从历史记录中拉出的多行zsh命令中插入换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26409337/

10-16 16:43
查看更多