
Ask HN: I'm done with the IDE. What's a good alternative? - djhworld
To me, the modern IDE has become so bloated these days I dread to even think about firing one open and letting it consume a horrendous amount of resources.<p>So what's the alternative? People have spoken about Vim and Emacs and all the others, but I'm not very well versed in either. I've been using Vim for quite a while to write simple scripts so I'm used to the commonly used keyboard commands, but I'm still a bit confused about how people use their preferred editor as a full blown development environment. Vim to me seems like an ever expanding series of configuration files and keyboard tricks to get something remotely powerful.<p>What I'm asking is, what is the alternative to the modern IDE? How have people managed without one? Or do we just have to except the fact that the IDE is something we can never get away from?
======
DanielBMarkham
I'm curious -- why do you care how many megabytes or CPU cycles some random
tool on your computer uses?

Just seems like such a strange thing to say. I've never, for example,
preferred one media player over another based on it's algorithmic size, or
bought a iPhone app because it used especially fewer screens.

IDEs are just big text editors with a lot of stuff tacked on. I can see,
perhaps, wanting to become VIM or EMACS master-of-the-universe, where you've
macro'ed yourself to death and the entire planet can be controlled with just a
few keystrokes, but for "regular" coding? What is it about an IDE that bugs
you?

I hope I didn't sound too critical. I'm just curious. I'll use any IDE anybody
has as long as I can type code and compile it. Add in some macros? It's all
good. Why in the heck would I want to dive deeper than that unless I had to?
Why would I care? Why would, say, Eclipse be any worse or better than EMACs?
Or VS any worse or better than Multi-Edit.

I understand there are big fans of various tools. Feel free to jump in here
and make your case. I've love to be mistaken. I just think this is like all
the hoopla over Git -- it's a tool. I shouldn't be thinking about it very
much. If I am it's not a very good tool.

~~~
spacemanaki
Depending on your machine (this obviously doesn't matter much to someone with
a beastly dev box), IDEs like Eclipse or Netbeans sometimes can't keep up with
typing speed. This isn't a brag about WPM because I'm not that fast. But the
code verification and error highlighting sometimes really slows things down
which can result in hair-pulling. The best set up I think is something like
Eclim - best of both worlds.

~~~
djhworld
This is the reason why I've developed a dislike for IDEs

What you say is correct, an IDE is just a text editor with a bunch of features
tacked on, but those features lead to the environment becoming hungry for
resources after every keyboard command you type.

It doesn't surprise me to find Eclipse using 1GB of RAM after a few hours of
development.

My main development machine right now is a Macbook laptop, so I have limited
resources in terms of RAM (2GB) and processor (2GHZ) and hate to see programs
becoming greedy

~~~
Someone
If you have 2GB of RAM, why are you worried that the program that you
basically bought and booted your computer for takes half of it?

Are you sure that it would still use 1GB if you ran a program that needed
memory harder?

~~~
dkarl
I have a Windows laptop with the same specs, and I can slow it down pretty
easily.

Chrome with thirty tabs -- switching to a tab I haven't looked at in a while
sets the disk grinding and brings everything to a halt.

When I start up Outlook, or just click on Outlook after waking up the laptop,
there's a couple minutes I can spend getting coffee, because it takes take
that long to switch to another program and start using it. (Waiting for
Outlook to finish starting up is another few minutes after that.)

Eclipse with fifty or more files open (damn these big Java frameworks) --
grind grind grind every time I switch between views, or at unexpected times
while I'm typing.

I wish I knew more about Windows, because when I look at the processes in the
Task Manager, their combined memory footprint is well under 2GB, but all my
programs become nearly unresponsive while the disk goes grind grind grind
grind grind... what the hell is that about?

Whether it's misconfiguration or some spyware crap my company installs on our
laptops (I disabled the "backup" feature that just copy files around on the
hard drive, but I'm sure there's more) it certainly helps if I keep the
resource usage of my programs down.

tl;dr: As long as people are bothered by performance problems, they'll worry
about the resource consumption of their tools.

~~~
mahmud
_Chrome with thirty tabs_

I found it very helpful to actively and violently close down tabs. 4-5 is just
about the ideal maximum. I keep a separate lightweight browser, Opera, open to
API documentation, and firefox for other stuff. For wifi, I removed the
internal one and use an external one. Whenever I need to focus, I close
firefox without saving sessions and unplug the wifi.

