
Vim vs. IDE's - Undertow_
What do you use?<p>What are some of the benefits&#x2F;drawbacks to each?<p>Why would I use one over the other?
======
iyn
I used to use vim for everything - from writing simple notes and todos to bash
script to complex web applications. I had (well, I still have) configured
different set of plugins, huge .vimrc etc. But year ago I decided to try using
IDEs again and honestly, I don't look back. Currently I'm using Atom (people
complain about it being slow, but I have powerful machine and honestly speed
is not an issue) and PyCharm. For me it's just more productive and everything
works out of the box. BUT: I'm still using vim keybindings/shortcuts in Atom,
PyCharm and even Chrome
([https://chrome.google.com/webstore/detail/vimium/dbepggeogba...](https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en)).
For me, vim is a powerful language for text/code operations and movement but
I'm not so sure it works so well as a IDE (emphasize on Integrated; I had it
configured with a lot of IDE-like features, but it was hacky and it took a
long time to achieve 10% of what IDE gives you from the start).

~~~
cpjk
I currently use vim for everything as you once did, with plugins for
everything, and a large .vimrc. I started using Intellij with vim bindings for
school Java projects and I liked the utility it provided.

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.

------
bobbytherobot
I use IntelliJ. The biggest reason is because static analysis is a core
feature. This core feature is a huge time saver when dealing with a large
codebase.

* 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.

~~~
fhtagn
And, Jetbrain's IDEs have a great VIM mode. Best of both worlds.

~~~
aryamaan
Go on.

------
shirro
There is nearly always a better solution to vim for any specific task but
hardly ever for more general cases.

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.

------
betenoire
It's 100% preference. I prefer Vim.

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.

------
lew89
I find Vim+shell the best IDE i could have. Mates at work are usually
surprised that I code in Java using it, but even they admit that it works for
me. To be honest, most of needed features can be quite easily implemented
using basic tools, only debugging is a little problem, but I'm already working
on it. Honestly I like that I implement it myself, I've got time for it at
work, I can learn many interesting things, make everything extremely
customized.

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. :)

------
Bombthecat
I like nano and now please kill me :)

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.

~~~
neppo
Visual studio has the vsvim plugin for vim emulation - for me it was quite a
changing experience.

I took a while to learn, but totally worth it.

------
Aij7eFae
I'm a Java and a C# dev, Scala when I feel adventures or when I'm drunk.

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.

------
cpncrunch
I always use vim, except where I'm forced otherwise. Any time I have to use
xcode it is generally a frustrating experience. While interface builder is
certainly a time saver, it has to be balanced against the hassle of random
quirkiness of xcode whenever it decides to give you some kind of weird error
due to a bug in xcode, and you have to go to stackoverflow to figure out the
resolution.

Eclipse just needs to be taken out and shot.

~~~
sprobertson
You might like XVim:
[https://github.com/XVimProject/XVim](https://github.com/XVimProject/XVim)

------
rplst8
For 99% of the coding I do, I use an IDE which is usually Eclipse. Though I
like IntelliJ more, I just don't have the resources to pay for it where I
work. That said, I do drop to vim for many things, mostly editing conf and
properties files, stuff where the advantages of an IDE don't really play.

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.

~~~
cyphar
I'd recommend i3 if you want a window manager that you can navigate with just
the keyboard. I only ever have two things open in my i3 setup: a browser and a
terminal. I might have VLC open if I want to watch a movie while working, but
that's all I need and you can navigate everything with the keyboard (I use
vimperator).

------
rl3
Spacemacs[0] is neat, but I found myself longing for a full-fledged IDE again.
It's very extensible however (and so is Vim).

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.

