this post was submitted on 23 Dec 2023
31 points (94.3% liked)

Programming

17487 readers
117 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
 

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:
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 5 points 11 months ago (1 children)

Oh! Emacs fanboy here!

I think that one of emacs' surprising great points is that there is a plugin for a lot of smaller languages. If you're working with a language that has no special text editor love at all you're likely better off using vim but if the language authors made a plugin for their language, it's likely either going to be for emacs or vscode.

As for distribution ~~vanilla emacs~~ Doom emacs. Spacemacs has a bespoke customization system involving layers that is not all that friendly towards copy & pasting code from the internet. Doom emacs customization leans more to the vanilla side which can help if you need to solve a problem in your workflow.

(Obviously vanilla emacs works best in that regard, but I can understand not wanting to start with default emacs straight away)

[–] [email protected] 2 points 11 months ago (1 children)

I think that one of emacs’ surprising great points is that there is a plugin for a lot of smaller languages. If you’re working with a language that has no special text editor love at all you’re likely better off using vim but if the language authors made a plugin for their language, it’s likely either going to be for emacs or vscode.

Very interesting. I didn't know that Emacs was better at providing plugins. Would you happen to know to what that is attributable?

Spacemacs has a bespoke customization system involving layers that is not all that friendly towards copy & pasting code from the internet. Doom emacs customization leans more to the vanilla side which can help if you need to solve a problem in your workflow.

Did I understand you correct in that customizing Spacemacs is a completely different beast. So knowledge acquired related to it doesn't translate well to Vanilla/Doom Emacs and vice versa?

[–] [email protected] 5 points 11 months ago* (last edited 11 months ago) (1 children)

Would you happen to know to what that is attributable?

Not sure but I suspect it's 2 things:

  • the default editor is kinda shit
  • but it is really good at editing it's configuration language: elisp

So people have a need to change their editor, and a good configuration language to do it in. Moreover, emacs secretly comes with a bunch of built-in features, not enabled by default. It also helps that emacs is not terminal-based, allowing users to do stuff in emacs that you aren't able to do in a normal terminal (like viewing images, or searching for images on the web. Did I already say that emacs has a built-in (primitive) web browser?) and generally means that emacs users "live" in emacs, as they already have access to so many features.

If you compare this to vim

  • good text editing experience by default
  • vimscript wasn't all that great (lua is better but neovim is still a very good editor so the drive to fix all it's warts isn't quite there)
  • it is terminal based, so you can't do some of the funny stuff that emacs allows you to do

Did I understand you correct in that customizing Spacemacs is a completely different beast?

Correct.

So knowledge acquired related to it doesn't translate well to Vanilla/Doom Emacs and vice versa?

I wouldn't quite say that. It is more that you are probably going to need some prerequisite emacs knowledge to make the best use out of spacemacs' layer system. To figure out how spacemacs works, you first need to have a basic idea of how emacs works. Doom is a bit closer to the metal, so you need to know less in order to properly customize it

[–] [email protected] 2 points 11 months ago* (last edited 11 months ago) (1 children)
  • the default editor is kinda shit
  • but it is really good at editing it’s configuration language: elisp

So people have a need to change their editor, and a good configuration language to do it in. Moreover, emacs secretly comes with a bunch of built-in features, not enabled by default. It also helps that emacs is not terminal-based, allowing users to do stuff in emacs that you aren’t able to do in a normal terminal (like viewing images, or searching for images on the web. Did I already say that emacs has a built-in (primitive) web browser?) and generally means that emacs users “live” in emacs, as they already have access to so many features.

That makes so much sense. Would it be fair to say that Neovim attempted with Lua to bridge that gap and also make it a lot more accessible?

Did I already say that emacs has a built-in (primitive) web browser?

I don't think you did, but I'm already aware. I even have some concerns regarding its sandbox 😅. Would you happen to know more regarding this?

I wouldn’t quite say that. It is more that you are probably going to need some prerequisite emacs knowledge to make the best use out of spacemacs’ layer system. To figure out how spacemacs works, you first need to have a basic idea of how emacs works. Doom is a bit closer to the metal, so you need to know less in order to properly customize it

That's some excellent insight! Thank you very much, good human!

[–] [email protected] 2 points 11 months ago (1 children)

Would it be fair to say that Neovim attempted with Lua to bridge that gap and also make it a lot more accessible?

I think so? Tbh I'm not very involved in the modern version of neovim but I don't disagree with them moving to lua

I don't think you did, but I'm already aware. I even have some concerns regarding its sandbox 😅. Would you happen to know more regarding this?

EWW (short for Emacs Web Wowser) is very basic, only really working with the HTML and not so much the css, and definitely not JavaScript. Don't expect anything fancier than a blog post to work :P

[–] [email protected] 1 points 11 months ago

EWW (short for Emacs Web Wowser) is very basic, only really working with the HTML and not so much the css, and definitely not JavaScript. Don’t expect anything fancier than a blog post to work :P

That's kinda cool as it decreases the attack vector very significantly. I've still got a lot of questions regarding the security implications, but I'm sure I'm not the first one that's looking for a 'hardened' Emacs experience if there's anything to worry about in the first place.