Poll: Which text editor do you use daily?

151 points by methoddk ↗ HN
Do you use an IDE, vim, emacs, gasp maybe even Notepad? I'm partial to vim, but wondering what everyone else uses on a daily basis, maybe even comment why? Ease of use? Syntax completion? etc...

203 comments

[ 3.0 ms ] story [ 225 ms ] thread
Why did you not split up the IDE part ? To Sublime Text 2 / Textmate / Eclipse / Visual Studio etc.
I've added those now, thanks for the tip.
Seems like a few people like Sublime Text 2

Any particular reasons why? I currently use MacVim with solarize dark color palette.

It's fast and works. Since discovering it two years ago I still haven't found a reason to switch.
In addition it is very actively developed and updates flow in often. Also has quite a large number of useful plugins.
Before Sublime I was using emacs. Sublime Text 2 is really well done. You have to try it to understand. If you want a characterization, I would call it the balsamiq of text editors.
Most of my decisions are pretty forced. I don't use Eclipse or Gedit because they were crashing my computer. I don't want to spend time learning vim, and am skeptical of it because I read bad things about modes in UI books.

For me sublime text 2 just got the basics right: black background, tabs, text completion, no crashes. The only feature I really appreciate that seems unusual are the pinstripes denoting tab characters

I don't have a problem with Vim's main modes, because I always know what mode I am in. Not only is the name of the current mode always in the bottom-left of the window, the cursor also looks different depending on whether I am Insert mode (vertical line) or Normal mode (rectangle). I suspect that your UI books warned against modes where the user might forget what mode they are in.

However, you also go into another mode when you enter the beginning of a multi-key shortcut (such as 'ma' to mark the current location with label 'a'). This is indicated at the bottom-right of the window by showing the keys you have typed so far (such as 'm'). Since that is the only indicator, sometimes I have accidentally forgotten I was in this mode. So that can be a problem. But it's easy to undo mistakes - just press 'u' in Normal mode, or Ctrl-O if the effect was moving the cursor. And if I know I'm in some weird mode and just want to get out, I can just mash Esc, and that always brings me safely back to Normal mode.

Of course, the reason Vim has modes in the first place is to give modifier-key-less ways to access a lot of functionality. I think the modes are overall a good thing. It's very nice to be able to edit and rearrange text with so few keystrokes and no need to move your hand to the mouse.

But configuring Vim so it works well can be a large pain. I've been using public computers to program a lot recently, so I've been using Sublime Text 2 on those, because of its good defaults and cross-platform nature. I hope to soon upload my Vim configuration files online so I can use it on other computers, but first I have a bunch of bugs in my configuration I have to fix. That's where I envy Emacs for having a good configuration language.

"I read bad things about modes in UI books."

This makes me skeptical of UI books.

It took me five years (and counting) to get Vim to a place where I'm happy with how it looks and functions. ST2 gives me that out-of-the-box, and it's improving constantly.
I switched from Vim to ST2 two days ago, and this was precisely why.

At the risk of repeating what you wrote above: strictly speaking, Sublime Text 2 doesn't do anything you couldn't do with Vim, either by installing multiple plugins or writing your own plugin.

The difference is that most of the plugins I installed in Vim are features which just work in ST2. I can't _believe_ I went this long without a robust "find in files" or a project system.

Also, in the ~10 or so years I've used Vim, I've _never_ learned its specialized scripting language. Every time I've tried, I've given up in frustration. You can use another language but you can never truly escape vimscript. ST2 plugins are written in Python.

It's tastefully designed in every sense, from the look to the feature set to the extensibility.

The one thing I'm not keen on is its reuse of actual TextMate bundles. I definitely understand why it was done, but some of the bundles seem a bit legacy and they all use gnarly XML.

The only reason I don't use ST2 is because it isn't nearly as good as Vim at indenting and highlighting the languages I use. Another reason would be that I can't use it in a terminal and would have to switch to another editor.

But the rest of ST2 is utterly fantastic. In particular, using Python as the extension language. Elisp is okay, but VimL is terrible. ST2 is the only popular editor I'm aware of that has a real programming language as its extension language and not a editor-specific language.

For me the most important feature is the quick file finder / browser / preview whatever that is called (cmd/ctrl+P), along with the ability to save folders as projects. Everything else is really nice too, but that is definitely the feature that sold it for me.
Sublime is great in general. One area it lacks is good auto-formatting support (it has the feature, but it generally fails) I use this feature all the time in JetBrains IDEs and it's tough to live w/out once you are used to it.
I was a MacVim user before switching to ST2.