[0] [http://spacemacs.org/](http://spacemacs.org/)

[1]
[https://github.com/JetBrains/ideavim](https://github.com/JetBrains/ideavim)

~~~
Johnny_Brahms
Well, I have used IDEs for a big part of my life, but for all my personal
projects I tend to end up in (spac)emacs. My personal projects are all written
in scheme, and that is probably a big reason why. For work we have a
freepascal code base that is a couple of million lines. My biggest personal
project is about 20k lines of chicken scheme.

I really miss my home environment when I am editing code, but thinking of
navigating such a huge pascal codebase makes me think twice.

------
quantum_nerd
I moved from Atom to VS Code for Ruby programming. My machine isn't the
fastest around and VS Code has improved my productivity significantly after
switching from slow Atom. Before then, I used Eclipse for Java/C++. I
definitely miss the real-time static analysis, ease of refactoring, and other
cool features that come with an IDE.

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...

------
mslate
In my experience an IDE becomes a crutch for beginners to programming (and I
reserve my right to change my opinion).

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](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.

~~~
bobbytherobot
This is weird, because half of the engineers I know with more than 10 years
use an IDE with the most popular being IntelliJ.

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.

------
sonicallison
I used vim daily for 15 years and I recently switched over to Atom. The reason
was that I felt like I was handcuffed to my custom vim configuration. My
ability to write code quickly was coupled to my editor configuration. Even vim
bindings weren't enough in other editors due to the muscle memory of the
custom bindings I'd built up over the years. Within a couple of weeks I was
comfortable in Atom. I still miss some of the conveniences, but ultimately I
like being able to pick up and start developing anywhere - without pulling in
my dotfiles first.

~~~
priomsrb
If you find it annoying/difficult to pull in your vim config you may find
VimSwitch ([http://vimswitch.org](http://vimswitch.org)) helpful. For example,
when I start using a new machine I type:

    
    
      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

~~~
cyphar
I don't see how that's shorter than using my dotfiles repo. Plus my dotfiles
repo also has my zsh, window manager, tmux and terminal configs: % git clone
--recursive
[https://github.com/cyphar/dotfiles.git](https://github.com/cyphar/dotfiles.git)
&& cd dotfiles && ./install.py.

------
1_800_UNICORN
For a language I'm getting spun up on, I use a plain text editor like
TextMate. I like to know everything that happens to my code from when it's
written until it's compiled/run.

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.

------
cyphar
I use Neovim, just because it works for everything and I can replicate my
setup anywhere with a git-pull and ./setup.py. The real benefit of vi-like
text editors is that they solve all cases where you need to edit text. They're
as good for composing emails as they are for writing code. All IDEs have
always fallen short for me in the general case, and I don't like having
different editors for different types of text, vim works for everything I need
and I can use the same bindings no matter what the text type is.

------
vortico
In my opinion, text editing should be done in a GUI instead of in the
terminal, so I've used Sublime Text for years. I recently switched to Atom
since it's finally tolerable to run on my laptop performance-wise. gvim and
emacs gui don't really work for me since they're too complicated to install
and develop plugins.

------
nemik
Vim for everything (C, Python, JS/HTML/CSS, etc etc) except Android
development, I use Android Studio for that.

------
Raed667
I use IDEs for all complex projects where I import stuff from different files
and packages, intelligent autocomplete and common git workflow are seamlessly
integrated. (I think of Netbeans and IntelliJ)

I use ne (NiceEditor) for all the "on-the-fly" editing where I just need to
change simple stuff.

------
icdxpresso
I'm a Java developer and couldn't imagine doing 100% of coding in just a text
editor. I installed a Vim plugin for Eclipse to get the functionality and
tools of an IDE while having the text editing capabilities of Vim. Its working
out pretty well so far.

------
BlackjackCF
I use Vim for everything except for Java development. Java apps are just often
so heavy that I have to use IntelliJ. It makes it a lot easier to handle
refactoring, etc. However, I do use IntelliJ with Vim bindings.

------
horsecaptin
I have used vim for many years. I started using Atom and after giving it a
couple of days, I have been using Atom exclusively for anything more than the
one off script.

~~~
srd
As a die hard vim user I have to ask: Could you elaborate on your decision?
What made Atom more appealing to you, what are the features it has that vim
doesn't have (or does have, but more not as easily employable)?

------
trungonnews
I favor IDE because I want to be productive out of the box. My time is better
spent coding than customizing vim. This feels like another iOS vs. Android
debate. :)

------
paroid
I use Vim for pure text editing,IDE for complex projects code editing also in
Vim-mode.main-stream IDEs(Visual Studio,Intellj,Eclipse) have Vim editing
feature.

------
enrmarc
I use WebStorm at work.

Atom for personal projects.

GVim when I have to write something down.

