Skip Navigation

Worth learning vim/emacs?

Im considering spending some serious time learning one of the above. Two principle engineers I work with exclusively use them, and watching them work is incredible, the speed they move and get things done is pure wizadry. Can anyone learn this skill? For what it's worth, the alternative is learning VScode. I’ve exclusive used Android Studio in my career.

23 comments
  • I may be the odd one out here, but I don't think that the editor you use is really going to make all that much of a difference for your efficiency. Text manipulation is rarely your bottleneck when coding, so I'd just go with an IDE / editor you feel comfortable with.

    I used to be a hardcore vim user but nowadays I just use VSCode with a heavily customized keymap.

  • I think anyone who does programming should at least give Neovim a good shot. Like, dedicate a few months to get a feel for the basic controls, use relative line numbers to jump to lines, f and F to jump to spots in lines, ciw ci" etc. to change stuff. If it's not your thing then fine, but learning Neovim is like switching from clicking file -> save to ctrl+s, but with everything.

    You really don't need a mouse at all and in the end you'll get to make changes as fast as you can think. It's a language you speak through your keyboard to your editor and things just happen once you get fluent. E: checking if editing helps this thread federate better.

    • This thread stopped federating for some reason so I'll reply to myself:

      How different is neo vim from regular vim?

      Functionally it's pretty much identical. For the user the difference is in the added features and development model. Neovim's development model is not centralized to one person and makes real progress. Vim on the other hand is much more a pet project of its creator and seems to get new features only if it starts losing users over to Neovim. Using Vim you're always going to be behind the curve and under the whims of Bram's decisions. Neovim integrated Lua as a first-class language for configuration and it was then that Bram had to do something about vimscript, but opted instead to create a new, backwards incompatible version of vimscript, another bespoke language. I very much advocate making Neovim the norm instead.

    • How different is neo vim from regular vim?

      • Neovim is a rewrite of the vim project. From a high level (or from the perspective of a beginner to both), there's not much difference between the two. That is, basic usage will be the same regardless of which ones you choose. Like, the model philosophy and default key bindings are basically identical.

        You start seeing major differences with more advanced usage and under the hood.

        • Neovim is built to support async processing, while Vim is entirely synchronous
        • Neovim offers native Language Server support while Vim requires plugins to do so. (Language Server Protocol is part of what makes VSCode so powerful)
        • Vim plugins are written with a custom script called "vimscript" while Neovim plugins are written in Lua but also supports vimscript.

        There are more differences, but this should cover the basic differences. I haven't used neovim in an age, so I'm up for any corrections if anyone has any

  • vim keybindings are an amazing and useful skillset to have.

    And neovim is the best editor in existence.

    Let the religious wars commence!

  • Just to help you differentiate: vim is a text editor with a huge ecosystem of plugins and its own "language" where you can make the vim program into a sophisticated IDE. Vim also has very clever key bindings to help you interact with text more efficiently. My advice is that keyboard navigation using vim key bindings are worth learning, not necessarily sinking time to creating an IDE in vim for yourself with plugins.

    vim key bindings make it incredibly easy and efficient to manipulate text, after putting effort into learning it. Most text editors, IDEs, Note taking apps (Joplin, Obsidian, etc.) have VIM mode where you can interact with text same way as in vim. Hell, I wish Word had vim key bindings!

    To make VIM useful as an IDE you have to spend time to find plugins you need/want, customizing, tweaking, troubleshooting, etc etc.

    personally, in my professional software eng career, I don't have time to troubleshoot VIM plugins or customize my setup and I need an env that is frictionless and basically pay others to maintain it and make improvements. I use IntelliJ IDEs and VS code with vim binding enabled.

    I do hobby around with it in my free time, making tweaks here and there but it is a huge time sink. Also, my squishy brain cannot always take the overhead of keyboard navigating an IDE. On days I am mentally drained of chasing evasive bugs, having a GUI that where i can click through menus without having to invoke a command really helps with mental fatigue.

    I would suggest enabling vim keyboard navigation and getting the hang of that first while still using android studio so you don't lose all your IDE features. Looks like your editor has a vim plugin. Then, if you like navigating with a keyboard, you can slowly build your own IDE using plugins and switch over.

  • I think it's worth it mostly because it's really not hard to get to a point where you're equally as efficient as you were before, and from there the sky's the limit.

    It's also really nice not to have to open a full gui to make quick edits to files.

    For me though, it's not even the efficiency which brought me to it, it's that it just feels so much nicer to use. Someone once told me it's like using a really nice pen: it's not going to make you a better writer but it will make writing a hell of a lot more enjoyable.

23 comments