Hacker News new | past | comments | ask | show | jobs | submit login
Vimium – A browser extension that provides Vim-style keyboard controls (vimium.github.io)
441 points by kevmo314 on Feb 28, 2023 | hide | past | favorite | 209 comments



Vimium was my introduction to software engineering :) I contributed a bunch of code to it back in 2011-2012. Glad to see it still being in use!

I'm quite proud of the little test I wrote to figure out which DOM APIs could be used to detect the visibility of different kinds of elements, in order that we could display link hints correctly: https://github.com/philc/vimium/blob/master/test_harnesses/v...


You crushed it Jez! I wish we could work on more projects together.


It was a great experience! Thanks for your code reviews and mentorship :)

Not sure I'll have much time to work on OSS in the foreseeable future, but it would certainly be nice to work together again.


Thank you both. I have been minimizing mousing after injuring my shoulder. Vimium is a godsend to me


How fun! I'm also quite proud of another contribution, also related to detecting visibility, but this time with `document.elementFromPoint` to filter out elements completely covered by other ones :)

https://github.com/philc/vimium/pull/2251


I think vimium was one of my first open source contributions too!

I built the custom search engines feature (which I ironically don't use much anymore).


Oh really? I've been using it for years and love it, so thanks for that!


Very clean code, extremely readable. If you can understand everything at first pass, that's gold.


Link hints are the best part!


(I'm one of the authors) Love seeing this on HN today! It seems to get some front page attention every couple of years. Thank you everyone for the encouragement!

Related: last week I published a very similar extension, but for Google Sheets. https://github.com/philc/sheetkeys


Hey, just wanted to say thanks for your work on Vimium. I have a lot of RSI issues from using a mouse and Vimium has been incredibly helpful in mitigating those.

I think it's fair to say that between Vimium and a windows manager on OSX I've cut my mouse actions by 90%.

Your work has had a profoundly positive impact on my life and I'm very grateful.


I'm in a similar boat with RSI; Vimium is a huge help to me. What do you use for a windows manager?


I use Divvy as it was the only one I found that had the ability to scale up to larger number grids. https://mizage.com/windivvy/

You can see the rest of my ergonomic aids here: https://twitter.com/mbuckbee/status/1463598464252665866

- Kinesis Freestyle split keyboard tented and then tented even more with slanted yoga blocks

- 4K monitor/tv to show multiple screens to reduce alt-tabbing

- Magic trackpad mounted on a cellphone stand on the left of my keyboard (I'm right handed). This lets me use my non-dominant hand and requires less arm movement.


Amazing, thank you for sharing!


Thank you for your excellent work! I have some RSI issues and try not to use the mouse as much as possible. Vimium helps me avoid wear and tear every single day. I love it and install it immediately on any new Chrome instance.

(I am about to use it to press the "reply" button to submit this comment. It's fantastic.)


This is cool!

Do you have any plans for a Google Docs extension as well? Or do you mostly get by with Vimium there?


I once used Vimium and some bug caused the extension to permanently close my hard-earned ~500 tab collection. So while I feel like I lost a lot, I've never felt so much at peace since either.


That used to be my solution for managing tabs in chrome. Every few months it would just crash, I'd lose all my tab, and I'd think "probably for the best". Now chrome is a lot more stable :/.


This causes me some level of anxiety. An important end of day ritual for me is to close every tab I'm not 100% sure I will need the next morning.


My approach is to use Firefox Nightly and restart it whenever it prompts me to do so. Keeps me at a low tab count :)


is this some kind of modern-day hoarding? how would you even find that useful? why don't you use bookmarks for the earliest ones?


It's interesting, because i've asked many people who have massive tab counts this same question, and it seems the overwhelming answer is that bookmarks are harder to manage than tabs.

It takes more time to bookmark a link, than it is to open it in a new tab. The positioning of the tab is an indication of approx. when that tab had been opened, and the other tabs near it is likely similar in subject matter, or is related somehow.

It acts as a queue to be processed as well.

And for a lot of browsers, the auto-preloading means you can have the tab "saved" and you can view it, even if it took long time to load. It's a form of "offline" viewing.

If bookmarks can achieve _all_ of the above, without having the need for the user to do anything extra, it would actually replace tabs. But so far, i've not seen anyone switch.


Thank you for this, it's something I never understood.

I have to shut down everything at the end of the day and start from a clean reboot the next or I get overwhelmed. I think it's sort of my way of unloading work stuff from my brain at the end of the day and loading up again at the beginning of the next.


> The positioning of the tab is an indication of approx. when that tab had been opened, and the other tabs near it is likely similar in subject matter, or is related somehow.

Add in tree style tabs and you get this relationship on steroids - new tabs are automatically a child of the source tab, and you can expand/collapse the tree.


I'm a "tab hoarder" and you've hit the nail right on the head.


As someone guilty of same (I've got just over half that many tabs open now: 273), I might be able to explain.

Links rot. If I see something on the interwebs that I want to store or remember, I usually copy the pertinent information somewhere else. Be that Anki, or org-mode, or somewhere else. I leave the tab open until I get the free time to go back and copy the information somewhere.

Looking at my open-longest tabs, it seems I've got some Magento documentation open from last summer. I should go clean that up. )) If these were bookmarks, I would absolutely _never_ get around to filing the information away in a useful place.


it is. i am one of those who have atleast 100 tab on any workday, more on my personal system. i also use bookmark service like raindrop that have tagging, etc than simple folders.

Main reason for keeping tags are they are a constant reminder of topics to look into. Kinda like postits on your monitor. If I put them away using bookmarks I often forget about them and neder get to them. I have folders with hundreds of links I wanted to look a year back and still haven't.

I do clean out tabs occasionally when I am done with a topic but I mostly only bookmark when having to shutdown the system.


Isn't that just stressful? Are you ever going to look at more than 20% of the things on your backlog?

My approach is to bookmark things and then if I feel like it's time to read up on something or just a good time to work on the reading backlog, I'll just pick whatever seems suitable at a first glance.


> Isn't that just stressful?

No, why would it be? It's sort of my curated list of things to check out when I have a free moment, just like HN is. HN curates the Internet for potentially interesting things for hackers, and I further curate from that (and other sources) for things that interest me, and have them as open tabs. It's no more "stressful" than knowing the fact that there are thousands of interesting HN links on here. They're just options of potential things to look at, not tasks to get through.

I use bookmarks as a more persistent thing, for things I know will be of interest to me long term. Some of these tabs might go into my bookmarks, but many others are interesting enough to look at/read through once, but not worth adding a bookmark for.


Do you have a way of partitioning off what you're currently working on from the rest of the queue? I feel like I would constantly get distracted with hundreds of potentially interesting things sitting at the top of my screen.


Oh, TreeStyleTabs is a crucial element of this, I'd definitely go mad without it. The stuff I'm currently working on is generally at the bottom of that vertical sidebar, and I rarely venture beyond that area when I'm actively working.

The grouping of tabs into trees also helps with keeping them (pretty much self-)organized. Vimium's "search open tabs" shortcut is also very useful, if I need a specific tab right now.


It might have been a bit of a hyperbole.


You successfully closed a vim-UX interfaced program?

I'm sorry you lost your tabs but congratulations nonetheless.

https://stackoverflow.com/questions/11828270/how-do-i-exit-v...


They've said it's a bug. You'd never close anything was it not for this bug


Holy shit... 500 tabs? I thought I was bad about accumulating tabs but had no idea ~500 was even possible. I'm trying to even but I literally can't--You might say "I literally can't even".


I have 7-8000 on one machine, multiple thousands on at least two others. Session Buddy + either Auto Tab Discard or The Marvellous Suspender means I don't lose any even in crashes and it doesn't use too much RAM.


I thought Suspender had been taken down due to some change upstream that introduced trackers or something else shady. Great to see it got forked. I’ve been using Auto Tab Discard but it doesn’t feel as effective on diminishing RAM usage.

Has that been your experience as well?


That was The Great Suspender. Marvellous is a fork that seems to work just like the original. I actually have trouble with it with more than ~2000 (3000?) tabs. It gets unstable and slow. Auto Tab Discard doesn't have that problem, but does occasionally disappear and stop suspending tabs until you reload it.


Also my exact setup! Have hundreds of tabs and in between Session Buddy and The Marvellous Suspender, I haven’t lost one yet.


Honestly, I don't know how you all stay so low, I'm down to 1172, and getting it even that low feels like a bit of an accomplishment.


Zen. And MaxTabs. I limit myself to 5 tabs by force. Anything more, it means I'm becoming scatterbrained and need to revisit what I already have opened and think more linearly rather than in a spastic manner.

I tried saving tabs for reference material, but I prefer something simpler. I shutdown my PC at the end of the day. I have a dump.txt where every link that might get needed tomorrow gets pasted.


This is intriguing. Do you happen to have a blog post or similar documentation about your process?


I don’t understand what’s so complicated about this. I’ve also never allowed myself to have more than 5-6 tabs at a time because it just seemed reasonable. I’m not sure what I could possibly be doing that requires more tabs. I have an organized bookmark folder structure for things I absolutely need to get back to/visit regularly. I’m using my browser for no more than a couple streams of thought at any given time.


That's a pretty aggressive and unhelpful response. While your brain might be tuned to perfect tab management, I've worked with very talented people who hang on to tons of tabs (amongst other idiosyncrasies). Some want to change (I deign to consider myself one of these people), others don't and still go on to be productive, awesome developers.

You seem to have mastered pure focus which is an amazing, coveted trait, but we don't all have it.


I'm not trying to come off as aggressive. It's that I don't understand what more than 15 tabs could realistically be used for. I don't think I could find a use for more than 15 tabs if I tried at any given time. At work as an engineer I usually have a tab with Bitbucket, at most 3-4 tabs for pages/documentation I'm reading, a tab with Jira. Maybe I have a tab or two on Youtube to put something on in the background. So as I'm reading comments about people claiming to have > 1000 tabs, I can't comprehend what's going on in that situation. The only way that could happen is if I simply never closed tabs when I was done with the task I was looking at it for. It would never make sense to not close it if I don't need it because after 15+ tabs being open it becomes too hard for me to find anything because the tabs are so small. I'm incentivized to close tabs when I don't need the information anymore because the browser becomes unusable quickly. I know how to get back to just about anything I was looking at and if it's important enough that I'm revisiting it often it gets bookmarked.

It's less aggression and more disbelief/shock because I don't understand how it would be possible to use a browser with more than 15 tabs open.


I'm not who asked, but I can explain my own and other's perspective: don't passively accumulate detritus. If you want to remember something , you must write it down or take a note, just like if you were in school. Don't just "throw another tab on the pile". That's like a .txt file full of links you're just pasting and pasting into. Are you really ever going to go and review those links?

Folks who successfully have huge numbers of tabs and who really love that, in my experience, are treating their tabs like a different kind of bookmark, or they just have a ton of bookmarks. They'll usually use a categorization feature of some kind in order to organize their tabs just like someone organizes a library. Whether you're using tabs, bookmarks, written notes, whatever, all these systems in general are just some form of active tracking.

If you're not actively organizing and tracking though, why not free yourself and merely close your tabs aggressively? It's pretty easy, just uncheck the "Re-open tabs on startup" or the equivalent in your browser settings, then just click the "close" button on your window with all your hundreds of tabs. Let them go, and free yourself of worrying about them!

Besides, if you REALLY need them, you've always got your browser history anyway ;)


Kudos. If I need to do something or return to something it becomes a card in Trello, not a tab which I always need to evaluate if I need it open or not, is it important or not, what did I want to do with this information last time I saw it etc.

And Trello card is an action item which will eventually get to the "DONE" column, will be decomposed into actionable items or will be deleted/archived during the next review event.


Yeah, I've tried the Trello board, and writing down notes, org-mode and other and I have a large graveyard of all of those that get lost. I think for me, tabs remain successful because they are ever-present and insert themselves into


I open tabs in groups in Sidebery. For stuff you plan to return to they are better than bookmarks because there’s no switching between bookmark and tab lists (you’ll always have tabs anyway) and clicking a tab switches to the tab and focuses it’s group of related tabs in the list rather than opening another tab.

I also don’t have to close them to return later or curate them — more time and thinking saved. Sidebery unloads tabs in collapsed groups so even though I have a few hundred open across two Firefox windows, probably less than 20 are consuming RAM and other resources.

I don’t really use bookmarks. I don’t think they solve any problem very well. Both tabs and notes/documents with links in are better.


This. I used to be one of those who opens a tab to read and address this queue later on. I realized it's not efficient (at least for me) because things keep adding up and I sometimes have weeks/months old tabs that I never got to. So I started using a simple task management stuff and it's made an amazing difference for me. Granted that it might be a bit more work, but overall I feel more productive and organized.


What are you doing with these tabs? Are they a reading list? Things like gmail that you could reopen whenever?


Two things: tabs as bookmarks, and groups/windows of tabs relating to different projects so you can easily pick up where you left off.


How do you find a specific tab out of those 1172 though? I assume some might be quite old and any tab-finder isn't going to search inside the tab itself?


One Feature of vimium is maybe T which pops open a box that searches title or url (though as you say I doubt it searches content).

I keep my tabs low and there's no way I'd find anything with that many tabs open but thought I'd call out the feature given the context of this discussion.


I have once went upto 1674 in Firefox.


Is there a count somewhere?


In Firefox: about:telemetry#scalars-tab_search=tab


I think this may have been this issue[0], which was fixed in [1]. Seems like the limit has crept up from 3 to 25 at some point in the last decade-ish, but in theory it should be undoable with 25X (or by mashing X to undo as many x commands as required). [0]: https://github.com/philc/vimium/issues/1126 [1]: https://github.com/philc/vimium/pull/1128


my solution to beat the tab accumulation problem is to have firefox simply close all tabs, clear browsing and download history, clear form and search history, and clear cache upon the user choosing to close the program. if the browser or computer crashes the tabs and everything else still exist. if a site meets your interests, bookmark it. note that cookies remain but are usually cleared periodically. also you can setup a folder of bookmarks, or a new tab page, that you can open up everyday and check the websites you want.


If you can't remember all of those 500 tabs, did you really need them ?


I used Vimium for a while, mainly for the feature of opening links with the keyboard. But I never stuck with it, forgot to use it, because I really don't like the mode-switching and having it default to taking over keyboard input.

Finally found Link Hints, which does only the link opening part, but better (IMO), and with normal keyboard shortcuts. Now I'm constantly using it.

https://addons.mozilla.org/en-US/firefox/addon/linkhints/


I use Key Jump. It's even simpler. Just hit , or . depending on if you want to open in the same or a new tab.

https://addons.mozilla.org/en-US/firefox/addon/key-jump-keyb...


Modeless Keyboard Navigation[0] is a fork of Vimium by an RSI sufferer that doesn't have the mode switching element (but does keep all the other actual features); instead you use Control/Alt + whatever key combinations. Basically it's like Link Hints but with more shortcuts.

0: https://handsfreecoding.org/2017/11/22/extensions-now-availa...


I also recommended vimium-c (https://github.com/gdh1995/vimium-c). It's like vimium on steroid: with a bunch of additional useful features.


is pentadactyl still a thing?

Edit: no, but tridactyl is: https://github.com/tridactyl/tridactyl


Nice feature set especially the Contextual keymapping. Can think of some interesting use cases it enables.

Offtopic:

The section "Declaration for Applicable Regions" from ReadMe, this is the first time I've come across it.

Should it be read as a disclaimer or an opinion?


Any specific things you do with vimium-c that are must have features to switch over?


I use caret mode, visual selection and P quite often to search for the text in visual selection in a new tab with the preferred search engine. I also like yf for yanking a link to clipboard.


Came here to make the same recommendation, so just making this comment to second yours.


What does it add?


Presumably -c :)


Yeah sorry I'm getting anxiety when I see that many Chinese characters in a README.


How dare they not speak only English on your Internet.


For those looking to replace the mouse at the OS level on macOS (similar vibe), Scoot is pretty good for that... https://github.com/mjrusso/scoot


On MacOS I've been using homerow.app which does the same thing as Scoot but looks a bit more polished.


I like Shortcat

https://shortcat.app



This is the very thing I’ve been looking for since vimac became proprietary (homerow). I was using Shortcat, which is also a proprietary software and I was having a little bit of concern mainly about security, but this software seems to solve the problem. Thank you for sharing.


Is that really practical? In the video it looks not very useful to me as it does not seem to be very efficient. The mouse is so integrated into MacOS it looks hard to efficiently replace it. Are you or is anyone else actually using this regularly?

Also, I think the other mentioned alternatives look quite similar to that regard.


Is there a Linux version? It looks very handful


It certainly would be but looking at the options tells me that they're hooking into MacOS's widget libs and on Linux there's just so many. What I get by with to go mouseless is Tridactyl for Firefox, warpd for when I need a pointer, and when I absolutely, positively need a mouse, mouse emulation on QMK keyboards never fails me. I only need it these days for dealing with MacOS outside of my Linux VM. I also use keyd in order to remap keyboard shortcuts.

https://github.com/rvaiya/warpd https://github.com/rvaiya/keyd

Why in the world are those links side by side?


There's Vimium Everywhere, a very recent tool for Linux of mine. I don't know of any other. https://github.com/phil294/vimium-everywhere


On linux, you can just install one of the DEs that are keyboard driven. Rat poison is one. I used that with Conkeror (a fully keyboard driven browser with emacs keys) for a long time.


There's also good old i3, which has vim-inspired key maps by default iirc


Anything like this for Windows?


This comes up every once in a while on HN. I've been using vimium for over 10 years now since I did an internship at the same company as the guys who created it. Can't imagine browsing the web without it. Works especially well with HN and those small link targets :)


I’m a big fan of vimium! Works great and consistent


There's also a free, open source vim style browser called Qutebrowser which you can control like Vim if that's your thing. It works well, also with complicated web sites.

https://qutebrowser.org/


I have been using qutebrowser for some time now and it's pretty nice if you can accept having a browser without UBlock Origin and other extensions ranging from nice-to-have to obligatory. The main advantage and the reason and I can't get myself to switch to Firefox is that it's vim-UX is just flawless. It works amazingly well and is just magnitudes better than any Firefox or Chrome extension that adds vim-UX on top since it's built into the browser natively in qutebrowser.

Maybe I'll switch away some time in the future, but for now the flawless vim-UX, its customizability and my many scripts and custom bindings I've written for it keep my locked in the qutebrowser garden, haha!


> pretty nice if you can accept having a browser without UBlock Origin

Just for potential readers who might not be aware: qutebrowser ships with its own inbuild adblocker though, so you're entirely left adrift in the ad-trashpile that is the Web today. Qutebrowser isn't my daily driver (mainly because I found it a pain to configure), but from my limited experience, the adblocking works pretty well.


> so you're entirely left adrift

so you're *not* entirely left adrift


Qutebrowser seem to have some built-in support for adblocking, have you used that? I'm curious how it works.

Tried it before, long long time ago, but found it to complex. But now after using Vimium for a while Qutebrowser actually seems very intuitive and not hard at all.


qutebrowser has support for host-based blocking, which is better than nothing but a far cry from element blocking like UBlock Origin does. For me, qutebrowser's ad-blocking is pretty hit-and-miss, which is why I'm longing for UBlock Origin haha.


Origin is hard to beat and unfortunately a must have nowadays.

Although I must admit for a longer while I've been ignoring sites that are annoying or unusable without a blocker and it made my day much calmer. I stopped even clicking links on most "news" sites that are just borderline clickbaits.


+1 my thoughts exactly. It would be so nice if Firefox allowed tridactyl full keyboard control. With qutebrowser, having a proper control mode and an insert mode that work everywhere makes it so much easier to navigate.


Mozilla said they were happy to do that five years ago if we wrote the API. We started work on it here [1] but lost interest because there have always been more urgent things to do (and for me, the ctrl+comma escape hatch that gets you back to Tridactyl from anywhere in the browser is good enough).

I think honestly most of the work in getting such an API merged would be political since most of the people who approved it are no longer at Mozilla.

If anyone wants to pick it up I would be delighted to help.

[1]: https://github.com/tridactyl/keyboard-api


I love qutebrowser and use it daily (and donate to the compiler), mostly on Linux but also on Windows.

Here are some of my headaches that force me to use Chrome/Firefox anyway sometimes, if anyone has answers to these I am very interested to hear them.

* Can't save passwords / autofill (for accounts I don't particularly care about)

* UI scaling in Windows (for high-res screens) is bad. The web page contents do not scale automatically.

* Does not resolve Teams "secure links" (workaround is to right click teams links instead and copy them, then paste in qutebrowser)

* Twitter videos don't work

* On linux (somehow this works on windows), "accept all cookies" sometimes does not get rid of that prompt. Stack overflow is an example where this happens. Another example is redhat where the prompt does not load for a while [0]

* Clicking something that spawns a box where text can be inserted does not bring me into insert mode. Example [1] (the searchglass). This causes me to close the tab by mistake sometimes by typing 'd'.

[0]: https://access.redhat.com/documentation/en-us/red_hat_enterp... [1]: https://www.atlassian.com/software/jira/templates/web-design...


One Vimium feature that I use a lot is the "Vomnibar". As a heavy bookmarks user, it lets me easily search for any existing duplicates before bookmarking a page by just pressing 'b'. If I start the search with "/<Space>", it will show the full path to the bookmark folder too!


Been using Vimium for years, and just learned about searching paths in bookmarks via `/` (hitting `b` or `B`, then `/`). - Thank you very much for sharing.


pressing 'o' will achieve the same thing but also allow you to search the internet as if using a google search (or your default search engine)


Always wondered what's this bar doing when accidentally pressing 'b' in the browser:-D Thanks!


Using `T` to search through open tabs is the best



I switched from Tridactyl to Vimium a while ago. Tridactyl is powerful and feature rich but more complex. Vimium does everything you need for normal usage and is super simple to set up (the default config is a very good base and you'll probably only end up making minimal changes over time).


I find Surfingkeys to be much superior to vimium. Works consistently in all sites. https://chrome.google.com/webstore/detail/surfingkeys/gfblio...


For the privacy-conscious interested in SK, it may be worth a read of this GH issue: https://github.com/brookhong/Surfingkeys/issues/1796

I empathise with the author wanting to make a buck but it's hard to reconcile the approach he took with the level of trust granted to this extension.


it looks more naive than malicious ... I just donated to support him.

But I agree, there is so much trust with extensions like this it isn't even about intent.


I've been using Vimium for quite some time now, and while I like it, there are two things which annoy the hell out of me.

Vimium disables the browser's backward-forward cache (by listening to the "unload" event), causing navigation to be much slower.

There is also no way for a website owner to warn a Vimium user of conflicting keybindings. I run a website which implements Vim keybindings and several of my users complain that it doesn't work. I have to remind them to disable Vimium. This issue has been open on their GitHub for more than 4 years with no end in sight.


At least in firefox, I'm not sure that's true. I go back pretty frequently (maybe you mean specifically with vimium back navigation) and get yesterday's cached HN front page, for example.


The bfcache doesn't just store cached resources like static files but the entire javascript heap. It makes back button action instantaneous.

I've observed the effects on both Firefox and Chrome and it's like day and night.

On chrome you can even test it using Devtools > Application> backward forward cache


> There is also no way for a website owner to warn a Vimium user of conflicting keybindings.

Or Vimium users could RTFM.


As the website author, you can see which extensions the client browser is running, no? Wouldn't that make it your responsibility to detect then disable your custom keybindings rather than the users's?


I wouldn't think so. There are infinite ways for people to customize their browsers; it's not reasonable to expect website developers to account for them all.

Plus in the case of your parent, their website implements vim keybindings, so basically all of them are going to conflict with this extension, and it's going to be pretty useless if they detect that situation and react by changing all of them to something non-standard.


> As the website author, you can see which extensions the client browser is running, no?

No, not really. Not unless it specifies certain `web_accessible_resources` which you try to load - but that's a bit of a hack, needs to be done on an extension-by-extension basis, and won't even work for all extensions.


It's not possible to detect the presence of Vimium.

https://github.com/philc/vimium/issues/2399


I distinctly remember when I first got on-boarded to Superhuman their app detected Vimium running and asked me to disable it for their site.


I work at Superhuman. We used to have code to detect Vimium, though we evidently we removed it very recently, while working on something tangentially related. It was working but definitely finicky over the years.

The initial way we checked for it was looking for document.body.matches('*[_vimium-has-onclick-listener]') but apparently that stopped working in 2018. We then used a variation of this code: https://github.com/hackape/Detect-Vimium/blob/master/detect-... which seems to work still.


How long ago was this? There used to be a way to do this for earlier versions of Vimium but that doesn't work anymore. Very interested in knowing if it's still possible. Will check out superhuman.


For Safari, there is port for this called Vimari https://apps.apple.com/us/app/vimari/id1480933944?mt=12


I used to be a loving VimFX [0] user. It had intelligent link hints (essentially, links it thinks you are likely to want, e.g. because they're big, get single-key shortcuts). The scrolling was actually native, as in equivalent to hitting the arrow keys. I don't think any of the other Vim emulator plugins ever replicated that. Vimium doesn't, Tridactyl doesn't, and Vim Vixen was horribly broken.

Apparently VimFX still runs via some hacks on modern Firefox versions? The last release was even in 2022. Maybe I should give it a try again.

[0] https://github.com/akhodakivskiy/VimFx


I'd suggest to create an issue on the Vimium repo if the big button heuristic isn't implement / didn't get suggested yet.


What do you miss about native scrolling?

IMO the scrolling in Tridactyl is better than native as it can work even when the page has put focus somewhere daft (like a pop-up).


It's more about 'feeling' native than actually being native. I managed to reinstall VimFX and it doesn't quite scroll like the arrow keys, either. But its scrolling speed still feels more natural than either Vimium or Tridactyl, although it's a bit slow.

Tridactyl's huge jumps are annoying to me, as is Vimium's excess smoothness. In Vim, I hit j once to scroll one line, same as <down>.


> Tridactyl's huge jumps are annoying to me

You can change that easily with `:bind j scrollline 1` and `:bind k scrollline 1` :)

The default bind was a conscious choice to break with tradition with Vimperator because everyone I knew rebound j/k to scroll further.

I'm glad you got VimFx working though!


This looks amazing, but installing the Firefox extension I am worried about all the permissions it asks. I am surprised how comfortable people are signing off on these permissions. How do people at HN put these security worries to rest?


This (your fear) is a result of bad policy by Firefox. This is why a lot of useful add-ons or plugins died, and, overall, Firefox became a shittier browser.

Neither Vimium nor SurfingKeys don't hold a candle to KeySnail because back in the days add-ons worked you could control the browser's chrome as well as a bunch of other non-HTML elements.

Today, you cannot even use browser extensions to close a browser window if the page didn't load in it.

These tools were intended for "power users", who could establish for themselves if the piece of code they want to use is doing something malicious or not. Also being an easy way to extend the browser without a need to recompile it and a need to understand a huge project with a ton of infrastructure... flushed down the drain.

This reminds me about how Alan Key said in one of his interviews that if a motorcycle was invented today, it would've been outlawed right away due to safety concerns.


Auditing each tool by ourselves would cost a lot of time. Not to mention that it would not be a one-time thing. At each update, another check would be required for "peace of mind".

Curious to discuss if there is a way to trust these extensions without establishing ourselves that the code is not harmful.


But you don't audit it entirely by yourself. Nor were you expected to before. It's the same idea as with other programs or add-ons you use. Don't you use some add-ons in the code editor you use not authored by the authors of the editor itself? And why would you believe the authors of the editor in the first place?

Of course you need to do some due diligence, but it isn't anywhere near as taxing as you seem to think.

Security is worthless if it prevents you from doing useful things. Given a choice between a chance of security breach and not being able to do the useful thing at all, in the circumstances like using a Web browser, I'd definitely choose to have the useful thing w/o security.


It seems it would depend on the persons risk tolerance.

And assessing risk of freely available open source software is still difficult, you either rely on all the authors being standup citizens, or on the bulk of the reviewers to be truthful and knowledgeable.


It's open-source, about 10K lines of good quality self-contained JS code with no obfuscation so it's not that hard to go through it yourself. It moves fairly slowly these days so once you have done this once it's easy to stay on top of the changes.


I guess for me it’s a combination of:

* The extension has a genuine need for the permissions

* It’s an old extension at this point, with known maintainers with names and faces

* I really, really want the features


Been using vimium for years. I have gotten so used to scrolling pages at different speed by pressing keys that whenever I am using someone else's computer I have to fight muscle memory. I also use it for clicking links through keybinds, but really the custom up/down is the main usage.

The occasional website having its own keybinds never stops being annoying, but it's easy to disable the extension per site


100%. Scrolling with arrows/mouse instead of hitting j or k just feels uncomfortable.

Maybe there's something to be learned by browser designers. It's not just the fact it's on the home row and muscle memory for Vim users. The default speed for down/up arrow scrolling and lack of smoothing is just not the same.


I think most browser designers expect you to use the trackpad or a mouse wheel


> Scrolling with arrows/mouse instead of hitting j or k just feels uncomfortable.

Page Up/Down?


In vim, I usually scroll with ctrl-u/d?


Same but reading on the internet is not like scanning source code files. I tend to read much more linearly and the j/k scroll speed is fast enough. But obviously that's still an option.


That also works in vimium afaik, just a quicker scroll instead of jumps though.


The home page doesnt make it obvious but there's a port for Firefox too.

It does not compare directly with the old vimperator addon but it works great for regular browser navigation.

The only occasional glitch I saw was in UI for adding site exceptions.


Tridactyl is the best Vim-control-plugin for Firefox, hands down.


I used Vimperator on Firefox about 10 years ago. Back then it was fantastic, but I think the add-on environment has changed in FF (WebExtensions) since then and add-ons aren't as powerful.

I've used Vimium on Chrome. Every few years I get excited, install it, feel 10x more productive, and then a few days later uninstall it.

As I recall, it doesn't work on the New Tab page. It doesn't work if the address bar is in focus. I believe you have to wait for the page to fully load before you can use it.

Most annoyingly, a lot of websites have custom keyboard shortcuts, so you have to blacklist them in the Vimium config. Eg Gmail, Miro. Then you need to remember you can't use Vimium on them.

None of this is their fault in any way, of course. But it does make Vimium a bit annoying to use for me anyway.


> Most annoyingly, a lot of websites have custom keyboard shortcuts, so you have to blacklist them in the Vimium config.

No, you just need to enter insert mode. Hit `i`, then all the keyboard shortcuts for the site work. Exit insert mode with escape or ctrl+[.


:mind-unrectifiably-blown-emoji:

Thanks for this, this changes everything. Namely, I can re-enable most commands that I've globally disabled. Who woulda thought the path to enlightenment would be to simply RTFM.


Well, I never want the site's keybindings anyways. They are without a fault, always worse than the general-purpose navigation offered by the extension (I use Surfingkeys, but it's the same idea).

Unfortunately, the extension cannot always overpower site's key-bindings, and that's where it sucks.

However, there's one exception to that rule: every now and then I need to work with a VNC in the browser, and in that specific case Surfingkeys takes over and makes it unusable. Well... it's annoying, but, really all it takes is clicking the extension's icon next to the address bar, and then clicking it again once I'm done with the VNC.

And yes, not having access to browser's chrome (that the address bar and new tab etc.) is a disadvantage that's due to how browsers currently work is impossible to work around.

Extensions do offer a kind of substitute, but it can never be 100% (i.e. Surfingkeys have a way to input new URL or edit current URL w/o interacting with the address bar, or a way to select a tab w/o interacting with browser's chrome, but if you happen on a page like settings or something similar, the extension cannot work there).


You can use <Alt-s> to disable SurfingKeys for that specific website instead of disabling it globally.


There isn't any specific site to disable. It's just an IP that was allocated randomly to my cluster on the VPN I'm connected to. But, sometimes they also have domain names because I need that. Anyways, my point was: it's not that much of a burden really.


I see, just wanted to help if you weren't aware of the shortcut. It took me a while to discover it on Firefox because <Alt-s> is used to toggle fingerprint resistance. That's why I remapped it to '<Ctrl-.>' in my setup.

    // privacy.resistFingerprinting breaks alt keybindings
    api.map('<Ctrl-.>', '<Alt-s>');
    api.unmap('<Alt-s>');
SurfingKeys remembers disabled websites so it can be a time-saver.


What I have noticed is that the bottleneck in editor vs. browser is different, which explains why I don't use Vimium anymore either.

In the editor speed matters: speed is a bottleneck. For example, if AI comes in writes a paragraph based on the function title, "bubble_sort_array", that's great, because now I've sliced 2 minutes off the 3 minutes that would ordinarily take.

But in the browser, time is cheap; in fact, that's largely why I used the browser, to luxuriate in the time it takes to, say, read an article, or write a long comment. I'm there to take it slow, to escape the tyranny of efficiency. So when I'm there to relax, shaving 4 seconds off a 10 minute reading time is irrelevant.

So I use shortcuts in my editor, but not my browser.


I think i installed some other tab page so it works in new tabs for me.

For address bar being focussed, a tab will take you to to the page content.

The one thing I find most annoying (which isn't vimium's fault) is the lack of j/k scrolling on pdfs.


I have vimium configured to just use f, F, and alt+j and k to move between tabs. That's all I really need and it doesn't tend to conflict with the web sites I use.


I can't let vimium go even as an emacs user ;)

As someone else replied, insert mode.


Tried using this recently. Even though I use vim daily I haven't made good use of Vimium yet. In fact I found it more annoying because it naturally breaks sites that I do know keybindings for like YouTube.

Overall I don't want to come across as critical of of something that just needs a little effort to use, more of just setting expectations.

Normally this would be less of an issue but for me, I ran into this problem while on my rowing machine, and I didn't want to stop to fiddle with keybindings.


You might already know, but if you click on the extension icon, you can specify which pages to disable it for. I disable it in pages that have useful keyboard navigations. But it's great for things like HN, where I can use J/K to navigate, then hit F and open a link I want.


The few times that happens to me I just hit “i” to enter insert mode and try again.


I actually like using "i" to toggle enabling/disabling the extension, more convenient and powerful imo


I've used this in the past, and I've found that it's not a 1:1 replacement but rather an add-on to my browsing habits. It's great when having lunch with greasy fingers, I can do most things with one pinky press!


It's very easy to add exceptions for individual sites, for example letting youtube have f for full-screen. You just click on the Vimium icon on toolbar and it pops up the dialog for that. You can do it in 5 seconds even while you are rowing.


The "f" mode in Vimium is just wonderful. I wish that I could have a system-wide keyboard just like that.

I seem to remember in Windows 7, there was some sort of voice assistant, that could similarly put a label on every visible clickable element. That was for voice command, but would be great for keyboard navigation, too.


I saw this for Windows here on HN once. I’m not sure this[0] is it, but the demo looks promising.

[0] https://github.com/pit-ray/win-vind


Warpd is useful on Linux.

https://github.com/rvaiya/warpd


kitty kittens does that in terminal https://sw.kovidgoyal.net/kitty/kittens/hints/

there is multiple easy-motions or variant implementation in the major editors


I’ve been using Vimium for about a year now and really like it. I use it almost exclusively for fast keyboard-based scrolling, because I hate having to continuously rub my finger against a cold aluminium surface or spin a little plastic wheel to obliteration (maybe I’m weird). I know, arrow keys are a thing, but somehow I feel more at home with Vim keybindings.

Vimium has a lot of other great functions, but I don’t use them often enough to remember them, maybe I should.

However, I have to exclude it for a lot of webapps and websites where keybindings are used to trigger different events, which is sometimes annoying if you don’t know or forget about it.


I used this everyday for the past 3 years. can't imagine browsing without it


Third this, use it every day.


second this, same here.


I love being able to easily navigate between tabs (a/J and s/K for me), go back/forward (h and l), open the current tab in a new window, close the current tab, etc. though (of course) the killer feature is "link highlighting" or whatever it's called. You can also enable "link highlighting" where selecting a link copies the URL. I also find that occasionally useful!

I can't use the web without vimium.


I also found it useful to have a link bind that just focuses the link element, often that can open up hover menus or trigger other focus/hover CSS changes.


oh, that's neat! I'll try that.


I used to use Vim-style key bindings in the browser in that past but haven’t for a while.

Back then the browser extensions for Vim key bindings kept breaking now and then, and that’s a big part of the reason why I stopped using these extensions. Probably the situation is a lot more stable today.

Another part of the reason that I stopped using these plugins I think is also because I do a lot of my browsing these days on my phone. And aside from that even when I am on the computer, I don’t really miss the feature in my browser. Maybe also because I use a laptop most of the time, and the trackpad of the Apple laptops are nice to use.

Anyway, I still use Vim key bindings where it matters the most to me and that is in my editor where I write code and other text.

One thing that I came to think of that maybe someone can answer. What happens if you try to run one of those Vim-in-the-browser sites, while at the same time you have Vim-style keyboard controls for the browser itself? For example this one: https://www.vimonlineeditor.com/


I've been using extensions like this since 2009[1], when I went on a deep dive on how to do everything from the keyboard -- eventually leading me to register tyrannyofthemouse.com.

Unfortunately, there's been a pretty clear shift in the web away from the interoperability that extensions like this need. I'm increasingly seeing elements that aren't detectable as clickable, or which do something different when you click via extension vs with the mouse.

Firefox has compounded the problem by making tabs not apply your extension's changes in a tab until a document has loaded there.

I used to be able to do most of what I needed from the keyboard and just occasionally supplement with the trackpad, but I finally relented a few years ago and got a mouse.

[1] Was using tridactyl but decided to come back and give vimium another try after seeing this.


I get a lot of value out of this. I especially like that I can open a link in a new tab, just from the keyboard


How does it handle the find key-binding / being used by some sites (such as github) for site-search?


You can hit `i` to enter insert mode, or add URLs/domains to a blacklist - works just fine most of the time


I couldn't live without this extension. I'm kind of surprised to see it in the frontpage, as I assumed many other folks here would use it daily (as in: it wouldn't be news).

I know the authors are in the comments so let me say: thank you!


I used to use a Vimium-FF (a Firefox version). I love the better browsing ergonomics.

But, after some thought, I realise that allowing such extension simply requires trusting a third party app access to so much of my personal information. They (understandably) need the ability to read every page I browse. Vimium-FF even requires clipboard access.

I do believe the authors have the best intentions. But the amount of trust I need to have in order for a third party app to have so much access to some of my most confidential information (online banking, emails etc.) is very very high.


For those using firefox there is tridactyl available as others have commented as well. They've gone a step further introducing native messaging [1][2] which opens up an endless ways of interacting with the underlying OS which makes implementing all sorts of useful day-to-day functionality such as personal automation a joyful breeze.

For example, saving the current page in a local file can be as easy as: tri.excmds.exclaim_quiet ('echo "' + document.location.href + '"' > $HOME/notes')

Sky is the limit given that you can interface with any page with JS and then pipe and process the output with any system utility or system context.

A simple example for demonstration would be copying the contents of the body tag, piping them to a readability[3] util and have the output saved to a local vault.

Or have a video played with mpv with a press of a button since you can invoke any of these functions be it custom or built-in targeting any element the same way you would follow a link by hinting.

Here are a few other, pretty interesting use cases as seen in examplar custom user configurations taken from their github wiki[4]

alias playAllVideos js tri.native.run("mpv --really-quiet --ontop --keepaspect-window --profile=protocol.http " + Array.from(document.querySelectorAll("a, iframe, video")).reduce((s, e) => {let r=(/^https?:\/\/((www.)?youtu((\.be\/)|(be\.com\/((embed\/)|(watch\?v=))))[^ ]+)|(.+\.webm)$/);let l="";if(e.tagName=="IFRAME")l=e.src.match(r);else if(e.tagName=="A")l=e.href.match(r)||e.innerText.match(r);else if(e.tagName=="VIDEO")l=[e.currentSrc?e.currentSrc:e.src];console.log(l);return s+(l && l.length > 0 && s.indexOf(l[0])<0?"'"+l[0]+"' ":"")},""))

alias gitclone jsb -p tri.native.run("git clone --depth=1 '" + JS_ARG + "' /home/me/prog/" + JS_ARG.split("/").slice(-1))

alias rsssave jsb -p tri.native.run('cat >> ~/.config/newsboat/urls', JS_ARG + "\n")

alias openGithubNotifications composite js Array.from(document.querySelectorAll("li.list-group-item > span:nth-child(1) > a:nth-child(2)")).map(e => e.href) | jsb -p JS_ARG.forEach(url => tri.excmds.tabopen(url))

Edit: I assume native messaging has security implications you should probably consider if the browser is running directly with your system without any means of isolation like sandboxing with bubblewrap or better running under a virtual environment.

[1] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web... [2] https://github.com/tridactyl/native_messenger [3] https://github.com/cixtor/readability [4] https://github.com/tridactyl/tridactyl/wiki/


If you're sending untrusted strings to the native messenger, it would be best to escape them with shellescape - https://github.com/tridactyl/tridactyl/blob/f2479c64761358c6...

Otherwise a malicious website targeting Tridactyl users who use the native messenger could gain shell access when you triggered your command on them.


Fantastic! Thank you for expanding on your use case.


I settled with Surfingkeys after I tried Vimium, Vimium C, Pentadactyl and Vimperator.

Here's my Surfingkeys configuration as an ex-Vimium user:

  api.map('F', 'gf');
  api.Hints.setCharacters("asdgqwertzxcvb");
It makes open in new tab behave like Vimium and f work like a toggle.

Hope this helps someone looking for a better option migrating from Vimium.

[0] https://github.com/brookhong/Surfingkeys


Could you expand on the advantages of Surfingkeys compared to the 4 other options that you mention?


SurfingKeys has way more features. It supports Firefox and Chromium-based browsers so I can keep a single config file for both (.config/surfingkeys/config). Vimium and Vimium C are good if you need basic Vim navigation capabilities. Pentadactyl and Vimperator (both discontinued) are Firefox-only.


I use the alternative for Firefox, Tridactyl, and it works like a charm. It helps me keep my hands in the keyboard for 90% of the time I'm browsing


I've been using it for years. While I use it often, I resort to using the mouse, esp. because many interfaces require a lot of clicks and hidden and hover-based UIs.

Maybe one day, I'll be to master this extension for all things, but it's hard for me naturally remember to use it.

PS: I'm a moderate level user of Vim and use it for adhoc things.


Trydactyl is mint for Firefox VIM experience


Every time this comes up I wonder why no one mentions qute and nyxt browsers which natively support those bindings and have much more minimal UI. I used to be a vimium user at first, then tridactyl but both fell short and felt hacky and for roughly a year now I’ve been using qutebrowser which is miles better.


I don’t think any of those browsers have the rich extensions I need. For this sole reason, they are out of the competition.


Just out of curiosity, what extensions do you need for your day-to-day use?


For me those would be required: tridactyl, ublock, foxyproxy. Optional ones: sidebery, stylus, cookieautodelete.


I've tried qutebrowser, but always get frustrated with the lack of plugins like adblock.


Qutebrowser has a builtin adblocker and while the ecosystem is much, much smaller than Chrome’s or even FF’s or Safari’s, I haven’t found it lacking to the point of being unusable. Just frustrating a little bit at first, but userscripts from the qutebrowser repo cover pretty much everything for me.


I've been using Vimium for years and while I don't use every feature that it has I feel completely lost on a machine that doesn't have it installed. Just the ability to scroll pages without having to take my hands off the keyboard is worth it for me.


See also qutebrowser for a more immersed experience, or tridactyl if you're Firefox.


I'm not seeing a ":" command bar in any demos, is there one?

I use Qutebrowser and it's fantastic, I even wrote some userscripts for it which are probably easier to build than web extensions.


IIRC Vimium was the one that was pure hotkeys, no commands. Waaay back when Vimperator died with Firefox Quantum, I tried a bunch of different addons that still worked and Vimium was probably the least powerful of them.

Currently I use Vim Vixen[0]. It's still nowhere near as feature-full as Vimperator was, but nothing can be nowadays. My only real complaint about it is how link hints don't let you complete with the link text like Vimperator could - it's the one thing that as far as I can tell, no replacement supports even though it's a whole lot better.

[0] https://addons.mozilla.org/en-US/firefox/addon/vim-vixen/


Tridactyl does let filter links like that with `:set hintfiltermode vimperator` and `:set hintchars 1234567890`.

Vim Vixen unfortunately has been unmaintained since May [1]. If anyone knows ueokande personally, could they let him know that I would be happy to help get some releases out? I sent an email yesterday but I am not optimistic as it seems like quite a few people have tried over the last few months.

[1]: https://github.com/ueokande/vim-vixen/pull/1437


Oh nice. I had to make a few other tweaks, like making j/k not scroll as far, but it looks like I'll just be using Tridactyl now.

Edit: btw the hintfiltermode Tridactyl calls "vimperator-reflow" is what Vimperator actually did


I used to use Vimium, but switched to Vim-Scroll which is much lighter and didn't conflict with other shortcuts as much. Really great for j/k scrolling.


I just love this. I can't imagine browsing without it. Lately though I have started using Vimac which works for everything!


I used vimium to get here and to type this messsage!


I love Vimium. Can't navigate a browser without feeling like I'm suffocating unless it is installed.

Same with vim-keys in any text input field.


For me the killer feature is regexp search. It's a shame standard CTRL+F is doing just exact matching.


Remember when Opera had link search? Such a shame those features are dead nowadays


Firefox has link search built-in, just press '


Love Vimium! It's easy to ignore sites where you want to use their native keybindings, which is nice.


this is perfect for my usecase in firefox and mainly text only browsing, vim is perfectly designed to use the limited keyboard options and even more limited cognitive load humans can handle [alt shift ;) you know what i am talking about]


Keyboard controls of Vim were one of the most atrocious things I had to endure as a sweng so it's sad to see a replication of this 70s tech derived from inflexible wooden keyboards making it to modern tech stack. Stockholm syndrome/addiction is strong...


Keeping your fingers on the home row for basic navigation sounds pretty nice. It's not Stockholm syndrome, it's muscle memory.


+1 Surfingkeys


Or you know, just use a browser like a normal person...




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: