What's up /r/vim? Last time I posted this, I got a lot of feedback. I've been working like crazy to add all of the features you guys have suggested, and will continue to do so. Want a feature? Just post an issue to cVim's GitHub page, and I'll be happy to look into it.
If you're the kind of nerd who cares about such things, level up and use cvim. It its very configurable, and takes efficient, mouseless vim-style interactions to the browser.
not sure if i can remember. i know i used vimium and vrome first and was not quite satisfied, then with cvim i was. maybe bc it's easier to customize (and there are more options to customize), you have a cvimrc and can configure it pretty much just like you would with your vimrc. i think in vimium you can only customize keymappings. also they list some advantages on their site: https://github.com/1995eaton/chromium-vim but i don't think any of them were a reason i use it over vimium or vrome. maybe i was just annoyed by the smooth scrolling, which i didn't figure out how to disable in vimium.
Could be, but at least chromium-vim and vimium were patched:
https://github.com/1995eaton/chromium-vim/issues/572
https://github.com/philc/vimium/pull/2605
I haven't checked whether the vulnerability hasn't been re-introduced though. :p
I'd guess that vimperator wouldn't have ever been vulnerable, as it was an XUL addon and hence could "intercept" key events at a lower level. (i.e. it wasn't vulnerable for the same reason that Firefox isn't vulnerable to a webpage sending it a fake <C-l>
etc.)
In addition to vimium, qutebrowser and using emacs gtk-key-theme-name
, some further possibilities, from most to least feasible:
cvim which is a vim-like extension for chrom(e|ium). I think that it's more extensible than vimium. It hasn't been ported to firefox yet, but this should be possible.
Hoping that firefox implements all the necessary APIs for something like keysnail/vimperator to work.
Using exwm simulation keys (they can be application specific). (For example, "convert" C-x h
to C-a
, C-a
to <home>
etc.)
lispkit which is a webkit-based browser written in common lisp. This would be very cool if fully functional, but it's a gigantic undertaking.
closure :p
Fortunately, vim users are in exactly the same position as us, and they have very similar needs.
Developer of cVim here. It can work on chrome://*
pages, but it requires a bit of modification to get it to work. You'll have to download cVim from my GitHub repo and add the string "chrome://*/*
" to the matches array under content_scripts. You'll also have to enable a flag in chrome://flags
-> just paste this in the omnibox and you'll jump to the setting that should be enabled:
chrome://flags/#extensions-on-chrome-urls
Also, keep in mind that Google makes this feature hard to enable for a good reason: it poses a security risk. I personally decided not to use it.
As others have already mentioned, I use vi-bindings for readline and zsh (much more satisfying than when I was using bash TBH).
For the Chrome browser I use Vimium but keep an eye on cVim (https://github.com/1995eaton/chromium-vim/blob/master/README.md) which is closer to pentadactyl (with Chrome restrictions limiting the similarity).
I also use Vim-Anywhere (https://github.com/cknadler/vim-anywhere) to edit text in Chrome or even LibreOffice in Vim.
It's very similar, there are some keybinding differences but it's configurable.
https://github.com/1995eaton/chromium-vim
Overall I much prefer the qutebrowser default keybinds. For example switching tabs by default in cVim is gt and gT vs just h and l.
Check out the readme on their github, but it is basically manage downloads, read and change your bookmarks/history, read copy and paste/data on all websites you visit.
Right now, you'd have to type in :tabopen wikipedia
to get Wikipedia results. You can add a shortcut for this by adding this line in your cVimrc in the settings page:
let searchalias w = "wikipedia"
This way, all you have to do is type :tabopen w
to use the wikipedia completion engine. Having multiple search engines completed is a good idea, though. I could add in an option to define a completion engine that uses multiple sources. Something like this:
let completionsource all = ["wikipedia", "google", "duckduckgo"]
That way, results could pop up from several sources by typing :tabopen all
. This might require quite a bit of extra code, but it seems like a great idea! You might want to post an issue here so I don't forget this.
Nope, but I just added it. This will be available in the Chrome store sometime later today, as soon as I update it.
To change the default search engine, you would add this to your cVimrc:
let defaultengine = "duckduckgo"
A extension that adds Vim-like keyboard shortcuts to Google Chrome. https://github.com/1995eaton/chromium-vim
That and a JavaScript implementation of Conway's Game of Life. http://1995eaton.github.io/game-of-life/
https://github.com/1995eaton/chromium-vim#why-is-this-different-than-vimium-vichrome-or-vrome
This, and an absurd amount of mappings, compared to vimium, that you can customize in a dotfile if you wish.
A lot of the other editing I'm doing is either web or IDE based. For the second case, I usually try to at least find a vim like plugin and for the first one I use cVim's Python server. Note that cVim is not maintained anymore but you can clone a working fork, eg https://github.com/1995eaton/chromium-vim/pull/724
Works like a charm, of course AFTER I had deactivated my Chromium-vim, the one tool I'll never be able to live without anymore. RIP vimperator. These were good times, my friend. Have to test it on Vimb or Qutebrowser though.
While it's easier than classic vim there's still lots to learn. Here are the basics to get you started:
f - lets you click on the screen
j and k - scroll up and down
i - makes you use the website with shortcuts temporarily disabled (useful for when you want to use the site's shortcuts )
ESC - backs you out of whatever mode you have selected
Sadly cVim hasn't had any updates for 9 months or so.
Mouseless seems to be the most maintained fork, but there isn't a Chrome web store version.
To be honest I haven't used Vimperator/Pentadactyl to compare it to them but cVim has a lot of features and configurability. You can read about it here: https://github.com/1995eaton/chromium-vim
The only caveat is that Chrome doesn't allow extensions to access "chrome://"-sites like the new tab page or settings, so you wouldn't be able to use cVim there. However if you make use of its features, you shouldn't need Chrome's new tab page anymore.
I just added the feature. If you want to test it out before I release the update to the Chrome Store, you can download it from the GitHub page.
To enable link filtering, add this to the cVimrc:
set numerichints set typelinkhints
I created this extension to save the time of taking your hands off of the keyboard to navigate the mouse. A list of keybindings can be found here. Any feedback or questions are welcome!