在从历史记录中提取的多行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中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...