Skip to content

Comment on Ask HN: Why would you prefer Emacs over IntelliJ IDEA?

Comments

I've flirted with IDEs over the years but I've stuck with a combination of Emacs, Terminator, and various commandline tools like bpython.

Here are some reasons I've seen for using IDEs:

- Autocomplete, syntax highlighting: Emacs has autocomplete and syntax highlighting (there are many themes in Emacs). bpython (an enhanced Python REPL) also has these.

- Code navigation: Emacs has a lot of nifty keys for zipping around within a document and with iswitchb navigating between documents is really fast. Some of the IDEs offer "goto" functions that will take you directly to where a function is defined, which would be nice.

- Code discovery: bpython displays function documentation and args; with autocomplete these are really quick. Granted, they're not displayed whenever my cursor hits a function so an IDE would be convenient if you use this all the time.

- Integrated console, debugger, and VCS: With Terminator I usually have a tab for each project, split into panes for console, logs, etc, etc. They're not displayed in the same window as my code but flipping between Emacs and Terminator is trivial.

- Refactoring support: Emacs has python-rope mode but it's a bit clumsy. This is one area where an IDE is probably better.

With my setup I have the keystrokes for the original tools (git, pdb, etc, etc.) under my fingers. I have to use these tools outside of the IDE anyway so this way I only have to learn one set of keystrokes.

My Emacs configs live in a Git repo and I can install them wherever Emacs is installed and I have a user directory.

I run Emacs and Terminator on my desktop and edit code directly on VMs and remote systems via ssh[1]. This keeps my desktop free from cruft and lets me develop in a setup that's close to my production setup. IDEs all seem to require that the code be on the same system as the IDE. Maybe they can but the ability wasn't obvious or well documented and I confess I didn't spend much time looking.

I do mostly back-end web programming and system administration. IDEs certainly have their place, and might be more useful if I was developing desktop applications, iPhone apps, or coding for microcontrollers.

[1] ssh/tramp can cause lockups due to network issues but these settings in my .emacs file work nicely:

  ; tramp - edit over ssh
  ; open remote files with /username@host:remote_path
  (require 'tramp)
  (setq tramp-default-method "scp")
  (setq password-cache-expiry 3600) ; password cache - 60 * 60
Updated for clarity, and to add tramp config.
AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.