It looks nice (shouldn't matter, I guess, but it does to me a bit). For example, scrolling is much smoother and easier for my eyes to track and keep my place -- MacVim only lets you scroll complete line by complete line which is kind of jumpy.

The folder hierarchy in the sidebar is better integrated. Open a new ST2 window, go Project -> Add Folder to Project, and then all its subfolders and files will be easily browseable. It's not always necessary, though, because the fuzzy file finder search is so good. (Like Command T, but built-in).

Multiple cursors. I use this more than I would have thought. You can command-click and get multiple cursors, or you can highlight a word and command-d to incrementally highlight each further instance. Then, you can type and it goes to all the cursors simultaneously. If you, say, shift-opt-left arrow, it will highlight the word to the left, and then you can copy, and it will copy every word but associated to its particular cursor, so you can then hit command-right arrow to go to the end of the line, and then paste each of the copied words.

So, say, I want three similar json objects, one related to cats, one dogs, and one birds. (This is a contrived example, and probably not the best way to do it, but just to demonstrate the power here.)

Now what I'd do is I'd write on three separate lines, "cat", "dog", and "bird". Then, I'd highlight each of them to get multiple cursors, hit cmd-c so I have "cat", "dog", and "bird" copied for each cursor, and then just write the json object and all three would be done at the same time. If I wanted a variable to be called "myAnimal", then I could paste (so, I'd get the three animals). Opt-shift-left arrow to highlight them, command-p (which brings up the fuzzy-finder for all of sublime's functionality), type "capt", which will bring up "Capitalize", hit enter to do so. (Now I have "Cat", "Dog", and "Bird"). Then opt-left arrow to go to the beginning of the word, and type "my", and now I have "myCat", "myDog", and "myBird".

I'm not sure how well that came across, but basically multiple cursors is a killer feature that I didn't have in Vim. Couple that with a powerful macro system of recording keystrokes, and then using those macros with the multiple cursors, you can do a lot of editing fast.

TextWrangler (BBEdit when my company paid for it)
You might want to toss RubyMine and IntelliJ on the list.
Vim for whenever I'm running something headless or I'm ssh'ed into a server somewhere.

Eclipse for any project that's an excessive amount of Java, which at this point is only Android apps.

XCode for any project that's an excessive amount of Objective-C, so just iOS or OS X apps.

Visual Studio / MonoDevelop for anything that's going to be published to a Microsoft environment (Windows, Windows Phone, Xbox, or Unity cross-platform development).

Sublime Text 2 with Vintage mode for everything else.

I'd love to just use one editor for everything, but the language IDEs (Eclipse, XCode, Visual Studio) are too good in terms of intellisense and platform integration to pass up for their respective languages. It's a pain in the ass juggling contexts, especially with vastly different keybinds in various editors, but it's definitely worth the pain when you're on a roll with something.

I'm the same way, I really love vim for python, ruby, html.

But I've been eyeing up Sublime Text 2... It looks nice

What sold me on ST2 was the Package Control (http://wbond.net/sublime_packages/package_control) and the fact it works on my Linux box and Macbook. Generally ST2, with Aquamacs + SLIME for Clojure and Common Lisp and vim on console because my fingers are hard-wired to it (I've been using it for almost a decade).
I was pretty excited about sublime text 2, and I use it on my Mac and windows box. But I can't use it on our work cluster due to it not supporting our version of rhel (5 I think)
> I'd love to just use one editor for everything, but the language IDEs (Eclipse, XCode, Visual Studio) are too good in terms of intellisense and platform integration to pass up for their respective languages. It's a pain in the ass juggling contexts, especially with vastly different keybinds in various editors, but it's definitely worth the pain when you're on a roll with something.

That. The religious text-editor wars really hurt the discussion when language-IDE-platform combinations exist that really boost productivity and maintainability.

In the same way, though, it makes little sense coding Python in Visual Studio.

Makes me wonder if all the "My editor simply is best" people can code in more than a language and a half.

I'm a vim user.

I feel like I'm only able to "half" code in Obj C or Java as I've only really done so in Eclipse or Xcode.

Meanwhile I feel pretty dang confident in my C ability because I have and always will do it in vim.

My comfort level in a language increases if I don't use an IDE.

Usually, it's the "IDE-bound" guys who can't code in more than one language.

I use Emacs simply because it is so adaptable, regardless of my current environment/language/task. Couldn't figure out how to beat Xcode for iOS programming yet, tho

> it makes little sense coding Python in Visual Studio

There's a VS plugin for Python now. It still feels heavy compared to other editors but its atuocompletion is actually pretty decent.

http://pytools.codeplex.com/

Try eclim for Eclipse/Java/Vim integration. I run in the headed Eclipse mode, and use the Eclipse UI for reading errors, debugging, and to run/terminate processes, and use vim for writing code. eclim provides autocomplete, lots of useful macros (:JavaImportMissing) and so on, and CtrlP provides superb file navigation
Vim because it's lightweight, fast, and the vast plugins that are available makes it almost like an IDE
textmate should be on this list
Vim for almost all coding (except for Java: I still use vim for rolling out tiny programs but since eclim, the Vim plugin for eclipse is not very good, I am forced to use eclipse). I use emacs in vim-mode as a GTD planner, mainly because org-mode is an incredibly useful planning tool that I am able to use on any machine that is linked to my dropbox account as long as I know the markup.
I have wondered more than a few times, what it would take to port org-mode to Vim ...

I note that someone gave up on the slime port of vim for various reasons ...

Forgot to add: One another situation where I would use emacs is if ever I really got into R. ess (emacs speaks statistics) is quite good compared to vim equivalents.
where's notepad/wordpad? I use it all the time on windows servers that dont have notepad++ installed.
I mostly use Emacs for development. Vim for small edits on the console, sometimes I open gEdit to read plain text files when I'm not coding. On Windows (under Virtualbox or on remote servers) I tend to use Noteapad++. I don't use much Eclipse these days except for a few touches to an Android project.
vim most of the time but end up switching to Chocolatapp if its html/js for Flask.
I use XCode for iOS development and Vim for everything else. Tried to use Vim for iOS development as well, but XCode has incomparable integration of code completion, compiler, etc. (Even though it is slow and buggy.)

I am open to using other editors/IDE if they came with better code completion and integration for Web related technologies, but I have not found one that outweighs the benefit of using Vim.

On windows, it used to be Notepad++ but since I moved to mac, I've been using textmate. I wish there was Notepad++ for mac.
Check out TextWrangler. Pretty similar
ST2 gets you most of the missing features, like bracket matching, sane indenting etc.
Emacs: familiar, useful, widely preinstalled, and uniform across Linux, Windows, and Unix. Notepad++: minimal without being irritatingly underpowered like its ++-less namesake, plus Scintilla is nice.
MacVim with the Janus additions.

https://github.com/carlhuda/janus

I always catch myself trying to use Vim bindings in non-Vim environments. I would pay serious money for software that would allow me to work like that in every Max OS textbox.

I agree. Emacs type key bindings are prevalent in osx, sad to see vim missing. Although I was so happy to learn c-d was delete in cocoa boxes, especially since that is easier to type than fn-delete.

I mostly use emacs these days, but still use vim too. To keep my brain from scrambling, I changed emacs movement keys to match vim (ie c-h, c-j, c-k, c-m).

FYI, you can set bash to vi mode with `set keymap vi && set -o vi`.
No Netbeans???? ++1 for Netbeans!
I'm currently using Xcode for everything iOS / OSX (most of my work actually) and am going back and forth between Vim and Sublime for everything else. I've been using Vim for years and Sublime really shines in some regards. However, it lacks some plugins that I really like about Vim (like EasyMotion https://github.com/Lokaltog/vim-easymotion) which is why I'm deciding on a project basis which editor to use. (Also, I really like to be able to browse for files without having to reach for the mouse). Btw. In that regard, I find it fantastic that the Vim bindings start to become some sort of unofficial text editor control standard; more and more editors are adding Vim bindings (like http://www.jetbrains.com/objc/ it has a Vim Plugin too).
At the moment, vim is a runaway victor as far as popularity. As I expected it to be. Insanely simple and so many great plugins.
Dreamweaver as a fancy text editor.

/ducks

When I first started doing web programming at my first real programming job, everyone there used Dreamweaver as the IDE of choice. I used it for a few months before I could no longer deal with its idiosyncrasies. Now, I absolutely hate the program. It got to the point that I would only use Dreamweaver for remote file management (silly, I know, but I was still learning) and would open the files in emacs for actual editing. Eventually, I stopped using it all together and forced myself to find other ways to retrieve remote files.

In retrospect, I should have set up a source control repository and left the programming team a little better than I found it. Hindsight is 20-20.

Gedit is the one I use most. Really, why would I need more for daily use? I wouldn't bother pasting stuff or taking simple notes with Vim, Emacs or even the specialized apps for that. I can read text files from the file browser with that, and for my other viewing need I have less.

When I program, it's usually Emacs, otherwise Eclipse for Java.

I use Notepad for this same reason. It's so easy to just hit win -> r - > 'notepad' on my XP laptop at work. Anything I need a text editor for, Notepad fits the bill. When it comes time to start coding, then I move to an IDE.

No need to get fancy.

I just hit win -> r -> 'vim' when I'm using Windows.