Look ma, no mouse: Vimium
codefaster.substack.com
codefaster.substack.com
[Vimium + i3 + vim + vscode/vmplugin] Means that I rarely have to reach for the mouse, have a tonne of desktop real estate that's easy to navigate and is way more comfortable.
Just having search, simple navigation and the 'f-feature' in vimium is enough for like 99% of my use cases.
It's such a pleasant and seamless experience to code in the editor, hop on over to the terminal to do w/e, skip on over to the browser to look something up, and go back to code. The muscle memory just takes over. Not to mention all the other benefits like having to track down small icons, sometimes changing window state (e.g. unmaximize, moving things around), and how much more effort using a mouse is over 2-3 keystrokes.
There’s also a caret mode you can get into with `vc` that then let’s you move a caret around the page with the motion keys, and you can use it to highlight and yank text like you would in vim.
tridactyl: https://imgur.com/D1PDBgY
qutebrowser: https://imgur.com/m4vtbk0
Now it's not that a big deal, but the advantages appears clearly on more saturated pages, off the top of my head, stackoverflow's triage:
With qutebrowser[0], if I want to close the modal, `gs` and `hd` are almost on the same place (it's only with experience that I noticed that hints are top left so `hd` is the hint I'm looking for) compare this to tridactyl[1] the `hy` fits very nicely with the highlight which doesn't let any place for ambiguity. I noticed your other answer about the addons, it's very much appreciated, and if I can help with the beta or whatever, let me know, keep up with the great work.
I was a religious VimFX user and I can tell you that i mourn having lost that. It's like an era of powerful browsing ended. I use the mentioned Vimium addon, but it's not even close to what we had with VimFX.
Does the keyboard shortcuts in Vimium work when the page is loading? No. How nice is it to have keyboard shortcuts that work sometimes? Extremely frustrating.
How about using "o" to get to the address bar (CMD/CTRL+L)? It opens some overlay on the page where I can't access my bookmarks.
I could go on. VimFX is still somewhat maintained, but you have to run an unsecure browser to use it (like WaterFox).
A lot of actions like tab switching can be done in vimium but sometimes it's a chore.
Bookmarks CAN be accessed via "o" in Vimium :)You can also use "b" to browse just the bookmarks.
For those looking for that more complete Vim experience, qutebrowser (https://qutebrowser.org/) is a good option, IMO.
The second that qutebrowser (or any Webkit/Webengine vim-like browser) gets good adblock/cosmetic filtering support, I'll switch in a heartbeat.
Not even talking about interfaces where you'd expect to need to use mouse (javascript components and others), but there is always the page in which the shortcuts will fail, or some input which will be blocked because the plugin is fighting the webpage for focus. Its pretty much what the article says at the conclusion, it helps reducing, but I still view it as a hassle.
Browsers developed with vi-like modes built-in (vimprobable, vimb, qutebrowser) fared better for me, but then there's other issues like incompatibility or lack of plugins which keeps me from fully using them.
I've had this issue too with qutebrowser. I'm not very familiar with how these things work, but I wonder why plugins written for a given engine (say webkit) wouldn't work on all browsers using that engine. In the case of qutebrowser it uses chromium under the hood, so I would expect extensions that work on chromium to work on qutebrowser, just as most chromium limitations also apply to qutebrowser.
Some nice people have kept one alive for Safari as well https://github.com/televator-apps/vimari but there's only so much they can do. It's almost useless.
I tried Vimium-FF (https://addons.mozilla.org/en-GB/firefox/addon/vimium-ff) and many other Vim like add-ons in last 2-3 months (after I decided to give Firefox another try after Pocket; and the possibility of ditching MacOS in my personal usage), but no, these plugins are nearly nowhere as useable as they used to be. Page reloads, redirects, weird behaviours at anything I try to do.
Maybe I can spend hours (over days) and have a perfect config file and maybe, just maybe, it will work as intended but then again it might break with next version or next browser update/upgrade.
My most used features were "/" followed by "n" and "shift+n", "t" -> open and "w" -> close tab, "f", "o" -> getting focus in address bar. I think I will rather give up.
Somehow I don't like to tinker anymore in the personal computer usage scenarios and maybe it's people like me who have caused/convinced companies like Apple to close things down and try to make apps and machines simpler (at which they have failed specularly).
(I used an XUL-based web browser with Emacs keybindings many years ago and loved it. But I had to switch to Chrome, and XUL went away, so I kind of gave up.)
You can get this with standard Firefox, no extension needed. For instance, on the HN main page, hit ' (single-quote) then "vi" then [enter] and you'll follow the link to this article.
Here's my Surfingkeys configuration as an ex-Vimium user:
map('F', 'gf');
Hints.characters = "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.
Side note: going back on the git history of the project is a great way to see the code evolve. [1] Originally it started with 2 files, but now has blossomed into a project with 100's of files
[1] https://github.com/philc/vimium/commit/aff9db2640db9aa02858d...
This non-disruptive introduction into Vimium made me think about my old Firefox setup. Back in the XUL days, I was hoarding dozens of add-ons that altered the Firefox UI to the extent that others could not use my browser anymore. They would click on a link and wonder why it is not working while my browser would amass many new tabs at a customized, designated place. The browser worked as I intended, but the extent of my customizations made it unusable for regular Firefox users.
Therefore I think that these new, more limited extension APIs offer an overall better experience for end-users. Maintaining usability for "regular users" should be the upper bound for the amount of customization an extension API provides. If it goes beyond that, it seems to get out of control.
Note that these extensions have access to all your data on the sites you visit, and while you may trust their developers, a dependency might go rogue without anyone noticing.
1) Ignore the nice app-native keyboard shortcuts and just use vimium everywhere (Frustrating when single-key shortcuts in the app are multiple drop-down menu clicks with vimium)
2) Disable Vimium on shortcut-rich apps, but deal with the inconsistencies. (Eg clicking on the link in the body of an e-mail in gmail now needs a mouse again)
I really wish vimium had some kind of modifier for "send next key to website", so I could have my cake and eat it too.
I thought that was what "insert mode" was used for. Hit i to go into insert mode, ESC to get out.
Tridactyl has this, bound to ctrl-v by default. Implementation is here [1] if anyone wants to try to add it to Vimium.
[1]: https://github.com/tridactyl/tridactyl/blob/5e8f94ff06bd5f14...
map , passNextKey
I think it's mapped to `I` by default.Really makes me wish that it was easier for developers to choose native desktop development instead of webapp development. Web browsers are compromises all the way down.
The first time I accessed the web it was with telnet info.cern.ch which was line mode browser that worked like this plugin, a key per link.
Ever want to copy all the links in a column of a table to the clipboard? https://www.youtube.com/watch?v=PJXCnRBkHDY
Thanks for the tip!
Also, this is a power tool: https://support.mozilla.org/en-US/kb/address-bar-autocomplet.... I regularly use ^ and * to get right to what I'm looking for. % is gawd-sent when you've too many tabs open.
Ctrl+0 (on Linux, Alt+) goes to first tab; Ctrl+9 goes to the last tab.
“Keep your hands on the keyboard and boost your productivity! Shortcat is a keyboard tool for Mac OS X that lets you "click" buttons and control your apps with a few keystrokes. Think of it as Spotlight for the user interface.”
For Linux, the obvious pragmatic answer is to use a tiling window manager (i3, awm, etc) combined with terminal based programs (since they are keyboard driven by default).
Alternatively, you might have some amount of luck configuring lots of keyboard shortcuts in your window manager. You'd have to pick your programs very carefully though since most GUIs just aren't that compatible with being driven by a keyboard.
That was one reason for me to ditch Pentadactyl (and also vimperator), and use vimium instead. It allows you to keep using Firefox as normal, gradually sliding into the habit of using the keys.
In terms of features, I think Tridactyl is the most feature complete, but I found Vimium C to be more enjoyable to use. For example, Vimium C seems to produce better hints (e.g. fewer cases of hints for something you can't click on), when compared to Tridactyl. I also prefer Vimium C's "Vomnibar" over the Tridactyl interface, especially with a bit of tweaking to the theme.
If you want Vimium-style behaviour where these elements are not hinted you can just do `:bind f hint -J`.
We also have a Vimium-style theme which you can access with `:colours shydactyl`. The theme could do with some polishing if anyone's interested.
DOM elements which trigger JS event on click which are not identified by shortcut tools has always annoyed me, us much that I even tried to fix it myself so I’m very interested if tridactyl has
This runs at page load - https://github.com/tridactyl/tridactyl/blob/5e8f94ff06bd5f14.... If you keep pulling that thread you'll find we use it to populate an array of elements with interesting event listeners on them. We can then put hints on those elements. We simply fire fake mouse events on those elements if they are chosen.
The code could definitely be improved - a major annoyance to me is that the JavaScript hints ignore CSS selectors.
https://chrome.google.com/webstore/detail/ctrl-access/glmoeh...
The idea was copied from Konqueror.
I loved using Konqueror back when I used Kubuntu. It has a lot of great features that I wish were more commonly available.
One practical limitation is that it requires two hands to browse, so not great when eating, writing in a notebook, holding a drink, etc. Also if you float your hands above the keyboard instead of using a wrist rest, it's not very practical for extended casual browsing. In that scenario I find having a nice ergonomic mouse hard to beat.
For instance on this page if you type "look ma" it searches the text, and selects the first occurence, which is the link. You can then press enter and it will open the link. Or ctrl+enter to open in a new tab.
I use it everyday, it's easy and convenient, you don't need to think much ; you simply start typing the some letters of the link you want to open.
Of course it's probably too hard to make it compatible with all the different types of text boxes, so I'm envisioning a shortcut that you can press, which brings up a small editing window, where you can use vim commands, and then you can copy and paste into whatever text field you want.
I think it uses an invisible neovim in the background when it can.
Usable in Chrome and Firefox. Configuration can be exported to JSON and reused on other machines.
Maybe trying something like this would alleviate this issue for me.
At least with Acme on Plan 9 I’ve found mousing to be fast, efficient, and comfortable.
I do tend to use Tab to move between text entry fields...
Once change I'd make: Make pressing f again hide the links. So don't use f or f* as a link anywhere.
Qutebrowser is far superior.
Mozilla STILL refuse to produce a "libfirefox" like Chromium does with the CEF (Chromium Embedded Framework). This is incredibly selfish of Mozilla, they insist on being the only ones who can produce a browser using their browser engine, forcing Tor Browser to devote massive resources to maintaining a long-lived fork instead of just building on libfirefox.
Together this says that you code faster by (or when?) avoiding the mouse.