When I go out to cafes for reading, I leave the wifi at home.

~~~
adbge
> I keep a separate lightweight browser, Opera

Opera is not particularly lightweight, even compared with Chromium. Check out
Midori.

~~~
mahmud
That was an excellent suggestion. It _is_ more lightweight than any other
full-functional, graphic browser I have used so far.

------
jacquesm
IDE's are a nuisance, but what's a bigger problem is your typical framework
that will include a few hundred classes and a few thousand methods and
properties.

Keeping that all in your head is a serious effort, especially if you don't
work on the same project all the time.

I try very hard to stay away from IDEs and environments that require one to
function, but 'modern' looking websites and applications more or less require
the use of such frameworks.

So I find myself using the documentation probably more frequently than I
really need to, in order to simply look up the names of stuff and I probably
am not using the frameworks to their fullest potential because I can only
memorize a subsection of them.

Even a 'lightweight' framework can easily come to 100 classes.

So, my toolset: vi + my memory, but it's tough going.

~~~
enduser
One additional feature that IDEs often provide is tiling different screens
around the text editor: debugging windows, REPL, project file hierarchy.

I substitute for this with a tiling window manager (wmii) with very similar
keybindings to vim.

My toolset: my memory, vim, wmii, rxvt-unicode-256color

------
Swizec
Personally I use emacs, before that it was Kate (+shell). I only use a
miniscule subset of emacs' features and I have no intention of learning too
much.

Everything I need from a code editor is the ability to open files in tabs, to
syntax highlight any random language I use (on an average day I'll be using up
to 5+ different languages) and to understand the indentation style for all the
languages to ease indentation. Perhaps some bracket matching and that's pretty
much it.

But what I seriously, seriously cannot live without is a HUGELY HUGE area for
code. The biggest thing I hate in IDE's is that they tack on so many features
and toolbars and crap that at the end I'm left with this tiny code editor that
leaves me feeling horribly claustrophobic. Sure, I could close all those
toolbars, but then why am I wasting resources on them in the first place?

Another thing I hate about IDE's is how egocentric they are. I don't like
conforming to some IDE's idea of what my project structure should look like.
And I certainly don't like it when they get horribly confused if I move a file
through a normal interface instead of the IDE.

As for "keeping the project in my head" that some people mention as a problem
when not using an IDE ... I've never found an IDE particularly helpful in that
regard. I've actually never found any added value that an IDE would provide
...

~~~
Roboprog
Boy, you said it there: "do it _my_ way", as well as the "wait (long) while I
start up" that IDEs are so guilty of.

That said, sometimes I use NetBeans (and sometimes I don't). I was using
Eclipse for a few years, but I got so tired of the setup and wait. Of course,
there is probably a newer, less sucky, version of Eclipse now, who knows.

NetBeans is fast enough on my netbook (Atom, 1.6 GHz w/ 1 GB RAM) for most
little projects I tinker with (at least under Linux), and likewise on
employer's workstation with real stuff (even using the mandated Windoze). The
edit window is mostly responsive soon after start, though it may take a minute
for rescan to finish so docs, jump-to-def and autocomplete to be available.

Also, I like that you can undock the edit window in Netbeans, putting it in
its own relatively large stand-alone window. Throw in the "vi" plugin, and get
to work, referencing the other window full of, um, crap, only when you really
need it. I guess I shouldn't call the integrated debugger "crap", but much of
the other stuff is :-)

I have some screen shots on my website of several file types, where I have
undocked the editor and hierarchy widget. Playable for me, YMMV.
<http://roboprogs.com/devel/2009.09.html>

Also, its easy enough to create a project with "external" (existing) sources,
rather than the IDE-p0wned build process. I usually end up creating _one_ (1)
IDE project for a given source base, then checking out source for multiple
branches and then either resetting a sym-link (*nix file systems) or renaming
(MS-brain-death) the top level directory for the branch-of-the-day.

------
phamilton
I'm in a CS class right now and I'm amazed at how useless so many kids are
without an IDE.

