Deleting fish shell history

Have you ever made a typo? No, me neither, but in case you ever do...

I run a lot of commands via the shell history using fzf and CTRL-R to save re-typing, and ironically, mispellings. However, if you do mispell something it ends up in the history forevermore, taunting you upon each invocation of fzf-history-widget.

It turns out that fish ships with a neat history command that allows you to manipulate the history is various ways including searching, deleting, and completely clearing.

The command I want to remove in this case is mix echo (which should be mix ecto).

I use the --contains option here which will present a prompt showing the entries and allowing you to delete individual entries or remove all.

1
2
3
4
5
6
7
8
9
10
11
12
$ history delete --contains "mix echo"
[1] history search --contains "mix echo"
[2] mix echo.migrate
[3] mix echo.create
[4] mix echo.reset
[5] mix echo.setup

Enter nothing to cancel the delete, or
Enter one or more of the entry IDs separated by a space, or
Enter "all" to delete all the matching entries.

[I] Delete which entries? >

If you want to search before running delete you can do history search --contains "<search>" which will return a list of items for you to check.