In my previous post, I made this list of programming-oriented text editors I wanted to take a good look at:
- PyCharm (Community Edition)
- Visual Studio Code
Since then, I’ve made a few minor additions:
- IntelliJ IDEA (Community Edition)
- Leo (maybe)
I’ve had a chance to take a look at a few of these. And while personal time constraints have reduced my ability to rate editors in the way I originally planned, I’ll at least provide what details and opinions I can.
So, without further ado…
IntelliJ IDEA and PyCharm (Community Edition)
|“Must Have” Requirements||IntelliJ/PyCharm|
|Able to effectively edit files using only the keyboard||？|
|Free or low cost for personal use||✔|
|Fully functional on both Windows and Linux (without needing Wine)||✔|
These are both great editors from JetBrains. I’m thrilled that there are free versions available.
(I will concede that, although I looked for JS plugins, nothing jumped out at offering the support that I wanted – although admittedly I did not try for long. Comments welcome from anyone who does use the community editions for JS. )
One note though, for those who are reading this and whom are interested and not steered away by the lack of JS support: IntelliJ IDEA plus the Python plugin is intended to give the same feature set as the version of PyCharm available at the time the Python plugin is released. There are different release cadences, but basically unless you need the absolute latest version of Python support at all times, it seems to me that you get a more well-rounded editor by going with IntelliJ and adding the Python support via the official plugin.
|“Must Have” Requirements||IntelliJ/PyCharm||Atom|
|Able to effectively edit files using only the keyboard||？||？|
|Free or low cost for personal use||✔||✔|
|Fully functional on both Windows and Linux (without needing Wine)||✔||✔|
I’ve looked at Atom before, and based upon recent reviews I took another look.
It’s an editor with a lot of promise. It seems like it would take a little acclimating to, but seems like it’s generally decent, except…
Over two years since the issue was created. Discussion was locked down about 6 months ago. No action known, not known to be on any roadmaps.
I regularly use keyboard macros. Ctrl-X (, Ctrl-X ), and Ctrl-X e [e, …] are possibly my best friends in Emacs. I can use keyboard macros to repeat series of actions across multiple buffers if I need to. Not having macros is a flat-out deal killer… So until Atom gets something reasonable here, I’m staying away.
…And I’m aware of the keyboard macros plugin available, which is unfortunately completely emacs-inspired: the keyboard bindings are straight from emacs and clobber the Ctrl-X for cut in Atom. Which is one of my problems with Emacs and other programs which rely on community-driven plugins: not that community plugins are bad (they’re not!), but that often they don’t follow a consistent scheme for keyboard bindings. …But now, I’m just ranting.
Microsoft Visual Studio Code
|“Must Have” Requirements||IntelliJ/PyCharm||Atom||VS Code|
|Able to effectively edit files using only the keyboard||？||？||？|
|Free or low cost for personal use||✔||✔||✔|
|Fully functional on both Windows and Linux (without needing Wine)||✔||✔||✔|
I installed but didn’t really try this, as I found out that this basically is driven by the same core as Atom. Both Atom and VSCode have their own followings. But both editors apparently lack keyboard macros. …Non-starter.
There’s one more editor for this first run which I’ll cover, and that is…
|“Must Have” Requirements||IntelliJ/PyCharm||Atom||VS Code||Emacs|
|Able to effectively edit files using only the keyboard||？||？||？||✔|
|Free or low cost for personal use||✔||✔||✔||✔|
|Fully functional on both Windows and Linux (without needing Wine)||✔||✔||✔||✔|
Again, full disclosure: I’m a long-time user of Emacs.
Emacs basically supports everything that I need. However, it doesn’t do so out-of-the-box.
I’ve also installed auto-complete, which kind of works, sometimes. I still haven’t figured out the keybindings for it.
That’s the annoying thing with Emacs. Plugins in theory let you do nearly anything. In reality, it may be rather difficult (and moreso on Windows).
One example is refactoring. Getting Ropemacs set up on Windows is not easy. It relies on Pyemacs, which doesn’t have complete documentation (broken links). Via the Wayback Machine I could find docs, but even then the docs were Linux-specific and I had to read the Makefile to figure out the commands to run on Windows. I get that installed successfully after a try or two, then install rope and ropemacs (pretty easy), then enable the plugin – Emacs now is a dog to start up. Then I try a refactoring: it works! …And then I try to use the rename refactoring in real work, and: it takes forever and changed *nothing*. I then just use grep to find the spots in the code myself and tweak by hand. (This is why refactoring is a “?”; it likely does work but doesn’t seem straightforward to really get set up right.)
This also applied to Tern with Emacs. Did not get Tern to work as expected, either – but I was hoping for something which basically gets installed, enabled, and works. …And that’s just too much wishful thinking; it rarely works that way with Emacs. (Although arguably it’s not Emacs’s fault in this case – but I don’t really want to dive deeper and find out unless I have no real alternative.)
So… There’s a little of my anti-Emacs rant. At the same time, as an editor, I generally really like it. But there’s enough frustrating bits that I do want to find something else if I can, and more modern if possible.
Conclusion (thus far)
So, after all of this, the only survivor so far is:
But, there are more editors I’m still planning to look into. Here’s what remains in my queue:
- Leo (maybe)
I’m actually somewhat optimistic on Eclipse despite my past experience of it being a slow resource hog; maybe this is less important to me now. vim/gvim are also worth re-evaluating if for no other language that it wouldn’t be a real editor comparison without some Emacs vs. Vi action. NetBeans and Leo, I don’t know… But we’ll look at each of them in the next post!