xxd + neovim or (doom) emacs
I used that combination for a long time, but the most annoying thing about it was that I couldn't really *search*, neither hex nor text. Because you are searching in human readable output, you have to be lucky for your (short enough) search string to happen to be aligned such that it is all contained within one line.
I guess you could workaround that limitation by using
xxd -p, search in that, note down the offset, and then seek to that offset in the normal
xxd output, but...
... in the end I just got a good hex editor. Since I'm primarily on macOS I use Hex Fiend. Has some nice features too like showing you interpretation of numbers (signed/unsigned, hex,dec,oct...) of arbitrarily long numbers (just highlight the bytes), the ability to replace 0x00 values with spaces (makes non-zero data stand out more), and binary templates.
But it's macOS only I think.