What are some of the benefits/drawbacks to each?
Why would I use one over the other?
However, I feel like the thing holding me back from leaving vim is its customization. I like to work with multiple vim and tmux splits side by side, e.g. dev server output on one tmux split, with vim splits inside another tmux split looking at the server code.
Most IDEs I've tried more or less force a workspace layout on me, and might make it hard to achieve something like that. However, I can see that, depending on your preferences and area of work it can be a reasonable trade-off.
!./%
* Visual highlighting for mistyping an import statement
* Code hints
* One-click navigation to where a method is defined
* Easy refactor
To illustrate what a time saver this is, it seems weekly some other engineer ask me to help them troubleshoot code that just isn't working. They've spent hours trying to troubleshoot it. I've not worked on this particularly code, in fact they have been working in the codebase twice as long as I have so they should know more than I.
We have the meeting where for the first few minutes I look at the code on their computer in VIM. I then load up their branch in IntelliJ. Quarter of the time we see a red squiggly line indicating a typo of some sort. Then the rest of the time, I'm able to navigate through several layers of code to find what is going on underneath in a matter of minutes.
I can remotely edit files with vim. I can edit them locally. I can edit my emails in vim. I can get completion, formatting, documentation, linting, build errors, tags for dozens of languages. If even edits my tmux status line. It handles my todo lists. It does most things poorly (except text editing - text objects are awesome) but it does them all. I suspect the only real alternative is emacs.
If I worked on the same platform in the same programming languages doing the same things every day it would almost certainly be better to use the best available IDE for those exact requirements. I suspect the more complicated boilerplate heavy OO languages and systems with big complicated frameworks probably benefit most from a sophisticated IDE.
If you have a career spanning decades and swap between platforms and either side of the devops line then sometimes it pays to learn tools with longevity and more general applicability. I don't think it is necessary to use vim exclusively but I think there are benefits to being able to use it competently for tasks where an IDE is less suitable.
An IDE feels like I'm learning to use a piece of software. It doesn't interest me to become a Eclipse/VisualStudio/etc. expert. I'm most comfortable in front of the command prompt. I like to write my own tools and play around with utilities. If I didn't enjoy that, an IDE would be very compelling.
Except this I use Vim/shell because IDEs usually are so messy, I must look for stuff, use mouse and so much stuff happens implicitly. Probably it's convenient for someone who doesn't memorize well, but I do. :)
I use it remote and everything shell related.
If I program something bigger I like sublime.
And if it a project with several hundred files I use ides. Here I'm not really settled. Everything. NET related i use visual Studio. In my opinion nothing beats it. If I could I would use it for everything else. From php to Javascript to ruby. But that costs a bunch of money.
I took a while to learn, but totally worth it.
I do all my work in IntelliJ and Visual Studio but I found a few useful tools like VsVim which emulates all the keys in VS, there is also the IntelliJ plugin which brings Vim into the IDE.
Then you got the best of both worlds, I have to admit it's not the same as running Vim from a terminal but it's very close.
Other than that, if I had to write something in a dynamic language, I'd still prefer Vim with a few useful plugins.
I really tried hard to emulate an IDE inside Vim but that was a lost cause.
Eclipse just needs to be taken out and shot.
However, I've felt for a long time that most modern GUI based applications and windowing systems lack a truly comprehensive and slick way to navigate using the keyboard. And let's face it, that's what "power users" like about vim and the command line in general.
There are lots of keyboard short cuts for Eclipse, Visual Studio, and pretty much most popular GUI applications - the shortcuts just suck or are poorly documented - or both.
I find navigating with a mouse or trackpad to be cumbersome, slow, and inexact. A well though out keyboard based UI would be a welcome addition.
Granted, I am not yet a hardcore Vim user, so I've been trying to get there via using the IdeaVim[1] plugin with whatever JetBrains IDE I happen to be working in. It seems like the best compromise presently.
I may be working in Visual Studio soon, so VS + Resharper + VsVim should be interesting.
I really miss my home environment when I am editing code, but thinking of navigating such a huge pascal codebase makes me think twice.
Put me on the list of developers who haven't actually used/don't like VIM. I find the key bindings too time consuming to setup for my one-off bash scripts. For that, I use Nano. Works for me...
IDEs helps new engineers by postponing having to learn high productivity command line tools like Bash and Git.
I see this all the time with new engineers (read: bootcamp graduates) and it is expensive having to educate new employees about the context in which their IDE operates (whether that's locally, test, staging or production).
The IDE's value-add also becomes more questionable when developing on more than one part of the stack (e.g. client + server-side code).
There are also costs to vendor lock-in--no one should have to use your IDE to be able to contribute to your software. The IDE licensing business is a racket as evidenced by the JetBrains incident:
https://news.ycombinator.com/item?id=10170089
I think it's a good exercise to remind yourself: "what do I need beyond syntax-highlighting?" IMO, most IDE features are low value-add and do not increase productivity.
Bootcamp people seem to mostly use Atom - which isn't really an IDE in my mind. In my opinion, a core feature of an IDE is static analysis.
I would welcome opinions on what I am missing out on going the IDE route.
wget https://bit.ly/vimswitch && chmod +x vimswitch
./vimswitch priomsrb
This gives me my vim config along with all my plugins.Disclaimer: I am the developer of VimSwitch
For languages I'm comfortable in, IDEs all the way. I'm particular to the JetBrains suite (RubyMine, IntelliJ, PyCharm, etc). I like the consistency across the different products, and for multi-language projects (i.e. my current project involves Rails apps, Java/Spring microservices, and lots of ReactJS) IntelliJ Ultimate is unbelievably awesome for my productivity.
I use ne (NiceEditor) for all the "on-the-fly" editing where I just need to change simple stuff.
Atom for personal projects.
GVim when I have to write something down.