Hacker News new | past | comments | ask | show | jobs | submit login
Vim vs. IDE's
28 points by Undertow_ on April 24, 2016 | hide | past | favorite | 40 comments
What do you use?

What are some of the benefits/drawbacks to each?

Why would I use one over the other?




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


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.


Strange I find bash + vim to be a great IDE... with coreutils I can automate and with vim I can write in the same context as everything else...

!./%


I have the same sentiment. I realized that it is not really Vim, the editor, that I want. It is modal editing.


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.


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


Go on.


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.


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.


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


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.


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.


I've never known anyone to code in nano!


Bang Bang!


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.


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.



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.


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


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/

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


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.


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


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

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.


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.


Easy to use step through debugger is the main reason I use an IDE (Eclipse based because its what I know, and doesn't as far as i am aware lead to lock in). Also I have SQLExplorer plugin for the database. I have been tempted to learn Vim or Emacs but I can't really find a good reason to spend the time learning a load of obscure keyboard commands for everything when my IDE appears to do all of those things.

I would welcome opinions on what I am missing out on going the IDE route.


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.


If you find it annoying/difficult to pull in your vim config you may find VimSwitch (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


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 && cd dotfiles && ./install.py.


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.


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.


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.


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


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.


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.


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.


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.


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)?


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


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.


I use WebStorm at work.

Atom for personal projects.

GVim when I have to write something down.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: