我注意到存储命令历史的默认行为仅存储最新条目。键入ls
然后ls -al
输入history
将显示:
ls -al
ls
ls
再次键入将显示:
ls
ls -al
命令历史记录中这些命令的所有其他出现现在都消失了。这使得我很难重新学习我几天前可能已经完成的过程。
有没有办法让鱼按照输入的顺序保存每个命令条目?
我注意到存储命令历史的默认行为仅存储最新条目。键入ls
然后ls -al
输入history
将显示:
ls -al
ls
ls
再次键入将显示:
ls
ls -al
命令历史记录中这些命令的所有其他出现现在都消失了。这使得我很难重新学习我几天前可能已经完成的过程。
有没有办法让鱼按照输入的顺序保存每个命令条目?
没有配置可以使用历史功能本身自动执行此操作,不。从鱼文档:
但是,如果目标只是捕获您输入的内容,以便您稍后可以查看命令(在适当的上下文中),那么通过脚本编写完全有可能。在一个简单的级别上,您要做的只是将在提示符下输入的每个命令保存到一个不会删除重复项的文件中。
在 中创建以下函数
~/.config/fish/conf.d/save_full_history.fish
:这做了几件事:
~/.config/fish/conf.d
,它将在每次 Fish 启动时自动加载该功能。这是通过conf.d
在--on-event
延迟加载的 Fish 函数中未激活(和其他)钩子来完成的。--on-event fish_preexec
,函数在Enter每个命令按下后运行。$argv[1]
并将其保存到~/.local/share/fish/fish_full_history
文件中以供将来查看。当然,您可以为此添加诸如时间戳之类的内容。例如:
您还可以创建一个单独的函数(它可以在同一个文件中),
fish_posterror
当命令导致错误时执行该函数以在文件中做一个注释。