When I first started taking classes, I tried using eclipse. I decided rather
quickly that, especially in a classroom setting, IDEs were a crutch and if I
wanted to become a good programmer they would do more damage than good. (Note
I said good. That may or may not be the same as productive.) So I started
learning vim. Now I can't use most environments. I use Xcode for iphone
development, but otherwise I'm just too programmed for vi. I need my commands
and macros. GDB works great once you learn it. Valgrind works great as well.
And these are available on any *nix machine, all over an ssh connection.

We just had a programming exam where they give you three hours on an isolated
machine to build a fairly simple program in C++. Most of the questions and
problems people had were that their IDE of choice wasn't working for some
reason. Meanwhile, using vim/gdb/valgrind I was done in an hour, long before
anyone else.

~~~
araneae
Blah blah blah I'm so much better than my classmates blah blah blah.

~~~
alsocasey
news.ycombinator.com/circlejerk

------
rbanffy
I think it all depends on what language/platform/framework you are working
with. So far, Emacs has proven a joy to work with Django projects. I started
using it on my move over to a netbook, because the screen real-estate is
precious when I'm out of the office (and far from the big monitor). I went on
and discovered elisp, made a couple customizations on how the editor starts,
added a couple key bindings and so on.

OTOH, I can't use it with Google AppEngine projects because the way GAE takes
over stdin/stdout, which prevents me from starting pdb/ipdb. For GAE work, I
am stuck with Eclipse and Pydev. For me, the biggest nuisance is not the
amount of memory/cycles it eats, but the amount of pixels.

What kind of framework you develop for?

~~~
Swizec
I'm using emacs for GAE projects and I haven't noticed any issues. Django lets
you deploy/test from the command line, same goes for Java.

Then again, I do always keep a shell open when I'm coding to run tests and
stuff.

~~~
tommynazareth
I also have no problem using GAE and Emacs. I just run the dev server from the
command line and its all good. Make changes to the code in Emacs, refresh the
browser, and the changes are there. Where would you run into a problem that'd
make you switch editors?

~~~
rbanffy
I often use pdb/ipdb.set_trace() in the code to stop the server and inspect
stuff during execution. How do you do that with GAE under Emacs?

------
alinajaf
> Vim to me seems like an ever expanding series of configuration files and
> keyboard tricks to get something remotely powerful.

I used to feel this way but I hated Eclipse enough to push through and get
past it. Once you get over the barrier of learning how .vimrc works, vim
documentation and a few choice plugins, it becomes extremely hard to even
begin to consider using other tools. Some IDE-like things I can do with vim
and its various plugins that aren't normally quoted:

\- jump to a file in a codebase by typing in a smattering of chars in its
filepath and hitting enter (using CommandT) \- jump to a method definition
from a call to it (using ctags). \- Rsync a directory up to a remote server on
save (`using autocmd BufPostWrite :!rsync blah` in .vimrc)

Its taken me a couple of years of use and a lot of time figuring out vim, but
at the end of I have a lightning fast dev environment with similar features to
the big IDE's customized to work _exactly_ how I want it to.

If you'd prefer something that has all of that turned on by default and
doesn't require as much effort to get up and running with, you're probably
better off figuring out how to speed up your existing tools than moving to
something else wholesale. A lot of rails developers like TextMate as an editor
with a nice gui and some IDE bells and whistles, but I've never tried it.

As a side note, I sincerely believe that emacs is a comparably awesome
environment to work with, but I don't think I will ever try it. I've got
things so cushy in vim that its more or less a solved problem for me.

------
bsaunder
If you stick with vim or emacs, you may want to check out ctags (or etags), to
help you with some of the functionality you normally get in an IDE. IMHO, when
you go the non-IDE route, you will forgo some features you are used to and
satisfy those needs with alternative mechanisms. This is my personal
preference. It's a bit of a learning curve, but I think you end up with a much
better understanding how your code fits together.

------
dkarl
Personally, I use emacs, and that's what I would recommend, but here's a more
interesting idea:

Eclipse is built on an application platform called Eclipse RCP. A minimal
Eclipse RCP app is just a window with nothing in it. No menus, no editors, no
file browsers, just a blank window. (I'm not even sure you need the window
these days.) You could start with that -- call it Zeroclipse -- and build up
what you wanted. Want a text editor? Add in the Eclipse text editor. Don't
like it? Change it; disable and rewrite whatever features you want. Want it to
parse and colorize your code? Find that feature and enable it. Write your own
keyboard bindings from scratch.

