在从历史记录中提取的多行zsh命令中插入换行符

前端之家收集整理的这篇文章主要介绍了在从历史记录中提取的多行zsh命令中插入换行符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有时我在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

猜你在找的Linux相关文章