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.
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...
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.
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.
How prevalent is the use of non-Word tools in drafting legislation? At Open Law Library[1], we're building a linter for legislation drafting as a Word plugin under the assumption that most drafting is done in Word. Would love to learn more about your process (vchuang at openlawlib dot org).
I've started writing a novel in Sublime using Markdown syntax with a spell check plugin and word wrap. Not sure if you're doing something different for legislation, but I imagine that setup would work pretty well for documents with lots of sections, bullet points, etc.
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).
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.
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).
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!
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.
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.
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.
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.
* 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.
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.
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#.
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.
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
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.
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.
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.
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.
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.
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.
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 :)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
I'm gonna bet comment author says they use Xcode for Swift/Objc and Vim/Tmux for everything else. I just came off a small Swift project. Apple makes it difficult to code for their products outside of XCode.
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
[2]: https://commercialhaskell.github.io/intero/
[3]: https://github.com/haskell/haskell-ide-engine
[4]: https://github.com/Microsoft/language-server-protocol/blob/m...
[5]: http://ternjs.net/