cross-posted from: https://lemmy.ml/post/9648279

I would like to premise this with the following:

  • The best approach is probably just testing out each and every editor that interests me until I've found what works best for me.
    • However, I wonder to what degree a test as such would be representative when the likes of Emacs and (Neo)Vim are considered; both of which are known for being a life time learning process.
  • I don't literally expect Emacs or (Neo)Vim to be drop-in replacements for any IDE. Some of the most basic IDE-functions are absent by default and some (perhaps more advanced) functionality might simply not be attainable at all.
  • I am not interested in anything that remotely resembles a flame war. The community at Lemmy has so far been very kind to me; let's keep it that way 😜.

Motivation

I've had experiences with Atom, VS Code and some of Jetbrains' IDEs like Pycharm and Rider. While I've been generally content with all of them, it leaves a bad taste in my mouth whenever I'm forced to switch IDEs because their lifetimes and/or lack of extensibility doesn't allow me to responsibly continue using them. As such, I'm interested in a long time investment that will grow as I will. Both Emacs and (Neo)Vim have passed the test of time and I honestly don't think they'll cease to exist in the upcoming decades, that's why I would love to start using either one of them.

Furthermore, Vi(m) keybindings seem to be somewhat ubiquitous and almost any IDE offers some support. As such, improving my Vi(m)-game should only net-positive my productivity (at least eventually). Also, fluency will benefit me whenever I'm remote accessing any random server as they will always have Vi(m) installed. Thankfully, this doesn't force me to use Vi(m) (or Neovim) just yet, because Emacs offers with Evil perhaps the single best Vi(m) implementation; outside of native Vi(m)*.

My setup:

  • I'm on a custom image of uBlue using their startingpoint as template. For those unaware; an oversimplification would be that it is Fedora Silverblue with some extras.
  • As such, I would like to have my developer environments local and have used Distrobox to that extent using steps similar to the ones outlined over here. But I'm not married to that specific way of utilizing local containers. So please feel free to recommend me something that's at least as good.
  • If I go for Emacs, then I will definitely rely on Evil.
  • If possible, I would like to use it for C#, Python and Rust. Furthermore, I engage in editing Bash scripts, Dockerfiles, Linux config files, texts written in Latex and/or Markdown and other files written in Nix or JSON. As both are very extensible, I don't expect any issues, but I might be wrong.

Questions:

  • First of all, does it make sense for me to only consider these two?
  • Can the split between Vim and Neovim be interpreted as the first schism and as such be a forebode for what's yet to come?
  • Google Trends suggests that Neo(Vim) is ever-popular. On the other hand; not only is Emacs relatively less popular, but its popularity seems to be slightly declining. Should this worry me regarding their long-time future? Especially considering that a thriving community is literally the lifeline for both of them.
  • For those that have used both extensively, which one do you prefer (if any) and why?
  • While I understand that the power of both of them lies primarily in how one can literally make them behave however suits their workflow best. Therefore, the use of premade configs and/or starter kits/distributions should (ideally) only be used either temporary or as a starting point. However, at this point, they provide a decent showcase of what each 'platform' has to offer. So:
  • www-gem@lemmy.ml
    ·
    6 months ago

    I've often heard Emacs users pose the argument that Emacs as an Elisp interpreter does just one thing. It's just that this single thing allows the myriad of functionality it offers. So in that sense comparing it to a terminal/console seems more apt than comparing it to a text editor. I wonder what you think of that argument.

    I only used emacs for a year so I may be wrong but speaking only about how I used it and my current workflow I don't see a difference. Looking at the usage (and not the code), my very first impression of emacs was that it's acting as a terminal multiplexer which I was used to and so I liked this aspect. Anytime you need to do something that goes beyond the tasks of an IDE (calendar, email...) you switch window/panel (I've always been confused with the specific emacs terminology). That's exactly what I'm doing with Tmux where I run neovim and call other apps with a single keybinding. Then I can freely switch from one to another, close one, recall it in the state I've closed it...
    Again, this is related to the philosophies of emacs and neovim (i.e. do-it-all or do one thing). While neovim is "only" an IDE, emacs goes beyond, and for me this is not a negative criticism of either app. You build a tool with the coding language you need to implement some functionalities. In that sense, to compare apple to apple, emacs has to be compared to neovim coupled to a terminal multiplexer.

    Hehe, that's cool! Currently I'm really happy with Thunderbird so I don't expect to move away anytime soon, but I'll keep it in mind.

    I used Thunderbird as well and did the switch mainly to allow me to achieve the workflow described above. I do most of my tasks in the terminal. Neomutt would certainly be one additional layer of complexity in your transition to an IDE, unless you chose to use emacs for your emails. Actually configuring emacs as an email client or going with neomutt is pretty similar. But at the end - and this is an example of the higher level of granularity I mentioned earlier - neomutt is more customizable.
    Talking about the level of customization of the IDE functionality only, the plugins I use offer more configuration options in neovim as well.

    Orgmode is also one (the?) big star player in emacs and neovim is trying to attract some users by developing a similar thing here or there but this is not something that would benefit to my workflow. This is maybe one of the reason why people choose emacs vs neovim and why I could quit emacs easily. Going back to the coding language, you can see that the use of lua opens new doors to the original vim. What I appreciate though is that you don't have to implement any features if you don't use them in neovim so I can keep my system limited to my needs. This is also seen as a bad thing by some when you start because emacs is capable of quite a lot with a fresh installation while neovim can barely open itself ;)

    Overall we're all sharing personal experience so no generalization should be extrapolated from single visions and I'm aware of my own bias and preference for singl- task, lightweight, fast tool.

    • throwawayish@lemmy.ml
      hexagon
      ·
      6 months ago

      I'm so grateful for the time it took you to write this down. Thank you so much for your contributions in this conversation! I've greatly enjoyed reading every one of your replies. While I am currently not in the state to make any promises related to sticking to Neovim in the long run. I do think that I'm at least very interested to explore its possibilities. Have a good one! Cheers!

      • www-gem@lemmy.ml
        ·
        6 months ago

        It's always difficult to find a good starting point but remember that you're not married to your apps so you can easily switch from one to another and maybe come back later. Over the years, I've seen most of Linux users going that route because 1) it's fun and you learn a little bit from each experience, 2) Linux users are generally curious, 3) some apps may be more suitable to your workflow at a given time but your workflow may change over time, 4) Linux offers us so many options so it's like unleashing kids in a toys store, you want to try everything :)

        • throwawayish@lemmy.ml
          hexagon
          ·
          6 months ago

          Yup, I think you've hit the nail on its head. I've decided on using both and explore their possibilities and find how they can be best utilized for my workflow. Thank you for the excellent engagement!