
Which editor/IDE do you use and why? - bhalp1
https://dev.to/ben/which-editoride-do-you-use-and-why/comments
======
nine_k
IDEA for Java / Scala / Kotlin.

Emacs for everything else: JS, Python, Haskell,.. all the way to bash scripts.

I have high hopes for JetBrains, and possibly MS, making their IDE "engines"
available for integration with third-party editors, similar to the way Rust
[1], Haskell [2][3] and JS [5] "IDEs" try to follow (and apparently MS
specifies for some of its tools [4]).

With that, you could use your best-loved editor (and people love a variety of
them) with whatever language support engine(s), possibly even remotely.

To some extent, the venerable Plan9 ACME shown the way to that. The Xi editor
seems to follow this design.

[1]: [https://forge.rust-lang.org/ides.html](https://forge.rust-
lang.org/ides.html)

[2]:
[https://commercialhaskell.github.io/intero/](https://commercialhaskell.github.io/intero/)

[3]: [https://github.com/haskell/haskell-ide-
engine](https://github.com/haskell/haskell-ide-engine)

[4]: [https://github.com/Microsoft/language-server-
protocol/blob/m...](https://github.com/Microsoft/language-server-
protocol/blob/master/protocol.md)

[5]: [http://ternjs.net/](http://ternjs.net/)

~~~
wsc981

      I have high hopes for JetBrains, and possibly MS, making their IDE 
      "engines" available for integration with third-party editors, ...
    

I am not sure if the project is backed in any official capacity by Microsoft,
but isn't Omnisharp[0] more or less the same idea?

\---

[0]: [http://www.omnisharp.net](http://www.omnisharp.net)

~~~
numo16
Not sure if it still does, but I'm pretty sure omnisharp is what VS Code used
for it's C# engine when it first came out

------
Overtonwindow
I'm not a programmer, please forgive me, but I love using Sublime as a writing
tool for legislation and public policy in my work. The color coding system
popular in programming, has been invaluable in drafting legislation...

~~~
rsoto
I'm curious about your use case, care to elaborate a bit more?

That color coding system you mention is for code syntax, so I'm picturing that
Sublime for a text document might highlight seemingly random words used in
coding (function, end, do, etc), and it doesn't seem so useful. So I'm
geninuely curious.

~~~
Veratyr
The highlighting can be customised to do pretty much anything you want. I
imagine OP does something like highlighting "should" a different colour to
"must" and things like that.

I too am curious about details though.

------
spapas82
Notepad++ for python / javascript development for more than 7 years (hint: I
use MS windows for my development environment). IntelliJ Idea for Java.

I have tried to replace Notepad++ over the years with nearly every other
possible editor/IDE that runs on windows (vim, atom, VS code, sublime text)
but always found Notepad++ a much better solution for my needs. Some of its
strong points:

\- Really fast with a very small memory footprint. Written in C++ !

\- Free (GPL)

\- Supported from its author for lots of years

\- Nice syntax highlighting

\- Cool integration with Windows File Explorer

\- All editing options I want are there and easily configurable (tabs to
spaces, strip trailing space etc)

\- Allows comparing files (diff)

\- Tail -f mode for logs (monitoring changes to files)

\- Correct and easy conversion to encoding formats (utf-8, to ansi etc)

\- Supports macros

\- Fully configurable styles

\- Great find and replace (supports regexes)

\- Supports workspaces and projects

\- It has some great plugins like:

\- Integrated file explorer through plugin

\- Ftp (sftp etc) browsing / editing through plugin

\- XML pretty print, linting etc

\- Python console scripting

\- Zen coding

Ok some of its weak points are:

\- No real auto-complete so it's difficult to be used with Java (of course
that's the case with most editors)

\- Supports only windows (however I am using it _also_ on my mac mini as the
default editor through wine)

\- Not very good marketing - Notepad++ is really great but I rarely see it
discussed or trending as I was seeing atom or VS code

\- Cannot open (very) big files (it handles files ~ 200 MB without problems
though).

------
pmontra
I moved to emacs from vi in the early 90s and stayed there, a little because
of habit and a little because of convenience.

It works with every language. It has integrations with compilers and
debuggers, but I've not been using them since I stopped using C. However I'm
using the integration with Ruby's rspec to run tests on single methods from
within the editor.

Emacs can complete text in several ways and I'm using the most vanilla one
(pabbrev-mode [1]) which is still incredibly useful. It has syntax coloring. I
also used to write my own macros in elisp but I'm not doing that anymore.

I'm using the customer mandated Java IDE when I work with Java. I didn't
investigate if there is a modern emacs equivalent of Netbeans/IntelliJ/Eclipse
but it would be impossible to develop in Java with plain Emacs. There must be
something broken in Java if we need an IDE to work with it. I could be using
PyCharm in a project for a customer (they offered to give me a license) but
there is no need for that. All I need is pabbrev.

I'm using vim to edit files on servers or quick edits of configuration files
with sudo.

[1]
[https://www.emacswiki.org/emacs/PredictiveAbbreviation](https://www.emacswiki.org/emacs/PredictiveAbbreviation)

------
onion2k
Switched from Sublime Text 2 to VS Code at the start of the year. So far it's
great apart from some annoying linting problems (eslint gets confused between
ES6 with decorators and TypeScript).

------
sssilver
I'm pretty adept at Vim, and I still don't understand people who code using
what's essentially a text editor with colors.

How do you do debugging? Conditional breakpoints? Call stack/view stack?
Watch? Step/Continue? Meaningful autocompletion? Meaningful project management
and navigation? Syntax highlighting isn't even important to me and I prefer
either semantic highlighting or no highlighting at all.

I understand people who use something like a Vim plugin for a JetBrains IDE,
sure -- Vim in my opinion is a superior editor compared to the usual thing,
but when you skip the IDE altogether, how do you do the tasks I mentioned
above? Do you just do print debugging and use the filesystem as a project
manager, and just not take advantage of IDE's semantic insight into your code?
That seems quite inefficient -- you're losing a lot. Do you add third party
addons to make some of these things happen? Because I'm yet to find addons for
Vim that don't destabilize it and also solve their problem as well as they're
solved in full-blown IDEs.

Please illuminate me, considering the number of people who do this, I must be
missing something!

~~~
majewsky
> How do you do debugging?

I read the code and follow the state transformations in my head. The huge
advantage is that this also works with software running in production, when
all I can do is crank up the log level.

When I have access to the code and the compile-test-run cycle is quick enough,
I speed up the process with printf debugging.

> Meaningful autocompletion?

I have a second screen where I can browse API documentation.

> Meaningful project management and navigation?

[https://www.gnu.org/software/coreutils/coreutils.html](https://www.gnu.org/software/coreutils/coreutils.html)

\----

I don't know; maybe I'm just good at what I do. I _have_ noticed that I can
hold much more state in my short-term memory than other developers around me,
and that helps enormously during debugging. The most important part of
debugging is forming a mental model of what is going on. For some applications
and subsystems that I wrote (between 100 and 10,000 LOC) my mental model is so
fine-grained that when a user reports an error, I know which line of code is
broken before I even cd into the source tree.

It should be noted that I'm not ignorant of IDEs. I have done a lot of work in
Visual Studio some 10 years ago, and I liked it very much. When I moved to
Linux, I switched to a text editor and gcc because these were readily
accessible, whereas choosing and learning an IDE would have required
additional effort.

Over the years, I've never found that effort worthwhile. I _have_ used gdb a
few times, and had some good times hunting memory management bugs in my C++
programs with Valgrind.

Instead, I've come to appreciate that on every system that I ever SSH into,
vim is always just a package installation and (optionally) a git-clone of my
vimrc away. And if shit hits the fan, vi(1) will do. And if shit _really_ hits
the fan, sed(1) will do.

Oh, I just remember that I had a relatively recent experience with IDEs: I had
to use Java and Spring Boot for a university project, and was forced to use
Eclipse because I could not get shit to build otherwise. It felt like being
strapped in a straight-jacket, compared to the seemingly infinite freedom that
a command prompt on a terminal has come to mean to me.

I have two IDE-like features in my vim: Syntastic (a plugin that runs syntax
checkers and linters and shows the errors and warnings in-line) and a tiny
vimscript that runs gofmt/goimports when I save a Golang file. My other
plugins are all focused on more comfortable text editing.

\----

I don't intend to hate on IDE users. If they can work better with an IDE, then
that's great. I'm more productive without them.

\----

Sometimes I snicker when someone on HN complains that Rust is totally
unuseable because there is no stable IDE support yet, or something like that.
And I'm sitting here and writing syntax highlighting rules in vimscript for
DSLs that I just made up.

EDIT: One more thing. The choice of languages and frameworks shapes the choice
of editor. I would never try to develop a Java project in vim, and working on
Rails apps leaves much desired. (I could try to find a good IDE plugin for vim
for the language in question, but I'm changing languages very frequently and
don't want a bazillion IDE plugins clogging the editor.)

And of course, the same applies in reverse. Because I'm a vim user, I will
prefer languages that play well with vim. Right now, my most-used languages
are Golang and shell script and YAML (if that even counts), and these all work
nicely.

~~~
jawilson2
Do you do work where you have to inspect large data arrays? The ability to
pause execution (say, training a neural net on billions of rows of data) and
inspect what the weights and biases are doing over several iterations is
invaluable, and much easier to understand than running->printing/logging.
Especially if it takes a significant amount of time to hit that point of the
code. If there is a problem, I can work with the processed data, and make
changes live, rather than edit code, run it, wait for 30 minutes, and hope it
works, since it can take several iterations.

------
jstewartmobile
_tmux + vim_ on the server because it's there and does what I need it to do.

 _sublime text_ on the desktop for easier clipboard managment and motion keys
that are consistent with the environment

------
evaneykelen
I will be laughed at for admitting this but I'm still using TextMate
(2.0-rc.4) for my main profession which is Ruby on Rails development. TM2 is
fast, stable, extensible, native and lightweight.

------
marxama
* Visual Studio + Resharper for C#. Don't really think there are any realistic alternatives, although I'd be happy to try some out, my current setup tends to get slow.

* Visual Studio Code for JavaScript/TypeScript and React. I tried Sublime and Atom, didn't quite like them, haven't had any issues with VSCode since I started using it about a year ago. But I wouldn't be able to tell you why I like it better than the alternatives. I probably should.

* Eclipse + Counterclockwise for Clojure/Script. It doesn't seem to be very popular, and I've been meaning to try out Cursive and proto-REPL (and maybe actually get into Emacs), but I've been using Counterclockwise for years and I really like it. The Clojure data structure editing functionality is really neat, and I don't remember seeing its flavour of it in other editors. But like I said, I don't have that much experience with other editors.

~~~
actsasbuffoon
Jetbrains (makers of Resharper) are making a C# IDE called Rider. It's free
while in early access. I like it, but confess that I never got into Visual
Studio.

It seems like a competent IDE with excellent integration of Resharper
functionality out-of-the-box. It's also multi platform, which is great if
you're not on Windows.

------
jansenv
I use Atom for frontend web dev. I don't particularly love it, honestly.

I used Webstorm from Intellij when I was doing pure JS work. Loved it.

I'm considering going the full Intellij suite, but the cost is prohibitive.

------
Apsion
StackOverflow has an extensive survey which includes which IDE used. (no
details given as to why) [http://stackoverflow.com/research/developer-
survey-2016](http://stackoverflow.com/research/developer-survey-2016)

I though it was weird to see Notepad++ at the top so I ran my own survey.
[https://codepilot.ai/editor-survey-thanks/](https://codepilot.ai/editor-
survey-thanks/)

~~~
Apsion
I use IntelliJ IDEA because that is what I used at work.

------
cafard
Emacs for many purposes, but largely Perl and Python. SQL Developer for Oracle
work. SQLServer Management Studio for SQLServer work. VisualStudio for VB.NET
and C#.

------
kyriakos
PHPStorm - its by far the best IDE for PHP. Over the years I tried: Eclipse
PDT, NetBeans, Zend Studio but PHPStorm beats the competition in every
respect.

------
axle_512
JetBrains based editors are quite nice if you can afford it. Free for students
and open-source developers.

PyCharm for python, IntelliJ for java, Cursive for clojure

~~~
swalsh
At the end of the day, easy debugging is my #1 concern when choosing an
editor. Intellisense a pretty close #2.

I just wish I didn't need a completely separate editor for each language.
Right now I regularly use PyCharm, PHP Storm, Ruby Mine. I guess I also use
ReSharper a lot, but that's slightly different :D

~~~
tomtheengineer
You actually don't need a separate editor for most of the languages (minus C++
with CLion). It's not entirely obvious, but if you use IntelliJ IDEA, there
are plugins for the other languages that provide the equivalent functionality
of PyCharm, Ruby Mine, etc:
[https://plugins.jetbrains.com/idea/plugin/631-python](https://plugins.jetbrains.com/idea/plugin/631-python)
[https://plugins.jetbrains.com/idea/plugin/1293-ruby](https://plugins.jetbrains.com/idea/plugin/1293-ruby)
[https://plugins.jetbrains.com/idea/plugin/6610-php](https://plugins.jetbrains.com/idea/plugin/6610-php)

------
falcolas
I must admit, I am a bit surprised to see "easy to learn" as an answer to
"why" in so many recommendations. I would think that after a week (or a month
in extreme cases) the value of "easy to learn" would quickly approach 0.

I value my editors for their power and responsiveness, not for the frustration
spent years ago on learning them.

------
ThrustVectoring
Vim. It makes a lot of text editing way faster and easier. Like, it's to the
point where I haven't bothered getting comfortable using awk and sed for one-
off text munging, because when I want to take test suite text output and turn
it into a sorted list of test names, I can just slam it through vim for thirty
seconds instead.

------
more_original
Vim because it's burnt into muscle memory. For things like Java-programming
I'm also happy to use IDEs.

------
weaksauce
I use spacemacs for most things now. It has the extensibility of Emacs with an
actual vim emulator worth a damn for power vim users coupled with a well
thought out and integrated visual leader system. Magit is phenomenal and
changes how you view source control. Org mode is great too.

------
matmo
IntelliJ for everything. My only complaint is that when I'm writing front end
code, it has to do do more guesswork for the autocomplete suggestions, which
takes more time, so I have to purposely stop typing for a second to let it
find the suggestion I want so I can select it.

------
RandomBK
I use VSCode for front-end dev with TypeScript due to the simple out of the
box setup and snappy interface. For back-end in Java/Kotlin, I use Intellij
IDEA - I've yet to find another IDE that can provide the refactoring and
static analysis tools IDEA can provide.

------
gshakir
VIM (you need to able to touch type or else VIM will be frustrating) all the
way even for Java with support from the following plugins:

* VIM Fugitive

* VIM Surround

* VIM Closetag

* You Complete Me

* Ctrl-P

* VIM color Solarized

* NerdTree

* VIM Airline

* TERN for VIM

* VIM Javascript

* VIM JSX

* VIM DelimitMate

* VIM JS syntax

* VIM Eclim for Java

------
ivcha
Eclipse for Java / Scala / Latex / pretty much everything. Awesome and mature
IDE, performance is getting better, high degree of customization, and many
other great things.

------
ZeroClickOk
I'm forced to use VSCode. I'm in a really slow machine and Visual Studio is
really slow. I switched from 2015 to 2017, and things speedup little bit, but
I keep VS2017 open only for scafolding, publishing, etc.

I'm really in a great learning experience using C#/Asp.Net MVC 5 on VSCode.
You need learn command lines of how to build, start IISExpress, etc.

My next steps are learn how to use Nuget and EF migrations via Powershell (out
of Visual Studio), and maybe use/create scaffolding with yeoman. I dont think
will be hard... I type commands inside of VS IDE. I just need a bit more of
time :)

------
dsgriffin
Intellij IDEA for everything. The plugins for IDEA aren't far enough behind
Jetbrains more language-specific IDE's (e.g. WebStorm or PyCharm) for me to
mind much.

Plus it's nice to just have one go-to IDE for dev imo.

------
AnimalMuppet
Emacs, for everything else but Java. IntelliJ for Java.

Why Emacs? Because I've used it for 35 years, and I don't have to think about
driving it. The keystrokes are burned into my fingertips, so I don't have to
think about them. (When that lets me down and I _do_ have to think about it,
I'm often stuck.)

Why IntelliJ? Because it's like being psychic - the code just appears on the
screen, with (almost) no typing on my part. The in-context completion is
_amazingly_ good. There are other pluses, but that's the one I notice the
most.

------
widea
I have been using Boxer editor
([http://www.boxersoftware.com](http://www.boxersoftware.com)) since the DOS
version. Very user-friendly imo.

------
dhruvmittal
I tend to use vim for fortran/java/haskell/python/clojure/scala/bash/latex.

Recently I've been working in a C#/F#/.NET world with Visual Studio + the
vsvim plugin. It's a decent substitute for the most part, but I hadn't
realized how much I valued not having to wait 30 sec 4 min (depending on
project size) to load files. Also, occasionally I'm doing some plumbing work
and find myself trying to use registers and macros, which seem to be missing.

------
chippy
I sometimes power up Netbeans for one feature - it's local history feature.
Any time you save a file, it stores a little diff of the changes and has a
very nice visual diff function that works with it. The same feature works for
history stored in git or svn too.

I've not seen this replicated in any other editor as well as with this. It's
like having an embedded Meld function.

Generally though: Vim, Geany, Atom, Gedit

~~~
jawilson2
Pycharm has this as well.

------
Skunkleton
vim + shell. I bounce around a ton of different languages and platforms for my
job. It's nice to have a common set of tools for everything.

------
Rusky
Vim for Rust and C, with just the Rust syntax highlighting plugin (I have
Racer installed but don't tend to use it). It's lightweight and gets out of my
way when editing text.

Visual Studio 2015 for C++, with the VsVim addon. I mostly use C++ for
Windows-specific APIs and toolchain, so autocomplete and MSBuild are nice to
have.

------
hacker_9
Interesting Atom is first comment, I usually see it get a lot of hate.

My usual environment is Visual Studio, as I work with C# mainly.

------
MildlySerious
Pretty much exclusively Sublime. Sometimes I use vim for quick edits on the
server, but since I always have WinSCP open along with the SSH connection,
it's usually just as fast to use Sublime for remote files, too.

I do plan to get more used to vim once I move away from Windows.

------
cwbrandsma
* Visual Studio for C#

* XCode for Swift/ObjectiveC

* VSCode for other languages

* Notepad++ for text editing on Windows

* Textmate for text editing on OSX

------
neeleshs
The jetbrains family for most parts : idea for Java/scala, phpstorm for, well,
php and pycharm for Python. I like spring toolsuite which is built on top of
eclipse. On the term, it's vim and on Mac it's TextWrangler.

------
intrasight
Combination of Emacs and Visual Studio 2015. Would like to kick the tires of
Visual Studio Code - especially since there is an Emacs keybindings plugin.

Am curious if they will dump the bloated VS in the near future and focus on VS
Code.

------
burntrelish1273
Atom setup to emulate vim

apm list:
[https://gist.github.com/985407cc84afb35f45ec5d9bd74f67d5](https://gist.github.com/985407cc84afb35f45ec5d9bd74f67d5)

------
bitwize
Emacs, because Emacs. I know how to use it, extend it, and combine it with
other tools. I tried working with VS Code and Atom. I really tried. I keep
coming back to Emacs all the time.

------
tluyben2
Recently Visual Studio for Mac (which is a massively improved Xamarin Studio
it seems) because C# + Xamarin for iOS. When not for work VIM for Clojure, Lua
and others.

------
hackNightly
VSCode because the TypeScript integration is just phenomenal.

------
jbigelow76
60% - Visual Studio Pro / 40% - Visual Studio Code

Why? .NET enterprise dev is my job, hence Visual Studio Pro, those services
are fronted by SPAs, hence Visual Studio Code.

------
sashk
PyCharm for Python.

Sublime for Markdown/notes, etc.

Trying to use Visual Studio Code instead of PyCharm, but it's not yet ready to
fully replace PyCharm.

------
ttam
Android Studio for Android, because it's the best IDE for Android

Sublime for everything else because it's lightweight and no frills

------
nunez
Vim for almost everything except for C# and F#, which I prefer to use Visual
Studio (the full one).

------
eth0up
geany + vim

[https://www.geany.org/](https://www.geany.org/)

------
edoceo
Jedit or Atom, terminator, vivaldi

------
Const-me
Visual studio 2015, visual assist, a couple of specialized addons like
tangible t4 editor.

------
JustSomeNobody
Several instances of VS because I'm in enterprise abstraction hell.

------
koyote
Visual Studio with Resharper.

Anything else just does not come close for C#.

------
brilliantcode
It depends on the language I'm working with:

Python - PyCharms

Clojure - LightTable

Javascript - MS Visual Code

Java - Eclipse

PHP - Notepad++

------
fredsir
Xcode and tmux+vim.

~~~
dolguldur
I assume you're writing Swift and/or ObjC. Which vim plugins do you use for
these languages?

~~~
fredsir
Exactly what @nsfyn55 says except when I toy with "raw" swift - that is, no
Cocoa and such - I often just use tmux+vim. Of swift specifics in my vim
setup, I use the official swift vim plugin and a couple of tslime.vim mappings
for starting, stopping, testing and building swift from vim in a separate tmux
pane.

I have the tslime.vim mappings set up as autocommands with specifics for
python, rust, swift, haskell.

------
rzhikharevich
iTerm2, micro (github.com/zyedidia/micro), fish, lldb, fzf, make, etc. for C,
C++, Go and Rust. Xcode for Swift.

------
gcapell
Acme. I'm used to it.

------
bhalp1
I run the linked site (and started that thread). I'd love it if you signed up
<3

