In the graphical browser category, I have tried Qutebrowser and it is neat. However, Firefox remains as my primary web browser. I use the Vimium plugin with Firefox. It provides Vim-like key bindings for many commonly used browsing tasks.
My most favourite commands in Vimum are 'f' and 'F'. The 'f' or 'F' command creates key combinations for all the links found in the page. It highlights the key combinations in little yellow boxes above every link. We can then type the lowercase key combination for a link to open that link. While 'f' opens the link in the current tab, 'F' opens it in a new tab. Alternatively, we can type uppercase key combinations to reverse the behaviour of 'f' and 'F', i.e., 'f' with upper case key combination opens the link in a new tab and 'F' with upper case key combination opens it in the current tab.
My other favourite commands, in no particular order, are: 'J' (go one tab left), 'K' (go one tab right), 'H' (go back in history), 'L' (go forward in history), 't' (create new tab), 'T' (search through open tabs), 'x' (close tab), and 'r' (reload page).
Also, there are the 'h', 'j', 'k', and 'l' commands to scroll left, down, up, and right, respectively.
To add onto your excellent comment: Another lifesaver for me is the 'gi' command, which focuses your cursor on the first text input. Saves a lot of mouse movements.
For me personally the browser was the last application in which I had to use the mouse, vimium solved that. Sounds like a mundane application but after a serious hand injury it made the difference to me for working 4 hours with mouse and being in pain, or working 8 hours pain free.
Same here - I used qutebrowser exclusively for a couple months, but in the end I couldn't handle all the annoying popups and autoplaying videos in modern websites - all things that you can block with a single plugin in Firefox, together with ads. Too bad, because Vim plugins never allow full UI control in Firefox(e.g. closing an empty "new tab" is impossible with Vim plugins).
Recently I switched from Vimium to Surfingkeys, which is comparable but also offers an actual Vim emulator for text field input. Can definitely recommend it.
Note that while I currently use Firefox, I haven’t yet added instructions on how to install my config there, which is different to Chrome due to lack of file system access permissions. Long story short, use the `gulp serve` task to start a server on `localhost:9919`, then point the SurfingKeys configurator there.
Try Vivaldi (chromium based browser with a LOT of settings). I had the same problem until I downloaded it, you can natively bind a key to close current tab, it will work on new tabs (and files)
I suppose looking at javascript sources and whitelisting by domain isn't impossible with the UI tools available in Qute but I don't think anything like that currently exists (I've looked around a little).
Still a real ad-blocker would be great, youtube is barely usable these days with three layers of unskippable ads on each video. (although you can work around that /specific/ problem with umpv and a hotkey to launch it: section10 https://qutebrowser.org/FAQ.html )
I tried Surfing Keys way back when I had to give up Vimperator, found it insanely laggy (like, 5 seconds just to open the command prompt; no idea if it's been fixed). I've used Vim Vixen since then [0], which has almost the same defaults as Vimperator did, for the things it supports.
> It's the reason I don't use safari despite its better performance on a MacBook.
I've been working on a Safari Vim-inspired Extension for macOS 10.15+ for many months now. It'll be paid, something like $5 or less. I would have liked to open source it, but I don't have a way to get enough eyes on a KickStarter or something to gather donations.
It is close to ready, I'm hoping to release it this month. I'll do a Show HN when I do. Here are some screenshots if you'd like to take a look. I'd love some feedback!
I'm not telling you how to monetise your project, but here's a thought I've had in the past regarding a hybrid of these schemes: simply make a written commitment to open source the project after X amount of purchases.
I was thinking about this too. I just want to recoup some of my time investment. My only concern is that it'll make some people not buy in hopes that they can wait for others to pay - but I suppose those people would probably just use Chrome/Firefox with free plugins anyway.
Thanks, I'll think more about this. I think it'd also give people confidence in the security of the code - running browser extensions is a little scary since they technically have access to everything. As a customer, knowing that it'd be open sourced would give me some peace of mind that it's not doing anything malicious.
A different consideration is people's motivation to pay, and longevity is one aspect of that - buyer's confidence.
I paid money for an extension that promptly became unsupported and then died in an upgrade. Which is fine, whatever, but it did put a big question mark over the category of "paid browser extension" for me.
Knowing the source will be out there would fix that part for me - I may not be able to take over dev, but I could at least try to fix things that break until I find a replacement.
Thanks for explaining that. I forget the exact history, but I know they've changed up the extension types/APIs multiple times in the past few years. I think a lot of developers/companies gave up on them after being forced to rewrite.
To confirm, is the model you and the parent would like:
"After x units are sold, or after 12 months (whichever comes first), the project will be open sourced and changed to free in the App Store. It will then be supported with an optional in-app-purchase donation - with no nagging or feature differences."
Good luck with the rebuild! I figured someone must be working on it but there weren't any GitHub issues last time I looked. Has it been hard to convert it to use the new App Extension API? There are quite a few things where I have to ask Swift to do things for me - since JS apis don't exist (creating new safari windows, etc.).
I didn't mention above but I started from scratch rather than using sVim/Vimium as a base (which would be okay since they are MIT licensed). I think there are some pros/cons to this. The main pro is that since I only have to worry about Safari 13+ I can use the latest features on the JS side. I am curious how my approach to various things compares to sVim/Vimium. I haven't looked at the source for them yet - but plan to once I'm done to check out the design differences.
> Yours looks great assuming it has all features of sVim and smooth scrolling with jk
It should be close - I still need to write the smooth scrolling polyfill - that's one of the trickier things left. I found some libraries but want to try doing it myself. I'm going to try and match the Safari pageUp/pageDn behavior as close as possible.
> Also the link hinting, can you please make it same as sVim with yellow background so it's easier to read.
Thanks for bringing that up. I intended to allow increasing the font size. I was hoping people liked my color choices, but you're right, it should be configurable. I'll add it to my todo list.
I love Vimium too! (using on chrome) Took me a while to learn all the shortcuts (thanks Anki!), but that was worth it. Wish it was more integrated to the browser though (having to wait for a page to finish loading before I can use a shortcut is sometimes annoying).
You're not mentioning my favorite Vimium command! m<key> to save a mark, and `<key> to load it. lowercase chars marks are in-page marks, and uppercase chars are global marks (like bookmarks).
I see why people love the plugin. One thing that stops me from using Vimium is it doesn't support opening links in a new window. I don't like tabs and use my window manager to, well, manage my windows. Not being able to open links with "f" or "F" in a new window is a deal breaker, unfortunately.
That's right. I have been using Debian GNU/Linux as my main laptop OS for about 13 years now. I used to have GNOME 2 desktop environment earlier but once GNOME 3 became the default, I switched to Xfce Desktop Environment. The fact that the Debian project still offers a CD image[1] with Xfce bundled as the default desktop environment is really nice.
Having said that, I have to confess that these days I also use macOS a lot. This has happened mainly due to my job. My employer provides MacBook Pro for work and I prefer not having to switch between operating systems too often, so my usage of Debian GNU/Linux as my main laptop OS has been on the decline. Despite that, I always keep a Debian virtual machine as well as a remote Debian system handy, so that I can log into it via SSH whenever I need it.
The reason I ask is that Firefox is honestly poorly supported on Linux and you lose hardware video decoding, so watching videos in the browser causes horrendous performance. However, it is supported by Chromium and patched in many distros to work properly. I'm using Sway WM btw and run Arch so I get the latest stable releases of pretty much everything.
I've been using Debian and KDE | xfce | i3 (depending on machine and task) as my main desktop and laptop operating system for 2+ years. Once I learned how to install wifi firmware I haven't had any hardware issues. And it runs much faster than Win 10 did on my little celeron laptop.
I'll add my recommendation for qutebrowser. i3, rxvt, and vim are where I spend most of my time.
The one of these that I've come to adore the most is the ranger file manager. I almost never use any GUI file managers (or command line tools, for that matter) for file management after starting to use ranger seriously. It's so fast and works exactly the way I want it to. I've also hooked my terminal up such that I'm cd'ed into whatever folder I last navigated to in ranger (I use the alias `rd` for this), so I virtually never type `cd` in the terminal anymore. Super slick!
Protip: If you use bash or zsh, you can source the ranger executable for this behavior (so the full command would be ". ranger"). If you're on fish, there is a patch pending for review, that soon will be available on master.
In my experience vifm is noticably snappier than ranger.
But I also use it instead of cd when I want to switch to a "distant" directory - much more comfortable than bothering with the tab completion, and the Vim-like search functionality allows to quickly jump to a specific file in the current (possibly very cluttered) directory.
I use ranger as well, when pared with tmux it makes a very powerful tool. with a nVim socket running. When I press enter on a file, it opens in a new tab in nVim and tmux changes focus to the vim window. If I want to lint or run a file, the appropriate key bind runs the command in the 'debug' or 'lint' pane in tmux with the file as an argument.
That was the key that finally made my tmux/vim editor situation into a full blown IDE.
"Vim modes" only offer like 40%-60% coverage of features in IDEs. I haven't found one yet that lets you set marks with :k[letter]. Jetbrains (and maybe viper) are the only ones I've found that support block modes.
"Vim mode" means a lot more than just using 'hjklioaD^['. It would be fairer to call them "nvi modes".
"Vim mode" also means that keyboard interface is an afterthought in the editor. Whereas if you use a plugin for vim, it's guaranteed to have good keyboard integration and efficient keybindings.
It's great to see this list, but it's a bit sad that all those app have to emulate Vim behavior. Do they all handle .vimrc? I think it's ridiculous that some app insists on me using their keybinding instead of mine. I'd love to have an OS level way of exposing commands and settings key bindings across apps.
some apps actually use neovim or vim in client server mode and dont just emulate vim behavior, but flat out run vim.
But even those cases I've had mixed results on "obeys vimrc keybindings" and "captures all keypresses and uses vim purely as a modal"
firenvim for example, puts nvim into textarea boxes in firefox, and it loads up all my vimrc theme and status bar and stuff (but only dumps the text into the textarea on :w). whereas VSCode vim plugin merely uses vim under the hood for the actual text editing, but doesnt pass every keybind back (nor does it do color formatting). Which puts it into uncanny valley for me, and unless someone is VSCode live sharing at me, I don't use it.
Because Vim is not an editor. It's an idea. Probably one of the best ideas that ever happened in the computer science. Another great idea (often mistakenly called a programming language) is idea of Lisp. When you combine these ideas together you can get something insanely powerful. If you never tried Spacemacs or DoomEmacs, I encourage you to check them out.
When I see things like this, it reminds me that what makes vim special is not the software but it’s keybindings. That is why there are so many clones like spacemacs or VScodeVim. You can take the vim keys and you basically have the whole package but using your own software.
I never thought of it that way, but that's a very good point indeed.
As an emacs user, I think what makes emacs special is not the keybindings, but the software itself, or, better phrased, the architecture and approach to extensibility that the software uses. Opinions on that?
Emacs user as well. I think the emacs keybindings are trash, even when capslock is set to CTRL. Spacemacs (or evil mode) is a dream. Vim keybindings saved my life, and now I do more and more in Emacs (email, IRC, even trying to get slack work in it).
That too. Contrary to popular opinion, it doesn't take that long to get Vim setup with plug-ins for everything I need (LaTeX, code folding / highlighting / auto-complete, especially for Python, color...). I just sync my .vimrc across machines, and am done.
I like emacs because it has so many neat applications built into it and in many ways works so much better than vim. Magit is really impressive, projectile is great, and helm is something I wish I could use in vim. I like that each major mode bundles in a lot of unique functionality that is specific to that mode. I like that the GUI emacs allows for inline images, pdf viewing, and variable pitched fonts so if I'm editing an org or markdown file, different kinds of text can be properly represented with weight, style, and size. This makes it so much more enjoyable for writing prose than vim.
Still, when it comes down to doing specific coding work, my experience in vim is generally better. LSP plugins like Coc.nvim are much simpler than emacs and work better than lsp-mode, in my experience. Emacs 26 still has poor base support for JSX (improved in 27) and there are several popular modes for dealing with the web and javascript development, which all have their own annoyances. In vim I've not had these issues.
Setting up environments for developing in vim for various languages have generally been easier and work mostly without having to do anything other than perhaps installing a plugin for syntax highlighting. In Emacs I find myself wrestling with several different modes, several of which don't cooperate with each other. I have to add hooks for every language for every mode I want to integrate into it. Also, sometimes they heavily conflict with evil-mode, which is also remarkably annoying.
I hope that at some point Emacs with evil-mode will truly become the best of both worlds, but right now vim still feels faster, easier to use, and more consistent (obviously) with vim editing paradigms.
Hey fellow Vimmers. If you (just like me) have to use Mac to do your work, you may find this little project of mine interesting https://github.com/agzam/spacehammer. It's a Hammerspoon config inspired by Spacemacs, written in Fennel.
Readme doesn't really describe every cool feature, I need to record a screencast, but I've been swamped with work lately.
Why is "IDEs, Word Processors, Editors with Vi-modes" missing IntelliJ/JetBrains, VSCode, Atom, and Sublime? All of those have vim modes (of varying quality, I'm sure).
I was also wondering this. I use Ideavim for IntelliJ as my primary editor. It is awesome, it will read your vimrc and allows you to set up mappings for any editor action.
I used IntelliJ for about 7 years. I loved it. When I learned Vim I used it with IdeaVim. There were minor things that bugged me, but I learned to live with that. But one day I decided to try Emacs with Evil mode. It took me long time to get my config right, but at some point I realized there are way too many small things in IntelliJ that annoyed me and beyond submitting feature requests on YouTrack there was little I could do. When I discovered Spacemacs I switch to that. I realized that Emacs can vim better than IdeaVim, in fact it probably vims better than Vim itself.
https://github.com/donaq/topovica <-- Code is ugly, there's no consistent style and there are no tests. Some bugs also exist, but I was just trying to get from zero to "meh, good enough for me" as fast as I could. Feel free to use it however you see fit.
I can recommend Wasavi, which is a browser extension that allows you to use Vim commands in most text windows you can edit.
https://github.com/akahuku/wasavi
I use it on a daily basis and although it's not Vim it's still pretty good.
Tridactyl [0] lets you open text fields in your preferred $EDITOR with a keybind,
open YouTube/Vimeo/etc links in MPV, etc. on top of adding Vim navigation to
Firefox.
This comment was written in a floating Neovim window opened by Tridactyl.
Something that has made me really appreciate Vim commands is "less"... yeah i'm talking about the seemingly simple pager that's already installed on your system - I could never get into vim for coding, but I always felt like it shined in places like less where you are consuming text rather than creating it.
I can also mention some ZZT editors: KevEdit has (disabled by default) support for using hjkl to move, but it otherwise doesn't have much vi-like stuff. ZZTQED is more vi-like; it also can use hjkl for cursor movement, and also supports numeric prefixes, and some other stuff (although regular expressions are not implemented).
Interesting, that was more the experience I had the first time I tried using Emacs as a vi user. The documentation I could find (limited, this was back in the <gasp> '80s, couldn't google it), said "You are never intended to leave Emacs, you should be able to do everything inside it." I was done with my lunch break and needed to get back to work, so I went to another X window and killed Emacs.
Oddly I have an installation of Emacs on my current ArchLinux box that doesn't shut down with `C-xC-c`.... I've had to resort to `C-z, ps ax | grep emacs` to kill the process. I haven't cared enough to fix it.
I'd like to tangent a bit and introduce you to pgrep and pkill (available in arch via `procps-ng` pkg). They are very nice for reducing the amount of grep/sed/awk magic on the output of ps.
Vim is more of a concept in human computer interaction. Most of the software in the linked page share zero LOC with vim. But they share keybindings, modalness and a general way of interacting.
Vim is a powerful idea that has many implementations.
Emacs is an environment to run emacs-lisp, a language based on another powerful idea - Lisp.
People unfamiliar with Vim philosophy often scoff: "Why do you need to control everything with h/j/k/l. Why all this modality crap?" And the answer is: Because it gives you incredible control over the text. You'd feel empowered. And text to us humans is everything, especially us: software developers, writers, etc. We live text, and we breathe text, we stare at it all day long, we type it, we manipulate it. And if there's a proven method to make it even just a bit slightly better, how stubborn and stupid one has to be not to give it a try?
People unfamiliar with Emacs often scoff: "Why do you need to run everything in Emacs?". And the answer is simple: Because it gives you incredible control over things beyond the text. Everything is connected. I can schedule my work, and I can track my time spent on it, I can take notes without leaving the context of my work. I can jump into the file manager and edit filenames like it's just text, and then submit my changes - it will do it for all the files. I can select multiple files and see the git-log of modifications to those files. I can submit my changes and update the status of the ticket in the bug-tracking system without leaving the context I'm in. When someone sends me an email, I can link that email to the item in my Org-agenda. And everything is so flexible, and even when you need to switch between projects and have to re-configure things you don't have to restart things, you don't have to change the context, you stay "in the zone." You'd feel empowered.
People often debate what's better Vim or Emacs, often without even having the slightest understanding of what each of them has to offer.
My most favourite commands in Vimum are 'f' and 'F'. The 'f' or 'F' command creates key combinations for all the links found in the page. It highlights the key combinations in little yellow boxes above every link. We can then type the lowercase key combination for a link to open that link. While 'f' opens the link in the current tab, 'F' opens it in a new tab. Alternatively, we can type uppercase key combinations to reverse the behaviour of 'f' and 'F', i.e., 'f' with upper case key combination opens the link in a new tab and 'F' with upper case key combination opens it in the current tab.
My other favourite commands, in no particular order, are: 'J' (go one tab left), 'K' (go one tab right), 'H' (go back in history), 'L' (go forward in history), 't' (create new tab), 'T' (search through open tabs), 'x' (close tab), and 'r' (reload page).
Also, there are the 'h', 'j', 'k', and 'l' commands to scroll left, down, up, and right, respectively.
Vimium for Firefox: https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/
Vimium for Chrome: https://chrome.google.com/webstore/detail/vimium/dbepggeogba...