I tried several editors but always come back to emacs. When I used LaTeX because of AucTeX, then I discovered org-mode and now I do my writing with org-mode and ConTeXt.
a terminal is the ultimate gui for a lot of things especially w/ ncurses mouse support. You can open N terms and easily compose a dashboard which is exactly tailored to what you’re doing at the moment. A simple oneliner often solves a problem for which a gui simply does not exist / isn’t powerful enough. Terminal is the ultimate gui ftw from the space yay!
Disclaimer: Never really used Emacs, but mediocre VI(M) user for nearly 25 years.
I am fully capable of using VIM for developing bigger programs, but I gave up on the wish of setting up VIM as an IDE. Still, IMHO VIM is worth knowing for quick edits, writing and remote work.
Seriously, if you want an IDE for Python and C#, VS Code with the Microsoft plugins is and will be miles ahead of the VIM experience. The Rust plugin for VS Code is IMHO subpar, the last time I tried it. I don’t know what is the favorite IDE of Rust developers.
I wouldn’t want to stop you trying out editors and having a nice journey, but in the last years, VS Code ‘won’ and is used by nearly every developer for a reason: It has not a perfect setup and a lot of annoying issues, but out of the box the experience is good enough™ and is has the biggest user base by far, so show stoppers will be fixed quite fast.
So, my advice would be: Learn vi, because it is a handy tool for quick edits with good defaults (looking at EMACS) and chose a popular editor or IDE for your development needs. The time trying to force VIM/EMACS into a descent IDE will never come back and the theory sounds better than it will be in reality.
Seriously, if you want an IDE for Python and C#, VS Code with the Microsoft plugins is and will be miles ahead of the VIM experience.
Someone else already pointed how VS Code has become the most popular IDE (at least according to statistics found on stackoverflow). While categorically I’d like to dismiss VS Code for not adhering to F(L)OSS, VSCodium -however- actually does fit the bill. And while formerly I’ve had bad experiences on it related to how the plugin ecosystem is configured by default compared to VS Code, I’ve since learned how it works on VSCodium. So I shall set it up in case Emacs and/or (Neo)Vim somehow seem to be less fit for the job and/or I can’t be bothered at that moment to configure Emacs/(Neo)Vim to do my bidding.
Learn vi
Will do.
The time trying to force VIM/EMACS into a descent IDE will never come back and the theory sounds better than it will be in reality.
I understand the concerns. And I agree that I should be realistic in how I approach this. Nonetheless, I’m faithful for it to be a very productive endeavor. Thank you for chiming in!
My impression about VS Code being popular is also from workplaces at several companies, VS Code was literally on every machine and VS Code project config files are nowadays checked in with project into version control. (In the past I would not have been happy about config files in version control, but I just accepted it by now.)
One more question: How to setup VIM/NEOVIM or EMACS as a descent C# IDE? AFAIK the language servers support navigation and auto completion, what about refactoring, code generation, support for build systems, hot reloading for code while debugging etc.?
My impression about VS Code being popular is also from workplaces at several companies, VS Code was literally on every machine and VS Code project config files are nowadays checked in with project into version control. (In the past I would not have been happy about config files in version control, but I just accepted it by now.)
That’s actually kinda concerning 😅. I hope I can remain free to use whichever IDE suits me best. But thanks for pointing that out as it’s a very realistic scenario.
How to setup VIM/NEOVIM or EMACS as a descent C# IDE?
Hehe, the crux. Honestly, I’m not very optimistic that it can do everything one might be used to do on something like Jetbrains’ Rider. Nonetheless, I’ll try to get it as close as I can and see from there if I’m willing to deal with it. I’m not entirely opposed to rely on other IDEs from time to time for specific functionality I’d be missing otherwise.
Do you have any experience with neovim? I’m certainly not a Python programmer but I’m doing simple things for fun and so far neovim served me very well. If I eventually go deeper in Python I would be interested to know the limitations of neovim beforehand.
For Python, AFAIK Microsoft have their own implementation of a language server, so I don’t know how it compares to the Open Source options. My VIM config for Python runs black/isort on save and that’s good enough for me.
IMHO the distance is far greater when you use a language like Java/C#, which has really descent support from IDEs.
If neovim serves your needs, enjoy using it and don’t listen to random people in the internet. ;-)
Thanks for the information. I’m always happy to hear from others because that’s how I make progress. Also with my workflow in constant evolution it’s good to know neovim’s limitations so I can be prepared. Being curious by nature I will try other apps with no doubts anyway. I’ve tried vi, neovim, emacs, but only heard of VS so who knows…
I would propose you try to split the data you have manually into logically separate parts, so that you could logically fit 0.8 TB on one drive, 0.4 TB on another, and maybe sets of 0.2TB+0.2TB on a third one. Then you’d have a script that uses traditional backup approaches with modern backup apps to back up the particular data set for the disk you have attached to the system. This approach will allow you to access painlessly modern “infinite increments” backups where you persist older versions of data without doing full and incremental backups separately. You should then write a script to ensure no important data is forgotten to be backed up and that there are no overlapping backups (except for data you want to back up twice?).
For example, you could have a physical drive with sticker “photos and music” on it to back up your ~/Photos and ~/Music.
At some point some of those splits might become too large to fit into its allocated storage, which would be additional manual maintenance. Apply foresight to avoid these situations :).
If that kind of separation is not possible, then I guess tar+multi volume splitting is one option, as suggested elsewhere.
That is actually what I’m currently doing, in fact my file server is already organized in this way, but i personally don’t like it for offline backups because it still forces me to play digital tetris and work out what directories will fit on what drive, and there is also the issue that some of my directories, particularly the one containing all the lossless files from my (hobby) photography work, is getting close to growing larger than 1 TB at this point (I do a ton of urban and industrial photography and I honestly might have most of the interesting parts of my city documented at this point, plus different versions the same scene with different settings which is how I ended up with so much data). Though I suppose I can just split it into separate years instead of just one huge directory. I’m personally hoping for something that can automate this process so I don’t have to consciously keep track of it as much (I don’t trust my brain sometimes), currently experimenting with some of the suggested solutions, maybe I’ll find one that works better, if not then I’ll stick to the method you mentioned. Thank you for the suggestion though!
I can’t quite understand what it is. If it allows you to run FSR3 instead of DLSS in games where the latter is supported but the first is not… Would be pretty huge
I had to force it to run in xwayland because in wayland it no longer remembers window positions, so with wayland it was opening all my windows in a big pile on the current desktop, instead of putting them in the positions and on the desktops they belong.
That sounds more like a compositor problem - typically a client should not have control over where windows are placed, and that X11 allowed that got heavily abused with negative impact on UI. Wayland fortunately fixed that, so it is now up to the compositor where to place windows. Those can send hints, but the compositor is free to ignore them.
In your situation your compositor should remember where to stick the windows.
And if I ever browse away from that page and forget to return to it before closing firefox…
This has a million caveats and isn’t even close to a solution for how I use firefox. Each desktop has their own windows and I want them to stay there because the tabs open are relevant to that desktop.
I use Emacs + spacemacs in VI mode as a base for all my text editing on both Linux and windows (which is unfortunately required for work on occasion) machines.
For dev environments I mostly use nix + direnv + direnv-mode.
For C# I use the above plus omnisharp-roslyn + lsp-mode.
I tinker in all sorts of languages, and they all have at least basic support in the Emacs ecosystem. The popular ones should have fully functional language servers and debugger adapters.
I use Emacs + spacemacs in VI mode as a base for all my text editing
Do you specifically prefer using Spacemacs as a base over Doom Emacs? Or is the usage of Spacemacs primarily attributable to it coming earlier to the scene?
Furthermore, as you’re using it in “VI mode”, would it be fair to assume that you’ve got some experience/history with Neo(Vim) as well? If so, what led you to making the switch from (Neo)Vim to Emacs?
For dev environments I mostly use nix + direnv + direnv-mode.
Very interesting! Relying on Nix rather than Distrobox has been something I’ve been pondering upon. But besides the fact that I’m still very new to Nix as an ecosystem, I’ve also got my concerns related to what degree the containers can be sandboxed. Do you happen to have some insights on this?
Or is the usage of Spacemacs primarily attributable to it coming earlier to the scene?
Yeah, pretty much just that. If was to start again now I’d consider other options, but I have no serious complaints about spacemacs. I probably would have never got into Emacs at all if I had to start with vanilla.
Furthermore, as you’re using it in “VI mode”, would it be fair to assume that you’ve got some experience/history with Neo(Vim) as well? If so, what led you to making the switch from (Neo)Vim to Emacs?
Yeah, I used VIM (and I still do when I’m in an unfamiliar environment), but only before neovim existed. IMO Lisp is what makes Emacs great, and vimscript is (was?) an absolute nightmare for anything complex. I don’t think lua is a bad language, but I’ll still take Lisp any day for this purpose.
I’ve also got my concerns related to what degree the containers can be sandboxed. Do you happen to have some insights on this?
What I described isn’t using containers. Nix just provides an environment for processes to run in, and direnv-mode ensures it’s using the right environment for a given buffer in Emacs. So for example I don’t have OmniSharp or dotnet in my user $PATH, but they are provided by the nix expression in a particular project directory. That allows lsp-mode to start OmniSharp as a language server, or I can run dotnet build using the Emacs compile command.
You can define containers with nix and manage them with nixos-container. I do that for testing server deployments, or running sandboxed services, but I’ve never needed something that complex for a dev shell.
I probably would have never got into Emacs at all if I had to start with vanilla.
Very interesting. I assume this is due to the amount of effort that would have been required for it to acquire some of the functionality you were expecting out of it. Am I right?
IMO Lisp is what makes Emacs great, and vimscript is (was?) an absolute nightmare for anything complex. I don’t think lua is a bad language, but I’ll still take Lisp any day for this purpose.
This is actually a great point that I somehow completely ignored so far. I intend to put my teeth in GNU Guix at some point in the future. As Guile Scheme and Lisp are -to my knowledge- at least in some way related, using Emacs should at least provide an excellent platform for me to get accustomed to what it is yet to come. Thanks for mentioning that!
What I described isn’t using containers. Nix just provides an environment for processes to run in, and direnv-mode ensures it’s using the right environment for a given buffer in Emacs. So for example I don’t have OmniSharp or dotnet in my user $PATH, but they are provided by the nix expression in a particular project directory. That allows lsp-mode to start OmniSharp as a language server, or I can run dotnet build using the Emacs compile command.
That sounds very compelling! Thanks for that insight! Perhaps I should stop procrastinating and get on with learning Nix 😅.
You can define containers with nix and manage them with nixos-container. I do that for testing server deployments, or running sandboxed services, but I’ve never needed something that complex for a dev shell.
I assume this is due to the amount of effort that would have been required for it to acquire some of the functionality you were expecting out of it. Am I right?
I didn’t really understand what Emacs was at the time, I just got fed up with trying to make vim into an IDE. Out of the box, spacemacs had good language support, modal editing, and looked ‘modern’.
What I love about Emacs now is Lisp and the package ecosystem. I have 396 packages installed, and many of them interact in quite complex ways. When I do a package upgrade it pretty much pulls the latest from the development branch of each package. Some packages haven’t been changed in 10 years, some are changed daily. It’s bleeding edge everything, and things don’t actually break that much. Lisp makes for (obviously IMO) beautiful, simple code, so most packages are a pleasure to fix, extend, or automate.
I intend to put my teeth in GNU Guix at some point in the future.
Me too, but I nix has served me well, so I haven’t been motivated.
Thank you so much for your insights! Much appreciated!
Some packages haven’t been changed in 10 years, some are changed daily. It’s bleeding edge everything, and things don’t actually break that much. Lisp makes for (obviously IMO) beautiful, simple code, so most packages are a pleasure to fix, extend, or automate.
I want to have a better idea for much time is spend on ‘management’; fix, extend and/or automate etc.
This was actually triggered by upgrading omnisharp, which started sending a new notification that lsp-mode didn’t explicitly ignore.
By the time I hit it, that issue had already been reported, so I was able to quickly work around it with a snippet in my main config. I could have also just rolled back omnisharp.
Most problems I’ve had have been solved by upgrading spacemacs to latest.
I feel like most of these computers are underpowered and worthless to most people outside of a web browsing machine. Which is fine I guess if you don’t have a computer at all. But when some of us are rocking six or seven computers in our house, do we need anymore?
My laptop is a cast off from a member of my staff who said it was too slow - a (dmidecode) - Product Name: HP 255 G6 Notebook PC. It now runs Arch (actually).
It previously slogged along with Win 10, Outlook n O365 n that. Now it does Libre Office, Evolution and much more. I use KDE, which isn’t known for a light touch on the resources. I also do light CAD and other stuff.
My office desktop is even older - it was a customer cast off, due to be skipped around six years ago. I did slap a SSD into it and I think I upped the RAM to 8GB. Its a (ssh, dmidecode): Product Name: Lenovo H330 and the BIOS is dated from 2012! I run two 23" screens off it and again, it runs Arch (actually) and KDE for pretty stuff. I run containers on it - at the moment a test Vikunja instance. I have apache, nginx and caddy fronting various experiments backed up with postgres and mariadb.
Both devices are “domain joined” and I auth to Exchange via Kerberos, via Samba winbind. File access (drive letters for the Windows mindset) is currently via autofs. I have a project on at a member of staff’s request to switch from Windows to Linux. I’m going to take my time and get it right. My current thinking is the Fedora KDE spin and this: Closed In Directory
If you have an old laptop or PC why not give it a go? You could start here: www.linuxmint.com Another option is to install something like Virtual Box on your existing machine and try out running it as a virtual machine or two. 2 CPUs, 4GB of RAM and 20GB of virty disc will work for any Linux distro as a VM to start off with. There’s also VMware Workstation - there’s a free version. Do discover the joy of snapshots/checkpoints which allow you to roll back failed changes!
25 years ago the options were rather more limited. I started off dual booting Windows and Linux but I don’t really recommend that these days, unless you want to run a gaming rig with both. Few people can afford two lots of top end hardware! I left Windows behind completely around 2004 or 5.
linux
Top
This magazine is from a federated server and may be incomplete. Browse more on the original instance.