Which editor/IDE do you use and why?
dev.to
dev.to
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/
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?---
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.
I too am curious about details though.
Are there any plugins / modes for writing structured natural language text that you use? How do they help? What's missing?
Further legislative text has a lot of resemblance to code.
[1] www.openlawlib.org
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).
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.
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.
> Meaningful project management and navigation?
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.
sublime text on the desktop for easier clipboard managment and motion keys that are consistent with the environment
* 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.
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.
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.
I though it was weird to see Notepad++ at the top so I ran my own survey. https://codepilot.ai/editor-survey-thanks/
PyCharm for python, IntelliJ for java, Cursive for clojure
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
Wait... there are other IDEs?
I value my editors for their power and responsiveness, not for the frustration spent years ago on learning them.
* 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
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 :)
Plus it's nice to just have one go-to IDE for dev imo.
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.
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'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
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.
My usual environment is Visual Studio, as I work with C# mainly.
I do plan to get more used to vim once I move away from Windows.
* XCode for Swift/ObjectiveC
* VSCode for other languages
* Notepad++ for text editing on Windows
* Textmate for text editing on OSX
Am curious if they will dump the bloated VS in the near future and focus on VS Code.
apm list: https://gist.github.com/985407cc84afb35f45ec5d9bd74f67d5
Why? .NET enterprise dev is my job, hence Visual Studio Pro, those services are fronted by SPAs, hence Visual Studio Code.
Sublime for Markdown/notes, etc.
Trying to use Visual Studio Code instead of PyCharm, but it's not yet ready to fully replace PyCharm.
Sublime for everything else because it's lightweight and no frills
Anything else just does not come close for C#.
Python - PyCharms
Clojure - LightTable
Javascript - MS Visual Code
Java - Eclipse
PHP - Notepad++
I have the tslime.vim mappings set up as autocommands with specifics for python, rust, swift, haskell.