Want refactoring support? Add that plugin and provide some key bindings or
menu items. Don't want it? You'll never see it. Even better, the refactoring
support will never get loaded and won't even get deployed with the
application.

Your IDE (if you want to call it that) will consist exactly of the features
that you enabled or implemented. If you think an IDE should be a big code
window plus a pane to the left cycling through readouts of cyclomatic
complexity, the latest sports scores, and tomorrow's weather report, you can
have that. If you want it to track the time you spend typing, or the time you
have each file open or focused, you can do that, too. And if you _don't_ want
it to constantly recompile your code while you type and pester you with
autocomplete suggestions, it won't.

This won't be a fun little weekend project. Eclipse RCP is a huge system that
takes a lot of time to get oriented in. But I bet you'll learn something about
your development process. A hundred hackers doing this would probably discover
some pretty radical and useful ideas.

HNers should chime in with suggestions about alternative IDE platforms to
build on. Just don't say emacs....

~~~
tezza
I have a lot of experience developing RCP and Eclipse extensions.

The architecture is modular, but there are many many dependencies for most
things

JDT will bring in most of

    
    
      org.eclipse.ui
      org...equinox
    

and their siblings.

That said, I love Eclipse IDE and think the OP is whining too much.

------
points
I use textmate + shell. Once you get rid of all the crap in textmate -
bundles, auto insertion of closing brackets etc, it's actually a usable
editor.

The main thing is just to get good at using the shell. Grep, awk, etc etc With
all the tools at the cmdline, you can do anything.

~~~
riffraff
> With all the tools at the cmdline, you can do anything.

only if your definition of 'everything' is limited, all the refactorings in a
half-decent ide are quite hard to get right with awk & sed. For what is worth,
even something as simple as finding all elements in a type hierarchy are quite
unobvious to do with shell tools for me.

~~~
points
I think if you write good code the case for needing advanced re-factoring
tools is minimal. If you're writing the same thing time and time again, that
should ring alarm bells.

FWIW, for other types of refactorings (I mainly use Java):

    
    
      1. Change the name/type of something
      2. Compile
      3. Work through the errors fixing stuff it broke
    

Maybe that's less efficient than using some IDE tool to do it, but it's not
like it takes a long time.

~~~
ewjordan
Let's talk again when you're dealing with a codebase with >1000 classes, 5
different programmers of varying ability that you don't have direct control
over, a build process that takes 5 minutes to complete as it works its way
through a dozen different complex tasks with dependencies on just as many
external tools and servers, and you need to do one of these simple "rename"
factorings _right now_ because a colleague made a spelling error in a widely
used internal method that's about to be promoted to a part of a public API. I
guarantee you'll start to question whether change/compile/fix is the right
approach to these things...

~~~
points
In that case I'd just write a simple shell script :/

But thank god I don't work on large systems like that.

------
rsayers
Vim or Emacs, it doesn't really matter. Users of both will tell you that their
editor is best, but if one was really better, we probably wouldn't be having
this discussion after so many years.

I personally picked emacs for a number of reasons, you seem to already be
familiar with Vim so that might be best for you.

Print out the cheat sheets, and get to work. It's terribly frustrating at
first, but you'll be off the sheets in no time. After a month of steady emacs
use I could not go back to anything else. I have to use Eclipse at work from
time to time and I find the experience maddening; having to use keys like Page
Up, Page Down, Home, etc. Emacs lets me do all that and more without ever
leaving the home row. I'm sure Vim is the same way.

Pick one, learn it, love it... just don't become a zealot :)

~~~
narrator
Vim used to have an edge when emacs was viewed as "bloated" for using 8 megs
of ram, but now that's pretty negligible. On big projects I can get eclipse to
use more than 2 gigs!

~~~
silentbicycle
As a data point, my Emacs session is currently taking 75 mb RAM (on a 64-bit
system). It's been up for a few weeks. That seems pretty typical.

While it's common to start and stop vi(m) frequently, Emacs is usually kept
running, with shells, interpreters, etc. inside it. The start-up cost of
loading lots of extensions amortizes over the total session. (And it just took
about seven seconds for a new Emacs to start and load everything I use, FWIW.)

------
PKeeble
The modern IDE is chock full of features. So many that many less common edits
are automated if you know the right keystrokes. It takes years to master all
of the features and those features are constantly expanding month on month.

An IDE like Eclipse can take 1 GB of RAM to run on a decent sized project. Not
only that but it will happily consume 4 CPUs as it verifies the code, and
it'll only reach its full potential of resource usage on an SSD. But 1GB of
RAM is less than £20, a quad core around £80 and a decent dev SSD for less
than £200. Compared to the time cost of learning another tool this is
absolutely nothing. Those tools in your IDE are there to save you time and a
bit of hardware to be able to use those features quickly is worth every penny
for the hours they save you.

Learning your IDE well matters, the resource constraints are easily fixed with
minimal cash outlay. The difference between a MB and a GB for your editor is
irrelevant when the difference is such a vast array of features and plugins
which can save a lot of time.

Emacs and vim have a place in the world but an IDE is a vital part of a modern
development set-up because of the productivity it brings. If you are going to
develop software seriously make sure you buy hardware capable of doing it so
you can use the best tools at hand.

------
aeden
What language are you developing in? I think that some languages (like Java
and C#) really require an IDE to be effective, whereas others (like Ruby and
Python) do not require an IDE.

Personally I do mostly Ruby development, so I use VIM plus a host of plugins
that are Ruby-specific. If you develop in another language then there are
probably a host of plugins that make that language easier to work with.

In general though you are correct that you will have to tweak more to get VIM
or Emacs to work for you - an IDE is essentially an environment that has
already been tweaked for you.

~~~
RodgerTheGreat
When I'm coding in Java, I generally just use TextWrangler (on OSX) or kate
(on linux) as my editor, and commandline tools like ant and git to manage
everything else.

I think C# needs an IDE like VS more than Java, if only because it doesn't
have a standardized high-quality documentation tool equivalent to javadoc. For
many .Net libraries, intellisense is the only source of documentation, and
MSDN docs are rarely very helpful.

~~~
evo_9
Not necessarily - monodevelop is an excellent IDE for use with C#/mono.

~~~
RodgerTheGreat
Nice to know about monodevelop, but I don't see how that refutes my point
about C# needing an IDE.

------
wccrawford
An IDE is just a bunch of other programs combined. It's a text editor at its
heart.

So use a text editor (any one) and then compile your code, commit it to the
repository, etc etc from the command line. Or using other tools.

Or, realize that IDEs are designed to combine all that together and you'd
rather have it do the work instead.

Personally, when coding languages that don't need to be compiled, I use
Vim/GVim/MacVim (depending on what system I'm on) and the command line for
everything. For languages that need to be compiled, it's just easier to use
the IDE.

~~~
djhworld
I agree that the convenience of a quick keyboard shortcut in an IDE is really
effective for quickly compiling+running a piece of code, but I'm just
wondering if anyone has found any tips and tricks to do this without the need
to use an 'established' IDE

~~~
ximeng
In vim use :make to run make in the current directory. You can browse through
errors using :cn and :cp ("quickfix"). Finally use :!program to run your
program. You could fairly easily map keys to do these.

------
scott_s
_but I'm still a bit confused about how people use their preferred editor as a
full blown development environment._

I don't. That's the point. An "IDE" is an "Integrated Development
Environment." That implies that everything you need is part of the IDE itself.
If you don't use an IDE, then the editor is _not_ a "full blown development
environment.*

I use vim, but my "development environment" is Unix. Well, bash on a Linux box
to be more specific. But all of the tools I need are available from the
command line.

------
lusis
I only fire up an ide when I need to step through code with breakpoints and
watch variables. The rest I do in vim. It depends on the language a lot in how
functional you can be without a full ide.

~~~
hga
Bingo. I started long before there were IDEs and quickly gravitated to EMACS.
When I last used an IDE (VC++/VS) I used EMACS for my editing and it for
building (compile and link) but mostly for this type of debugging.

------
wglb
I have come to the conclusion that IDEs are overrated. I did exactly what hga
notes otherwise here when I used Visual Studio--I edited with Emacs, compiled
and built with VS.

I now use Emacs for everything. It has just enough pieces to be able to
configure the task you want to do. In particular, I make heavy use of key
mappings, for example, F11 to the compile command, which defaults to "make -k
-f Makefile".

VIM is highly configurable--several at work use it. Two of our more
experienced guys use Pico.

Check out "Coders at Work" to see what the truly serious programmers of our
time use for IDEs. Short form, none.

~~~
gaius
I believe Emacs already had that bound to C-c C-c by default.

~~~
pjscott
Emacs has _all sorts of things_ bound to C-c C-c, depending on the mode. It's
common enough that it's worth checking what it does in the current mode (With
C-h C-k C-c C-c, of course).

~~~
silentbicycle
First off, it would be "C-h _k_ C-c C-c", not "C-h _C-k_ C-c C-c" -- "C-h k"
runs describe-key on the next shortcut typed.

Idiomatically, "C-c C-c" usually means something like "commit" - send an
e-mail, compile source (by starting make), etc.

C-h m (the mnemonic is "help,mode") lists _all_ the bindings for a give mode.

Also, pressing a prefix followed by C-h (i.e., "C-c C-h") defaults to listing
all keybindings with that prefix. (Sometimes there are bindings replacing
that, though, like "C-x C-h", which is delete-region.)

~~~
pjscott
The funny thing is, I definitely would have typed "C-h k" in emacs. The hard
part is trying to translate from muscle memory back into a string I can write
down on HN.

------
gsdefender
Stick with vim, it's just a matter of finding what plugins suit you best. I'm
no expert, but I am slowly building my environment:
<http://hg.emanuelecipolla.net/dotfiles/src/> if you wish to browse it.

P.S. I would like to know if someone spots mistakes or suggest enhancements,
thanks :-)

~~~
djhworld
Hi thanks for posting this.

I don't mean to be rude but to me this folder is just a collection of your
configuration files. What I really want to know is what your configuration is,
what changes have you made to make your environment usable and useful to you?

~~~
merijnv
I've been using Vim for about 5 years now. I started because I needed an
editor that supported syntax highlighting and auto-indent to work on the
university servers over SSH.

It took (still takes) a lot of time to learn Vim. At first I used it as
notepad with syntax-highlighting with auto-indent. That is, I immediately
entered insert-mode and kept in there for as long as I could. But slowly I've
started to learn myself how to truly use Vim. Nowadays I try and exit insert
mode as quickly as possible (sometimes after typing just one or two letters).

Every once in a while I stop and reflect on things I do very often, look up
ways to do them faster and then try and train those ways to be a habit. I
learned most of these things from Bram Moolenaar's presentation "Seven habits
of effective editing" (<http://www.moolenaar.net/habits.pdf> and
<http://video.google.com/videoplay?docid=2538831956647446078>) most of this
talk probably holds for emacs too.

Examples: when I need to rewrite a function arguments nowadays I just type
"ci(" which does Change Inner parenthesis, it deletes all text between the
enclosing parenthesis and puts me in insert mode to start typing. If I need to
move more then 5 lines down I use incremental search instead of arrows/hjkl to
move around. If I need to move to the end of a line I use $ (goto end of line)
or A (append after end of line). If I need to go to the middle I'll use other
shortcuts.

Vim has billions of ways to move around and select text for editing. Learning
to use those relevant to your way of working is crucial if you want Vim
effectively instead of annoying form of non-modal editor.

As for making Vim useful to you, I don't think anyone can tell you how to do
this. You need to make it fit _your_ style of working. Which means, trying,
figuring out what bothers you and steal what works from others. Most of these
example .vimrc's that people post do not include comments on what the options
do, which makes this hard. I commented mine but it is rather sparse and I
don't have a place to dump it at the moment to show you, unfortunately.

~~~
younata
I'm curious.

I've been using vim for not that long (but long enough that it's now my main
editor). What all shortcuts exist for getting to the middle of a line?

~~~
vilya
You can use repeat counts with the cursor movement commands. For example, 40h
will move your cursor 40 characters to the right; or 5w will move it forward 5
words.

Alternatively you can use the search commands, '/' (forward search) or '?'
(backwards search) with the text at the middle of the line as your search
string.

------
s2r2
Good moment to give Acme a try, probably:

<http://swtch.com/plan9port/>

<http://acme.cat-v.org/>

~~~
konad
It's the best, better on Plan9 but still good as a Unix app

Don't forget Acme-Sac for windows <http://www.caerwyn.com/acme/>

------
frou_dh
I feel TextMate is the best middleground between classical editors and the
modern IDE.

It's a modern editor with as much IDE as you care to add.

------
primigenus
The problem is that there are so many IDEs that try to do everything for all
these different paradigms. Visual Studio and Eclipse, for instance, both try
to be your go-to place for server-side development (often in multiple
languages), front-end stuff (HTML, CSS, Javascript, Silverlight, etc) and then
they're also attaching process-related stuff like various forms of testing,
collaboration, code reviewing, deployment, release/build management etc.
They're also platforms, supporting plugins or add-ins that means they have to
be highly configurable and expose plenty of their core structure as APIs. That
kind of design is going to lead to overhead in places.

I'd like to see people start designing smaller, nicher editors that solve a
few problems well. Make me a great C# editor that does that and debugging but
nothing else. Build me a great editor for web apps that takes modern web app
design challenges into account (none of the IDEs do).

And don't just say it, do it. We're all developers, right? So we can take the
first step and build something that solves a few problems without having to be
stuck in the generic all-encompassing world of the IDE, with its toolbars and
endless icons. I'm doing it: we invented and are developing a web based HTML
prototyping tool that's sort of like a stripped down HTML IDE. We're
specifically looking at all the things IDEs do and what we want to keep,
change, or throw away. It's a challenge but it's making our product very lean,
focused, and easy to use.

------
klync
I've long used jEdit as my text editor of choice for coding html, perl and
php. jEdit is pretty much just another in its class that will give you syntax
highlighting, regex search and replace, macros, and a few other nifty
programmer-friendly features, just like BBEdit, UltraEdit, etc. What I really
like about jEdit, personally, is that it's built in Java, and so it's pretty
much identical on Mac, Windows and Linux. This is key when moving back and
forth a lot, as I sometimes do.

Depending on what kind of programming you do, though, I'm going to have to
agree with the other posters who've suggested vim or emacs. I'm a vim person,
myself, but there's nothing wrong with emacs at all. I guess, go for vim if
you _really_ want to go minimal; go for emacs if you want to simplify with the
ability to build out your text editor into an IDE.

The big reason I say you might as well go for vi or emacs, though, is because
without an IDE, you will likely need to spend more time at the command line -
whether that means running your compiler, firing up your debugger, etc.

I never bothered learning some of the more advanced techniques with vi, but
I've written some fairly big projects in a terminal using screen, vi and "perl
-d". One little tip I think is worth passing along: I declare my functions in
perl like this:

sub my_method_name # the method that does that thing and returns a hashref

{

..

}

The reason I think this is worth mentioning is because it saves me so much
time when working in a terminal with a minimal toolkit: I run "grep -nr ^sub"
and it returns all my method definitions with a brief (one line) description.
The output from that grep is like a mini "whatis" database o my codebase.

------
pmjordan
I keep meaning to learn how to properly use emacs or vim, but I've never
actually found the time to do so[1]. So instead, I've just ended up using a
plain multi-document editor with syntax highlighting and sessions - KDE's Kate
in my case - and a bunch of terminal windows/tabs for REPLs, compilers, build
scripts and version control. Where appropriate, I use a stand-alone debugger
for whatever runtime I happen to be programming in (JSwat for the JVM, and
KDbg as a gdb frontend).

That said, certain types of work for customers is most easily done in an IDE,
for example .NET or Win32 stuff (Visual Studio), iOS programming (XCode) and
Nintendo game consoles (CodeWarrior), so I use those where appropriate.

It's probably not an optimal approach and it certainly earns me zero respect
from my peers using vim or emacs (or eclipse...). Considering how varied my
work tends to be, relying on a cluster of totally independent tools actually
works pretty well.

[1] I do use vim for shell scripts and configuration files. iravpPdwq!/?: are
the only commands I know, however.

~~~
Vivtek
This is what I've always done, too. Lately, I've been using Padre a lot, which
is an open-source programmer's editor written in (and mostly for) Perl and Wx.
I know if I really want to, I can change it - so even though I still don't
ever change it, it removes the stress of wondering whether I could if I really
want to. If you see what I mean.

------
jessor
Make a serious attempt in switching to vim for everything. Print out some
cheatsheets and have them on the wall next to your monitor. There are also
quite a few vim threads on HN which might be of interest to you.

It took me about a week to feel really comfortable with it, but now I'm really
glad I didn't give up. I still learn new shortcuts every other week.

------
gexla
One thing I like about Vim which I'm not sure I have seen anyone else posted
about here is that I can log into my remote VPS and have access to much of my
development stack over the internetz. This is important to me because I live
in the Philippines and my internet connection is relatively slow. It's good
enough to get a solid terminal connection but downloading a large bundle of
files could take days. So, I just log into my VPS, fire up Vim and if I need
to get access to large number of files then I can quickly get them with Wget
(obviously my server has a much faster connection speed than I do.) Also, if I
get hit with a power outage I can hit an internet cafe (powered by generator)
and get access to that same development stack no matter which computer I'm
using.

------
jdoliner
I'm a Vim user and here are my 2 cents on the matter. Vim has a lot of
keyboard tricks because there's a keyboard shortcut for almost everything.
Don't worry about those right now. Here's how I would suggest you learn Vim:
You already know the basics you can get into and out of insert mode you can
save a file you can open a file. You now have a "complete" editor in the same
way a Turing machine is Turing complete. The problem is it's inefficient. So
figure out exactly what you're wasting time on and one at a time (or you could
do a few at a time) look up the commands to automate these things. Make
yourself use the commands every time they come up if you forget take the time
to look it up again. You're going to notice a very steady rise in your
efficiency.

------
towndrunk
I use Coda on the mac. Not really an IDE but still combines what I need into
the environment.

------
geophile
What IDE, language and platform is driving you to frustration?

I'm a long-time emacs user, but I have found Intellij IDEA to be a wonderful
tool for working in java. Older versions were slow to start up and
occasionally sluggish, but new versions on modern hardware are wonderful. I
use netbeans for C++. I haven't found anything for Python that I like. (I find
Eclipse unusable for anything.) If IDEA or Netbeans were taken away from me,
I'd use emacs.

Actually, I still spend a lot of time in emacs. I use the IDEs for writing new
code, reading code, and running/debugging unit tests.

------
templaedhel
My file manager has FTP built in, so I can access files on my host the same as
I can my documents. I use gedit with sy tax highlighting/bracket
completion/tabulous and several other plugins for added effectiveness. I can
then save images or scripts or mp3s or anything to the correct place on my
host the same as I would anywhere on my local HDD. F course this doesn't work
when using a lanuage that requires compiling, and I prefer an IDE for those.
As far as web development goes however, I find my setup to be perfect.

------
gte910h
I primarily am doing Xcode development.

So vim is simply set as my editor, with CoccaVim plugin installed. Xcode
manages the builds, etc, but otherwise I'm in vim.

There are plenty of plugins that give you "all a boy could ask for" as far as
development resources.

Go through vim tutor for a bit to get the NEXT level of commands down. Once
you get used to typing replace commands and moving about by words etc, you'll
possibly think it "powerful enough".

------
hogu
what language do you develop in? IDE's are bloated because they have tons of
features, If you tell us what features you require, someone might be able to
suggest a non-bloated solution to do what you want.

I develop mostly in python, so I use emacs for syntax highlighting and
efficient text editing, ipython/pdb for debugging, and grep to help me figure
out which files things live in. But that may or may not be sufficient for you.

------
atambo
<http://www.sublimetext.com/>

By far the best windows text editor (currently being ported to osx/linux)

------
araneae
I use vim for simple things like bash or tex, but I prefer to use geany most
of the time for WP because it's fast, versatile and easy.

------
code_duck
I just like using a text editor with programming features. Kate on Linux,
Notepad++ on Windows, and Komodo on Mac.

------
teyc
I managed to get by on Vim with the following key bindings

[code] h j k l i a ^ $ Ctrl+w Ctrl+n Ctrl+p * # ? [/code]

------
Hoff
So we have 2010's version of the immemorial text editor wars^Wdiscussions?

Yawn.

Pick whatever editor^WIDE works best for you, and for the task at hand.

Don't expect to convince anybody else.

Don't expect to have one universal solution.

And please do us all a favor, and keep the evangelism to a minimum.

