我正在使用 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 以上版本。