有时我在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/