I’m relatively new to programming, I’ve been learning C on linux using nano and it’s been very fun. I’ve recently fallen into the emacs/vim rabbithole and I’ve been watching videos about emacs, Doom, spacemacs, neovim and reading comments about people switching from this or that to another config or editor, and I’ve been a bit lost on what to do. Then I realised that I haven’t done any coding and spent all of my time focusing on editors. So here is my question (which has probably been asked many times) : what is the point of investing so much time learning all of this when there are some IDEs that are preconfigured with all the functionality a programmer would need ? Does learning neovim or emacs actually save time in the long run? I know that they’re much more lightweight than IDEs and I’ve been really enjoying using the terminal much more than my time on IntelliJ, but having an easy out of the box visual debugger, refactoring and jump into functions can be really helpful in the long run I think, especially when starting to write actual large programs. Nano is fun, but not a time saver. Why did you chose your editor?

  • o11c
    link
    fedilink
    arrow-up
    2
    arrow-down
    2
    ·
    1 year ago

    The problem with IDEs is that they are less than the sum of their parts.

    There are no old Emacs users on the internet because their fingers are no longer capable of typing. Unfortunately, most other text editors use keybindings reminscent of emacs.

    Neovim doesn’t offer much value over classic vim, and is much more prone to being outdated on some random system you might use.

    Don’t put too much in your .vimrc, since then you’ll have trouble when you move to another computer. I can survive with just 3 lines in my .vimrc (easy to memorize), with a 4th likely:

    " because I hate default <Esc> location and behavior
    set virtualedit=onemore
    nnoremap <CR> i<CR>
    inoremap <CR> <C-O>:stopinsert<CR>
    " If you press it fast enough, don't break undo.
    inoremap <CR><CR> <CR>
    

    That’s not all I end up with if I use vim extensively on a single system, but the other stuff can be added as I get bothered (line numbering, tab behavior, TTY title, backups, undos, modeline, mouse, search, wrapping)

    (admittedly I don’t bother with LSP integration; if you rely on that you probably need more)