I’m sure a lot of you are like me and have switched code editors a number of times. I think my first major editor was Coda. Then I moved to TextMate when I started working primarily on local. Then Sublime Text. And, most recently, VS Code. I bet your journey was different. I know lots of folks that quite love Atom, Brackets, WebStorm, and even BBedit. You do you!
For me, that’s four changes in a dozen years, or a change every three years. Moving isn’t something I do quickly. Here’s a collection of thoughts around the idea of changing editors.
When moving, I have to take time to make sure it works pretty much like the old one.
Otherwise, I’ll just end up disliking it to the point that I switch back a day or two later. It’s happened to me every time I switch. I have little false-starts after a switch where I go back to the old editor because something bugged me too much or it affected my productivity and I gave up. (Now that I know I do this, I don’t let a single false-start make me feel like the editor I’m trying is never a possibility.)
My latest switch was from Sublime Text to VS Code. I’d become become very used to the key bindings (e.g.
CMD+Shift+d to duplicate a line) in Sublime Text, so thankfully VS Code has that covered.
I was amazed to find even my VIM friends happy and comfortable in VS Code. (Fun fact: we have key bindings choices in CodePen, too.)
Nothing can be too obnoxious.
In one of my first attempts at switching, I found the UI in VS code to be too cluttered and the find-in-project feature to be a little slow and awkward. Those things bugged me to the point they caused false-starts and I went back to Sublime Text.
On this last switch attempt (my 3rd or 4th maybe?) I finally have a theme I quite like (customized a smidge), found some settings to clean up the UI (I removed the whitespace indicators which were overwhelming to me, and overrode that intense blue footer with something more chill).
In working with find-in-project a bit more, I’ve grown to get used to it. I finally might even like it more than Sublime, as the sidebar approach is more consistent than opening a new tab of results. I find the jump-to-line feature works more consistently and search feels more the first-class citizen it should be.
Another factor would be Emmet. I’m quite sure that I’d be too annoyed writing HTML and CSS in an editor without Emmet, and I’d just give up and use something else that had it. Emmet isn’t even an extension in VS Code, it’s built in.
I’m cool with making small changes after a successful switch.
Once I’ve actually done it, and made the switch to full-time use, then I can make some changes. Maybe I’ll learn some new key commands. Maybe I’ll add an extension that adds functionality I’ve never had before. Maybe the editor affects some workflow thing in a way I’m now willing to try.
The new editor better have some killer feature that incentivizes me to switch.
If it’s exactly the same, why bother?
The new editor needs to be faster (or feel just as fast). Or should look better. Or it should have some awesome package that is only available on it. Ideally all of that.
In this recent switch for me, it was GitLens.
It ought to have a plugin architecture.
Meaning that anyone can write code to extend the editor. I’m fairly certain that having a plugin architecture (plus a healthy amount of community momentum) is what is key to any editor’s success. Sublime’s package manager, and the subsequent built-in packages feature of VS Code, seem crucial. Not only for functionality but even just for the look of the editor. I wouldn’t use an editor with a look I hate, but I’d be tempted to if the functionality was awesome. That’s a non-issue with a plugin-based editor. Open source seems smart as well.
Careful for those GOTCHAs.
One of those was spell-checking for me. In Sublime Text, it was an option under the View menu. I had it checked all the time, and it spell-checked all the time.
This is not a thing in VS Code. That was dangerous after switching because, who knows, I may have been committing typos all over the place. Fortunately, this extension seems to be doing the trick. Thank jeepers for extensions!
I thought it might be interesting to ask what y’all think about when switching code editors. There were lots of responses. I picked out as many as I could here and focused on one thing that you mentioned.
- Jani Hartikainen cares about VIM key bindings.
- Morgon wants version control integration.
- Stu Robson wants it to not crash when you open huge files.
- Gabriel Vaquer doesn’t want it to be Electron.
- gryzzly wants it to start up fast.
- Josh Betz wants a human-readable config file.
- Dan Finlay wants it to be mouse-free.
- Frank Spin cares about GitHub stars.
- Elijah Manor wants it to support extensions.
- Max Sandelin wants visual git controls.
- Matt Obee wants speed.
- Kuldar wants less UI.
- Devon wants something that his old editor doesn’t have.
- Brett Jankord wants it to be actively developed.
- Jordan Koschei wants it to be used by people he trusts.
- PaulMDev wants night mode.
- Brad Frost wants reliability.
- Will Browar wants multiple cursors.
- Umar Taufiq wants code hinting.
- Thomas Faller wants community and support.
- code witch sam wants community engagement.
- Steve Gardner wants speed.
- Nathan Knowler is concerned about screen real estate.
- hearsay wants a live preview.
- Keith Grant cares about syntax highlighting themes.
- Mike Reithmuller cares about speed.
- Nori Code cares about RAM usage.
- droan cares about ligatures.
I tried VS Code, because the PHP debugger and intellisense works much better than in Sublime Text. But I’m not sure yet, if I’ll move completely.
I’ve switched editors once. When I was in high school, I used Microsoft FrontPage. When I got into college, I had switched OSs from Windows to Linux and switched my editor to Emacs. I’ve been using Emacs since 2002. I’ve tried several other editors over the years, but the learning curve is always steeper than I’m willing to take the time and learn it, when I’m already very productive in Emacs.
It wouldn’t surprise me if I never switch away from Emacs. It continues to improve, and it’s feature set is exactly what I want it to be. While it’s true that lisp is not exactly a common language nowadays, and so writing plugins for it has a steep learning curve, I haven’t found a need I have, plugin-wise, that someone hasn’t already filled.
I’d invert the two main reasons. I’ll switch if there’s some big advantage to doing so… but if not then why bother? After I switch I also want to not have to re-learn everything. In fact, this has kept me from moving to VSCode. I use Atom and it’s quite nice. I try VSC and… it’s also nice but different and I have yet to see a significant “Wow, you can do this here and can’t in Atom!” feature.
I really like vs code, but one thing that might make me want to switch to a different editor is the user interface can at times be overwhelming and confusing, especially the preferences menu where rather than checkboxes and drop downs you have to manually type json.
I love the fact emmet is built in and the extension marketplace is awesome, but an easier to understand user interface would pretty much make it unbeatable for me!
Plus, for the quality and features you get, it’s hard to believe it’s free!!
I hear that a lot at my office, a Microsoft shop that has traditionally developed in .NET using Visual Studio. But we’re on an Angular/TypeScript project now, and VS Code has become our editor of choice.
Good news! The VS Code team recently released an Insiders build that includes a new UI for settings. Maybe in the near future we won’t have to edit JSON configs for basic editor settings any more.
Looks like you can see the latest and contribute to the discussion here:
checkboxes and dropdowns are there. Only in beta. They’d ship soon.
They’re currently working on a much less scary version of the preferences management!
To me is mostly about speed, specially when dealing with ginormous directories. I’ve switched from Sublime to VS Code a gazillion times, but recently gave Brackets a new opportunity when my laptop refused to work, and it surprised me so much I’m gonna keep it for good.
It’s light, it’s fast, ships with pretty much all I loved about other text editors, and already includes a lot of features that are plug-ins in others. For instance, JS Lint, ES Lint, Emmet, and even a live preview server (although I normally use other solutions for that)
Funnily enough, getting the features of VSCodeinto VIM using plugins has cause my VIM to actually be slower than VSCode!
The Vim mode in VSCode has mature so well that I find myself using Vim less and less. I will always know Vim, so logging in via SSH, when it happens, I’ll still be able to edit files like a boss. I came from Netbeans -> Sublime -> Atom -> Vim -> Neovim -> VSCode.
From a front-end perspective I think I’ve hit the sweet spot and don’t see myself changing editors anytime soon. The Node debugger and debugging in general as me hooked.
For 15 years I tried a lot of different editors. Until I found Vim. In Vim you have absolutely all control over the editor, you can do any commands, macros, snippets, rebind keys as you wish, you can to be very creative with this editor. But learning curve of Vim is very steed. To master Vim might take years. You might learn something new about Vim everyday. I haven’t seen any person who can proudly say “I know everything about Vim”.
In industry for me WebStrom is also pretty good, when new people start to be involved in project.
I don’t give to much love to VS Code, I think it might have privacy issues. Usually Microsoft collects much more data than they claim.
Just use a firewall (on Mac e.g. Little Snitch) in order to block outgoing connections to MS servers
I’m in a small team of UI devs doing React + Sass.
The others have moved over to VS Code from Sublime.
I refuse to (for now) as Sublime does everything I need it to do.
Plus I’m getting older, and learning new s**t is getting more difficult. ;)
Git + command line stuff is done in Cmder.
I don’t need an IDE to do this for me, with pretty diagramatic representations of Git branches, etc.
There are 2 things I always consider when switch: speed and UI. I love PHPStorm and Sublime Text for that. While VS looks promising, it’s not as powerful as PhpStorm and more heavy than Sublime Text.
I am using Pycharm for same reasons. Also, I think Sublime is perfect for fiddling with files “outside” my project space.
I switched from VI to VIM
I’ve stuck with Coda for so many years now simply because of the built in FTP. I haven’t found that capability with any of the other editors. Unless I’m missing something.
You are missing something. Git.
To me, its mostly about cross-platform usage. And easy extension. Thus, my favorite source code editor is still Geany. Works across all major platforms, compilation on Linux and any other Unix derivate is next to trivial, has a big bunchload of plugins, and quite a lot very good color schemes.
I’ve tested others, including Atom, but they seem feeble and prone to break; not working reliable enough on older (but still supported) Linux installations, and thus, a total no-go for me.
@christidtp: I’m exclusively using Total Commander clones for S/FTPing around. Has much more appeal to me, also because of some of the (most of the time) built-in file comparison and search functionality.
Great information. Since last week, I am gathering details about the HTML experience. There are some amazing details on your blog which I didn’t know. Thanks.
I was wondering when you would make the switch. I managed to switch from Sublime to VSCode sometime last year. I customise the default theme quite a lot: https://gist.github.com/tgallimore/da09ddbec8bda4e4a1c64876aa757cb9
I use GitLens too, but the standard Git features built in are also awesome! I love the side-by-side compare and the merge conflict handling.
I switched from Sublime to vim and then vi over the past few years. (But for C# I still use Visual Studio with vim bindings.)
One thing I’d like to add about plugins is that if you’re on Mac, Linux or another Unix it’s worth using an editor that integrates with the rest of the operating system. You won’t need a JSON Swiss knife plugin if you can invoke ‘curl’. You don’t need some REST client addon if you can invoke ‘jquery’. Build system integration? Bind ‘make’, or ‘dotnet build’, or whatever to F5, done. Git blame? ‘git blame %’. The list goes own.
The power of Unix is that of composing programs you already have.
I am using PHPStorm as my main IDE, and VSCode and Notepad++ for quick edits.
What I find a bit strange is that some people say that they want an Editor and not an IDE, but then they will go and download a ton of 3rd party plugins trying to make that editor more like an IDE.