Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Former longtime emacs (and previous to that, vi) user here.

vi and emacs seem like magic if you're coming from something like SublimeText. Compared to modern IDEs like VisualStudio or IntelliJ products, however - not so much.

vi users tout the rapid text editing features, but you can generate and navigate code just as fast with an IDE - out of the box - no configuration incantations or third party packages required.

Until very recently (early to mid-2000s), IDEs for open source web frameworks were non-existent, unaffordable, or slow. Once you have a working vi or emacs setup, there's a lot of inertia in place that discourages switching.

That explains the continued popularity of vi, imo.



> vi users tout the rapid text editing features, but you can generate and navigate code just as fast with an IDE - out of the box - no configuration incantations or third party packages required.

You can navigate code and you benefit from powerful autocompletion (well, depending on your language, because it may quickly degrade to "laughable" with something a bit dynamic). However, the pure text editing experience with vanilla Eclipse/VS is rubbish compared to Vim. In addition, there are languages for which IDE-based code generation/autocompletion is not that interesting due to the language being a lot more compact. And with something like syntastic + the right language plugin, a strongly-typed language gets syntax checking, a description of the type of a variable, and possibly autocompletion. I use both Eclipse (with a Vim plugin) and the real Vim, and it feels much nicer not have to deal with the resource and mental overhead of a full-blown IDE. I think the only feature I really miss when working OCaml/Merlin in Vim is being able to get a list of call sites of a given function in the current project.


This. Java with a great IDE is like a half-assed Smalltalk environment (with the notable exception that editing Smalltalk as text is trivially simple compared to java). Java+IDE gives you a kinda-sorta-macros (were macros are defined as code that write code - only the IDEs use some form of simplistic text-replacement code-generating stuff, not true macros), and kinda-sorta "smart" code (but you're not actually modifying objects in memory via a text view, like Smalltalk).

So the IDEs make it feasible to manage all the poor horizontal "abstractions" (complections, really) with all the different files and paths and whatnot. But they're much inferior to vi(m) for editing text.

Granted, if you don't do much text editing (writing, modifying, moving lines around) - the work you actually do do ("programming") - won't benefit much from a great text editor.

I used vim for small java projects before inner classes (massive spill of code/classes across files and folders) -- and it was pretty painful. When I changed to use Literate Programming - and could easily work on one file, letting the system generate the arbitrary structure java needed -- things went much more smoothly.

So, yes, YMMV - but if what you do is write/edit stuff that fits in a sane text format, a great editor is a great help. If what you're doing is composing objects from a large standard library of objects, you probably want an object editor like a visual, image-storage (as in vm image) based system like Smalltalk.


You can easily have that if someone builds a starter kit specific to your workflow with all necessary packages. But then, when you want things your way, at least Emacs allows you; for Eclipse, better use the default one. Maybe you are not up to date but Emacs has features like code navigation/completion for many languages. Emacs's file navigation is superb that I could not find elsewhere: http://tuhdo.github.io/helm-projectile.html

See all my guides for more demos: http://tuhdo.github.io/


> Compared to modern IDEs like VisualStudio or IntelliJ products, however - not so much.

Those IDEs only work on some languages, and force you into their workflow. Emacs and vi are both more all-encompassing and less restrictive.


That's true.

However all the major languages and frameworks are covered by IDEs, and the workflows they enforce are good enough for 99% of developers.

Programmers who are working in a fringe language or who need a specific workflow - vi and emacs are great options - but these days it's a disservice to recommend those out of the gate to a new developer.


This is just wrong. Eclipse is an IDE to some languages that it supports, but an average editor to everything else. Have you tried editing configuration files, shell scripts or patch files in it. Eclipse or similar things are terrible when you work in multi-language environment. And look at my other answer that has many demos to see many things your IDE has not yet satisfied me.


I use JetBrains products, so I can't speak to Eclipse.

I edit shell scripts, config files, and a host of other non-.rb files all the time in RubyMine, for example. Many of the features, particularly the code navigation, that you demo on your site are available in JetBrains IDEs.

(ps: your demos are awesome - great resource.)

It looks like you do a lot of C/C++ systems programming. That's one area where I would recommend trying emacs or vi before an IDE. The language and editors have grown together over 30+ years. That's not the case for things like Rails and Java.


> I edit shell scripts, config files, and a host of other non-.rb files all the time in RubyMine, for example. Many of the features, particularly the code navigation, that you demo on your site are available in JetBrains IDEs.

Is it available for shell scripts? When I write shell scripts in Emacs, press TAB and it shows me a list of available shell commands in my editing file. You can also jump around function/variable definitions in your shell scripts.

> (ps: your demos are awesome - great resource.)

Thanks :)

> That's one area where I would recommend trying emacs or vi before an IDE

Well, Emacs is also an IDE of its own language, Emacs Lisp. You have code navigation/completion, functional debugger, profiler and byte compiler all it one. Emacs is not merely an editor, it's an environment for people write programs to run in it. That's why you see IDE features in the demos I posted there. And those demos shows that Emacs also evolves itself over 30 years.

And for dynamic language, Cider for Clojure https://github.com/clojure-emacs/cider can compete with any Clojure IDE. In fact, I don't see anything better.


> Is it available for shell scripts?

Tab complete and jump to definitions are available in shell scripts.

> Well, Emacs is also an IDE of its own language, Emacs Lisp.

IntelliJ is too :) although I will say that I'd rather write editor extensions in Lisp over Java.

I also used to think only emacs had this stuff but since switching to JetBrains IDEs a couple years ago, I've been pleasantly surprised.


Yeah, the learning curve is steep. Also, if you're using a common productivity setup like vim + iTerm2 + tmux + zsh, it takes way too long IMO to both figure out how they work together and configure them (with both plugins and editing config files—do I use Pathogen? Or do I use vundle? Should I dive into oh-my-zsh, or prezto?). But once you do get it set up...wheeee! You can really be efficient in ways that just aren't possible with non-modal, not-in-the-terminal editors.

I hope Neovim is a pathway out of that, and makes configuration a breeze.


IDEs are great for development. All they need now is decent editors.


The VsVim plugin for Visual Studio gives you the best of both worlds! https://github.com/jaredpar/VsVim/


I second that. I'm so used to VI that I literally felt like a fish out of water when editing code with 'vanilla' Visual Studio. VsVim has saved my butt; I'd be lost without VsVim.

Now, with VsVim, I get the best of both worlds: IDE functionalities like refactoring, and excellent code completion, and the familiar VI key-bindings to edit the code.




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

Search: