Hacker News
points by wilkystyle 15 hours ago | 0 comments
(not the person you are replying to)

I am primarily an Emacs user, using the standard key bindings (and a whole bunch of custom bindings and functions I've built on top of it over the decades, ctrl remaped to caps lock and no Emacs pinky so far).

But I am also 80% a NeoVim and Vim user for about 15 years now, and I consider myself quite proficient with Vim keybindings. The Emacs emulation is truly incredible, but the fact that Vim implementation quality varies wildly from environment to environment is extremely frustrating to me. For example, the jupyterlab-vim plugin is so jarringly broken in a handful of ways that it completely knocks me out of the flow of whatever I was doing when I encounter those emulation failures. IntelliJ's idea Vim plugin is a pretty decent one, but even there I have encountered the occasional issue [1][2][3]. Otherwise, I strongly agree with your point about learning one way to work with text and being able to leverage it most places.

Sort of a tangent, but I think this is why Emacs users tend to end up trying to do as much in Emacs as possible: It's not really the keybindings but the fact that everything in Emacs is a text buffer. Emacs owns the input and the output, and because everything in Emacs operates on text, you can do most everything in most every mode, to most any buffer content. One example of how powerful this can be is the ability to press a key and use dabbrev-expand to autocomplete shell input I'm typing based off the shell output of a prior command.

1: https://youtrack.jetbrains.com/issue/VIM-569

2: https://youtrack.jetbrains.com/issue/VIM-636

3: https://github.com/JetBrains/ideavim/pull/33

[–] iLemming 12 hours ago
> Vim implementation quality varies wildly from environment to environment is extremely frustrating to me.

I know exactly what you're talking about. I am a die-hard vimmer and used vim plugins in every editor/IDE/browser/shell/multiplexer/WM/etc. I use vim bindings system-wide. I control my music, switch between apps, swap and resize windows - all without lifting a finger from the home-row.

I spent almost a decade living in IntelliJ. I had many direct conversations with Andy Vlasovskikh (he's the maintainer of IdeaVim then). Gary Bernhard (Destroy All Software, wat guy) once said: "there's no vim-mode, there's only Vim" in the sense that no single editor or IDE, not a single vim emulation layer properly works, they all have glaring deficiencies - to the point that it can drive any experienced vimmer truly mad.

With one notable exception. Evil-mode in Emacs is just wonderful. It's the best vim-emulation layer, to a certain degree it works even better than in Vim/Nvim. Weirdest thing - it makes you forget it's not a built-in feature of Emacs. I'm honestly very happy with it, because I don't know, otherwise, I might have never convinced myself to ever give Emacs a try.

These two ideas - vim modality and the grand idea of Lisp - are possibly the two best things that I am forever grateful to my younger self for forcing me to learn. I can't even comprehend being a professional software developer and not grokking them.

[–] wilkystyle 7 hours ago
I definitely agree with this. Literally the only time I use lisp is when working on my Emacs configuration, but after almost 20 years of using it to write all sorts of functionality from big to small things, just having the exposure to lisp has really helped expand my thinking about programming in ways that working with e.g. C, Python, Rust may not have.

One last thing on the Vim emulation front: While I'm not a big fan of VSCode, the VSCode-Neovim extension[0] connects to an actual Neovim instance via Neovim's MessagePack-RPC API, allowing you to use real Neovim but native in VS Code. Pretty cool!

0: https://github.com/vscode-neovim/vscode-neovim