Vimify your browser

Monday, May 26, 2025

I love the vim editor and I love apps that have a vim-mode. All my posts are written using Neovim (henceforth just called vim), any code I write is using vim, and I use it for any note-taking or LaTeX editing. If you don't know what vim is, it's a text editor with two main modes — one for typing new words, and one for editing existing words, which can be switched between in just a keystroke. In the editing mode, called Normal mode, the entire keyboard becomes an array of useful commands and shortcuts for traversing and manipulating text. Once these keys are in muscle memory, editing text feels ergonomic, even joyful. In particular, there is never a reason to touch the mouse, or even the arrow keys. However, switching to the browser usually means using the mouse, or at least an entirely different set of keyboard shortcuts. Wouldn't it be cool to have the vim experience in the browser?

By a vim-like browsing experience, I mean the shortcuts for navigating a webpage should feel similar to the shortcuts for navigating a text file in vim. Actions like highlighting text and following links should feel like vim as well. Also, navigating between tabs and pages should feel similar to navigating between files in vim.

The options

The two main options are to use a use a regular browser with extensions, or use a niche alternative browser. Over the years, I have tried both. The first vim-like browser I ever used was qutebrowser, which really nails the vim-like features, is actively developed, and highly regarded. On the downside, I found it didn't display a handful of websites quite right, and it didn't have all the niceties afforded by browser extensions (in particular the adblocking still isn't quite up to the level of ublock origin). Still, I do think qutebrowser is cool, and in terms of UI and experience it kind of sets the benchmark for what I want.

In terms of browser extensions, the most "visible" one if you search Mozilla add-ons is Vimium (probably because it has Vim in the name). Vimium is solid and works well, but its feature set is modest — it feels like I'm using Firefox (well, Librewolf) with bonus shortcuts, whereas in qutebrowser I feel like I'm using vim: the browser. In particular, vim (and qutebrowser) use a command-line to access advanced features and customisation, while Vimium has no command-line and is not really customisable. However, if you're not a hardcore vim-user but just want some extra shortcuts for comfortably browsing without using the mouse as often, Vimium is great.

Looking to upgrade from Vimium, I also tried a browser called Vieb. Vieb seems like a great project. Honestly, from the time I spent playing around, I don't think there is much in it between Vieb and qutebrowser. Some sites that didn't work great in qutebrowser were better in Vieb, but I found other sites slow. I liked how many common browser extensions like darkreader are available (or have an equivalent implementation) in Vieb. They're both fantastic browsers in this space that felt very good to use.

However, the solution I eventually landed on was from a search "make firefox more like qutebrowser". This led me to a cute userChrome.css called qutefox that looked pretty much exactly like qutebrowser, and the recommended extension to accompany this userChrome is one called Tridactyl. The combination of these modifications is amazing. Firefox is totally transformed. It has a command-line, it's customisable, it has a minimal UI. It really does feel a lot like qutebrowser.

Screenshot showing a sway desktop with vim on the left tile and a highly customised Firefox window on the right
Yes, that's Firefox/Librewolf on the right
The nice thing about doing it this way is I still have all my browser extensions — adblockers, as well as bookmark and password managers. Also, if something needs to be done in the conventional way, moving the mouse to the top of the window shows the normal Firefox toolbar. This feels like the best of both worlds — a minimal vim-like UI but the full functionality of Firefox when required.

Quick note regarding Librewolf

Some advanced features of Tridactyl require installing Native Messenging. Tridactyl gives you the commands needed to install the Native Messenger for Firefox, but not Firefox forks. If you use a fork like Librewolf, use the installation script here but change references to $HOME/.mozilla/ to $HOME/.librewolf or equivalent.

Conclusion

If have never tried to learn vim commands, I highly recommend them. Vim-like key bindings are available (sometimes via plugin) for many popular apps. Once you learn them, you'll want them everywhere, including your browser.

If you want a dedicated Vim browser, qutebrowser and vieb both seem like excellent choices. I'd probably stick with qutebrowser due to the familiarity and very active development. If you just want your regular browsing experience plus a few handy shortcuts, I have used Vimium with no problem and would recommend it. And if you want to completely overhaul Firefox to be a proper vim browser, the links are above.


Respond via email