Ответ 1
history --merge
не объединяет историю в хронологическом порядке # 2312. Поэтому, даже если мы вручную добавим команду в ~/.config/fish/fish_history
, мы не сможем просто нажать ее, чтобы увидеть ее (хотя вы доберетесь до нее, если нажмете достаточно).
Чтобы обойти это, мы можем сделать копию fish_history
, затем вызвать builtin history --clear
, который очистит как внутреннюю историю рыбы, так и файл истории. Затем мы восстанавливаем файл истории из нашей копии, добавляем нашу команду и вызываем history --merge
, чтобы объединить файл истории с пустой историей.
function evalh
eval $argv
# backup history file
cp ~/.config/fish/fish_history /tmp/fish_history.tmp
# clear internal history and history file (using builtin means we don't get a prompt)
builtin history --clear
# restore history file
cp /tmp/fish_history.tmp ~/.config/fish/fish_history
# append our command
echo "- cmd:" $argv >> ~/.config/fish/fish_history
echo " when:" (date "+%s") >> ~/.config/fish/fish_history
# merge history file with (empty) internal history
history --merge
end