When I try to discus editors with friends and coworkers, I often get pushback about not wanting to “switch”. Have I got news for you, computers multitask these days!
I personally often have a JetBrains IDE open alongside VSCode, Sublime and vim because there are things each of them do better, or at the very least things I better know how to do in each. You don’t need to replace a program you like, you can just add to your menagerie.
Final unrelated note, all editor nerds should give Acme a spin. It’s a literal trip. I never got comfortable enough with it to be productive, but I could see it being amazing if you get your head around it.
Definitely. I use SublimeText for general editing tasks and OpenSCAD, VSCode for Python, Terraform/Kubernetes, Ruby, bash/fish ... and IntelliJ for Scala, because it's just the best at that by a long shot. I also use SublimeText for random notes and as a clipboard buffer, since it keeps unsaved tabs alive really well, even across restarts and crashes – I think one of my unsaved tabs must be close three years old. Terriffic piece of software.
I never got into emacs/vi/vim. I suspect they aren't actually rubbish, but my exposure to both so far has been limited to lots of very aggressive sales pitches like "anything less than my particular way of using emacs doesn't even qualify as text editing" and "using arrow keys is sin, filthy unbeliever", both in person and online (HN has its fair share of this), and that's just such a huge turn-off, massively takes the fun out of it.
Hah, that's my exact same workflow. Sublime for random notes, clipboard buffer. Vscode for JavaScrcheck on package uspsipt/typescript. Intellij for Scala. I also have a dated log loh of todos that I edit in vim with some helper scripts that keep add a datestamp for each new day that I open it.
I've lightly forayed into vim and emacs before, but can't live without the built in language support
Same; I use IntelliJ for the brunt of my work (no editor is faster than automated refactorings & auto fixes), VS Code for random code, documents, and scratch pads (usually using it for auto formatting as well), and vim for git commit messages / interactive rebases, but mainly because git opening up an external editor breaks my git flow.
Me and Vim never clicked. Mind you that may also be because I've not found a good tutorial / practice thing yet, nothing that stuck or that pushed me to get the various commands into my muscle memory.
I use IntelliJ for Java. There's nothing to touch it. What bugs me is that every year or so they change things around and you have to figure out how everything works again, or they discontinued support for a plugin for a particular version of a VCS you were using ... (no I'm not bitter ;)
But I use Emacs for everything else. Emacs never changes how things are done. It can't do Java the way I'm used to doing it though. It took me a whole heap of work to get competency to a level I was actually productive with though, so I can appreciate why it's a tough sell. Worth it though IMO. Though I pity the person who has to pair program with me!
If you're interested in learning Vim, I wrote up a bunch of practice exercises for every command to build muscle memory. They are intended to only take about 10 minutes a day for a couple weeks to help learn specific commands. Here's a few free sample chapters: https://github.com/steveshogren/10-minute-vim-exercises/blob...
I have the same setup with Sublime instead of VS Code. Sublime starts faster and takes up less memory, and I don't need the things vsc is better at for my scratchpad needs. For when I don't want to use a JetBrains IDE I just use code full stop.
I’m hoping beyond hope that Jetbrains one day implements a client-server architecture. The codebase at work is getting too big for our MacBooks to reasonably “git pull,” build, and index. The solution on offer is very powerful cloud instances. The only GUI editor option there is VSCode. It’s okay, but nowhere near Jetbrains level.
Exactly. Especially once you learn Vim you don't need to "switch" at all. You can have the vim plugin in every editor and use the best tool for every job.
I don't know vi/vim at all (okay, only enough to exit an accidental session), so I can't judge the quality of these emulator plugins.
But I am curious:
On the Emacs side of things, none of the dozens of editors I've used that claim to emulate Emacs have done a good enough job to let me actually work. Right off the bat, most of them do not get C-U correct, and that's something any serious Emacs user will hit within a few seconds.
Do the 'vi' plugins generally do a good job, or are they just the same hollow key remappings that most editors consider "an Emacs mode"?
I am not sure. I probably don't know "vim proper" - only "portable vim" which is the same in all editors.
For the basic editing (probably not that basic, as I use quite advanced editing techniques like macros) I use vim shortcuts and for things like manipulation of windows/buffers/tabs I use editor specific shortcuts. Also for some unique features, like code refactoring in IntelliJ IDEs I use their shortcuts.
But "basic vim" functionality is still enough "to be dangerous" very fast after I start using an editor and I gradually learn the specifics. I never think twice whether I want to try some new editor. I just do it.
Indeed, I don't use vim proper (can't remember if I ever used it), but I heavily use all of the following (for different purposes) at the moment:
1. WebStorm for web stuff
2. CLion for Rust (it's different from WebStorm and has different shortcuts for various things)
3. Spacemacs for OCaml
4. VSCode for various things, mostly for beancount accounting
5. vim on remote machines - but there I don't use buffers and other more advanced things
I would say it depends. Mostly they enable the modal editing thing and most commands are available. However, what usually happens is that this integration is only skin-deep and there may be conflicts with the IDE's shortcuts.
In intellij, shortcuts (commands using a modifier) can either be handled by the Vim plugin or by the IDE. You can't choose depending on the mode of vim. I mainly use Vim for the movements, so I don't feel very limited by the lack of "advanced features". However, what irks me is the way words are handled. For exemple, the IDE will be able to handle camelCase and go from one "word" to the next with ^->. Vim doesn't know that.
Another limiting factor is that many people use a bunch of vim plugins. As the vim-mode in IDEs isn't actually vim, those plugins can't be used.
I've never tried, but what looks interesting on paper is the neovim integration of VSCode. From what I understand it actually uses nvim, so that should be able to provide the full vim experience, including plugins.
It's been a while since I last tried Vim emulation, so I don't remember the details, but I remember feeling impaired. :g and :v commands were missing, which is a big deal for serious vim users, I think?
Though comments under yesterday's post about scrollbars made me realize I might live in a :g/:v bubble :)
Assuming you talk about Acme from Plan9 you could try Wily which is similar (don't know about the actual differences) but more accessible because it can be compiled on Unix/X11.
Sublime still remains my go to text editor. For development, I definitely have switched over to appropriate tools with larger feature support but nothing, I say nothing, provides a blank slate of immense power and performance such as Sublime Text does
I still use Sublime daily, and will continue to do so for the foreseeable future, but i can see that VSCode is breathing down it's neck.
A couple of years ago i could have sworn that they had feature parity, but these days it seems like VSCode is getting "all the cool plugins", while Sublime has stagnated. The long development cycle probably doesn't help.
Sublime is still the king of speed. It launches in milliseconds, opens just about anything you can throw at it, and does so without making a fuzz.
VSCode on the other hand spends seconds starting up, more seconds after starting up loading plugins, even more seconds refreshing plugins until it is finally ready after 10-15 seconds. It may not be a big deal if you only open it in the morning, but if you have to open it multiple times a day it becomes a chore, so much that i have reverted to Notepad++ for most trivial tasks.
VSCode will also open pretty much anything you throw at it, but where Sublime will use very little memory opening a large log file, VSCode is in the GB memory consumption range long before finishing reading it.
Of course, the above is only "Windows" problems, as any Unix based operating system will have some form of Vi, which is my preferred editor.
"VSCode on the other hand spends seconds starting up"
I tried this and was surprised to find that VS Code is quite slow to start. However, opening subsequent files once the editor has started is fast and I pretty much always have VS Code running so the slow initial startup doesn't seem to be a big problem - at least for people like me who are terrible at closing programs...
What I really like about VSCode is the remote-ssh plugin. This puts (at least some) of the VSCode software on the server and things like Git and the runtime you choose for your code (like the Python install) are on the server. Especially my code needs to run on a batch processing cluster, so it needs to be there and not local if I immediately want to use/test the code. So where I used to work via Samba shares or ssh/Vim/Nano, I now open VSCode and add the remote server to remote-ssh and boom, I can browse the filesystem and use Git from the same interface, I can even have a terminal open to the remote machine at the bottom of my VSCode window (if I want to do more fancy git stuff or start programs). VSCode is now more like a client and plugins remain on the server, the actual dev (local) machine becomes less relevant. Is there anything similar out there?
Actually a colleague of mine use a Jupyter-lab install on the remote cluster, he uses the Editor and Notebooks together to develop. This is also a nice way to develop locally with the code remote.
Extremely useful for projects which have an environment that is a bit tricky to setup - so usually python. I can just run all my python projects on a workstation or even some powerful cluster node and never need to mess with a local python version on the windows laptop. A giant improvement over the rather lackluster remote mode of Pycharm which needs a local environment to be useful at all. It even supports a remote connection via a jumphost, e.g. for cluster nodes behind another login node.
On the other end the editor is significantly worse when compared to Pycharm. The refactoring is mostly unusable across files and more often breaks things than helps. No perfect tool I guess.
Coda (and Coda 2 on modern machines) is great for remote editing, especially since you don't have to set up any plugins.
My favorite editors/IDEs by task:
* Remote config file editing: Coda
* PHP: PHPStorm
* JS: WebStorm
* Rust: CLion
* CLI text editing: Vim
* Edit a random file on Windows: Notepad++
* Edit a random file on Mac: VSCode/Atom
> until one day I discovered a plugin for VSCode that embeds Vim
Pretty much any editor with plugin support ends up with at least one Vim plugin. In addition to VSCode, Sublime, Atom, and Emacs all have Vim plugins (Sublime's is even built-in, but disabled by default).
To me this is the best of both worlds, since I can take advantage of all the nice features from my IDEs while still having the efficiency of Vim editing. Honestly, the thing I miss the most from full-fledged Vim is the Subvert command from abolish.vim (https://github.com/tpope/vim-abolish).
I liked the promise dangled by things like Atom and VSCode, but Atom’s development has stopped and VSCode is spyware, in addition to all of the most interesting features being in closed/proprietary plugins.
Text editing is one place I’ll absolutely never use nonfree software. In addition to the privacy concerns (my editor has the highest security requirements of any software I run), it’s also my most-used tool, and, as such, must always be able to be inspected and modified, as it is an extension of my muscle memory.
You might lock me into a cloud or an API, but my most critical tools that take up the deep parts of my habits will remain under my control.
As a daily user of the editor, I'd be curious to hear more. To be honest, it's become an essential tool, and would be a challenge to replace. It's quite excellent.
I know it's funded by Microsoft, whose operating system I'd consider as a kind of spyware these days. But for VS Code, aside from the opt-in telemetry, and the fact that it's built on Chromium, funded by an advertising giant who thrives on invasion of privacy, is there evidence to justify calling it a "spyware"?
OK, I admit that whole question might be an answer to itself..
Several other plugins serve as telemetry even if not explicitly intended as such. Other extensions that have their own telemetry generally ignore the telemetry setting on the editor itself.
Have you tried Webstorm? I am using VSCode for a company project because the team agreed that we all use the same tools. Privately I am using WebStorm, and I like it much, much better. It feels so much more integrated, and all those inspections, refactoring, diff features make it the best web development tool currently available IMO.
vim is more of a text sculptor than text editor. the way you work with text is next to magical.
that said, it shows its age. i'm now trying out - with quite some success - vscode with remote-ssh. it's extremely nice to be able to use native OS window and have everything happen on the remote side transparently. the vim plugin works but as usual not everything is good: visual mode doesn't quite work for copying lines, commands are missing, keybindings conflict with native, etc. haven't looked at the neovim integration - next on the list.
The neovim integration is better than the main vim plugin IMO, since it's not trying to emulate the myriad features of actual vim. I wish the current top Vim plugin had taken the neovim-as-backend approach. Oh well.
The noevim plugin is decent, and allows most of your vimrc mappings, but it definitely has it's quirks. If the quirks got smoothed out VSCode + neovim plugin might just be perfect.
I can't believe I didn't see it on the thread yet but I am putting a plug in for Doom Emacs.
I was a hardcore Vimmer for years, but I've heard so much about emacs I decided to give it a try and after giving up on it once I tried Doom Emacs and it is fantastic. Easily doubled my workflow speed and that is just learning some of the basics. It takes a little bit to get used to but it is so powerful and fast. In addition learning a new workflow and the world of Lisp has been eye opening.
Author of the post here and I'm curious, did you ever try Spacemacs? Not that it's better or worse, but that's what got me into emacs. I'll have to give Doom a try!
I didn't try Spacemacs. When I decided to make the switch I looked at both of them, the big thing that won me over was that Doom Emacs advertised being lighter weight and quicker to startup which kind of sold me. I might be interested in trying Spacemacs in the future but right now I am still trying to navigate the Emacs world itself.
Windows Editor - Laughable piece of crap with one single undo step!
Notepad++, Slickedit, etc: Nice for some quick editing and hacking. Quickly fired up, but framework support is generally lacking.
Atom - feels super heavy for a text editor
VSCode - alright, but not really something will get you excited
WebStorm - Not free, but fucking great. Maybe not as lightweight as those Slickedit, Notepad++ options, but awesome framework support and by far the best diff tool that I know.
4. Vim+tmux: clicked for me like a year into my career.
5. Vanilla Emacs+Evil and a custom config.
6. Doom Emacs: I started running into some slowness with my own config years in, so decided to give doom a try. I’m glad I did: it’s so fast and really intuitive.
Nice writeup op. At the end the blinking pairwise can give someone seizures. It made it uncomfortable to look at it. Could you please please make it unblink.
I personally often have a JetBrains IDE open alongside VSCode, Sublime and vim because there are things each of them do better, or at the very least things I better know how to do in each. You don’t need to replace a program you like, you can just add to your menagerie.
Final unrelated note, all editor nerds should give Acme a spin. It’s a literal trip. I never got comfortable enough with it to be productive, but I could see it being amazing if you get your head around it.