历史记录中的多行命令仅返回第一行,并使用双反斜杠

历史记录中的多行命令仅返回第一行,并使用双反斜杠

我正在使用 oh-my-zsh,其历史配置如下:

setopt appendhistory autocd extendedglob
setopt EXTENDED_HISTORY
setopt histignoredups sharehistory

历史搜索Ctrl+R和箭头键设置为默认,即:

% bindkey '^r'
"^R" history-incremental-search-backwar

但是,一段时间以来,我遇到一个问题,即在搜索命令历史记录时,我得到的命令的第一行末尾带有双反斜杠,但其他行却没有。实际上,这种情况仅在更新历史文件时发生,如果命令是新的,并且我在输入它的同一 shell 上搜索它,我会正确得到它,但如果我关闭 shell 并重新打开它,并尝试从历史记录中检索命令,我会得到如下结果:

->输入命令:

echo \
 "multi-line command"

使用历史搜索的结果(bck-i-search: echo):

回声\

有人知道是什么原因造成的吗?我找到的信息这里其他地方没有帮助:(

接下来我添加一段我的历史摘录:

 4453* cd place
 4454* someCommand -d folder \\
 4455*   --opt 1 \\
 4456*   -foo1 bar1 -foo2 bar2 -aeps 0 0.01 0.01 >&! output.log &
 4457* du -sh
 4460* ls *
 4461* exit

出现故障的两个主机的 zsh 版本:5.0.2 和 5.0.5。

然后我根据语法添加了一个多行命令:

  3723  echo $ZSH_VERSION
  3724  for x in 1 2 3; do echo $x \ndone
  3725* someCommand -d folder \\

运行正常。多行引用,例如:

echo "lala
dquote> dump
dquote> dump
dquote> ok"

导致:

 3732  echo "lala\ndump\ndump\nok"

并且运行良好。

这在我的本地机器(zsh 版本 5.0.7)上没有发生,这也导致多行命令中使用 \n 而不是双 \:

15365  echo \\n multi \\n line \\n command

在另一个远程服务器(4.3.11)中也是如此:

14133  example -d  folder \\n               -pp mpp \\n               -c mcc  \\n               -x mxxz \\n               -r mrr \\n               -e 0 \\n               -o out \\n               -debug

在所有机器上我都使用相同的配置文件。

答案1

这可能是由于所描述的问题这里? 如果是这样,建议的修复方法似乎会将 zsh 更新到 5.0.5 以上版本。

相关内容