Я использую oh-my-zsh со следующей конфигурацией истории:
setopt appendhistory autocd extendedglob
setopt EXTENDED_HISTORY
setopt histignoredups sharehistory
В истории поиска Ctrl+R и клавиши со стрелками установлены по умолчанию, то есть:
% bindkey '^r'
"^R" history-incremental-search-backwar
Однако через некоторое время я сталкиваюсь с проблемой, что при поиске команд в истории я получаю первую строку команды с двойной обратной косой чертой в конце, но не другие строки. Фактически, это происходит только тогда, когда обновляется файл истории, если команда свежая и я ищу ее в той же оболочке, в которую я ее ввел, я получу ее правильно, но если я закрою оболочку и снова открою ее, и попытаться извлечь команду из истории, я получу это так:
-> входная команда:
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 вместо double \:
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
На всех машинах я использую одинаковые файлы конфигурации.