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.
But I've been eyeing up Sublime Text 2... It looks nice
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 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.
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
There's a VS plugin for Python now. It still feels heavy compared to other editors but its atuocompletion is actually pretty decent.
When I program, it's usually Emacs, otherwise Eclipse for Java.
No need to get fancy.
I think JetBrains makes the best editor on the planet if you really learn all the features avail. but JetBrains IDEs don't support quick editing of arbitrary files, so I use sublime for those. Again, I set up the sublime key bindings to be consistent with the JetBrains products.
Sublime is very sweet. Not quite up to the JetBrains standards, but it's faster and you don't have to set up a project.
And of course there is vim when I need it
The Cobalt theme is the best dark theme\colorlayout I've ever experienced, and I'm yet to find any others which I find as pleasant to the eyes while simultaneously allowing me (I am colorblind) to pick out the various things gedit highlight.
If I'm not going with black-on-white I'll have to roll my own color layout based on Cobolt whenever I use anything else.
We tried very hard to find an editor that wasn't vim. I looked around.. textmate sounded nice but it was only free for 30 days. Lots of other apps simply didn't run on Tiger.
So we ended up downloading macvim. He picked it up and was able to be productive the same night with very little coaching. Coincidentally, he has wrist pain from mouse abuse so having a keyboard-centric interface is incredibly helpful.
I'm a vim expert and my gut feeling to avoid vim ended up being completely wrong: he had no problem understanding it and was almost immediately productive.
Thank you macvim developers for not forgetting about the little guys with old OSes!
That being said, I use Vim, and I do have licensed TextMate. In fact we have bought 6 licenses for TextMate but not using them as we all switched back to vim.
He's an illustrator/character designer and needed a text editor
on Tiger (old laptop) for editing html/css/etc.
It doesn't sound like it's a "central part" of his workflow, so that's why he didn't want to buy an editor.I note that someone gave up on the slime port of vim for various reasons ...
Also wrt org-mode: if one called out to Emacs from Vim for exporting to different formats it shouldn't be too much work.
For quick one-off edits, still nothing can beat ed.
Acme is great for working with many files.
And vi is the last resort for environments where acme is not practical.
Of course, this days real men use sam, but I'm too spoiled to give up Acme and mouse chording.
Additionally, Emacs has the best UX of any program I've ever used. It is, by far, the most unified and consistent program I've seen--the same commands I use for getting around a code buffer are used to get around directory listings, documentation, compiler output, shell output and so on. Since everything, including the UI, is basically text,I don't have to treat the content much differently from the editor. This makes doing all sorts of sometimes complicated tasks easy.
On top of this is has some incredibly awesome features.
I am literally addicted to TRAMP--if I want to open a remote file, I just enter the remote path as if it was a normal file path and it just works. I can also open remote shell buffers just as easily. This makes working on several different servers at a time just as easy as working on local files exclusively; people watching me often don't even realize that some of the stuff I'm doing is remote.
Org-mode is really great. For a simple, easy to learn outline editor it's extremely flexible. Using the same tool for notes, todos and even presentations is great.
I also use Emacs to manage many shells, the way others use GNU Screen. This integrates managing a bunch of potentially remote shells into my workflow really well.
It also has some really brilliant language-specific modes like AucTeX and JS-2. The normal Haskell (with some potential additions like Scion and ghc-mod, although I still haven't tried these) is also great.
I even use it for Jabber and IRC. This makes it easier to code and chat at the same time and gives me access to a lot of Emacs's great features. A very practical example is the TeX input mode. If I want to use random unicode symbols, I can enable an input mode that automatically translates \lambda to λ and so on. This is also really useful for making some of my Haskell programs prettier :).
So really, the old saw about Emacs being an operating system is basically true--it can even view images and PDFs! Really, the main thing I do outside of Emacs is browse the internet, and I could even do that in there. However, the rest of the saying (that it just needs a decent text editor) is less true; while the default bindings are perhaps less powerful than Vi's, they're still extremely good and make for a much better editor than any I've used, including those that attempt to emulate Emacs bindings, which inevitably miss a good portion of the movement and editing commands I use regularly.
So yeah, Emacs is like magic.
EDIT: Oh yeah, with Emacs server and a relatively nice laptop, opening a new Emacs window literally takes a fraction of a second. In fact the minimal fade-in animation I have takes longer than actually launching it.
I use Emacs 99% of the time, but when I need to look through a codebase I'm not familiar with I use TextMate for its project panel.
What about when you download some library from Github and want to quickly get an idea of how it all works?
(yo hassy)
Another really useful trick is M-x find-dired and M-x find-grep-dired, which let you get a dired listing of the result of a find command. This is usually good enough for browsing through even relatively large code bases.
You can also use etags to get "jump to definition" commands for your various functions. Just put the TAGS file in the root of your directory.
Also, ido-mode really helps with handling a bunch of different buffers or files. And, since I have a large external monitor at work, I can have one or two small dired windows (again in the Emacs sense) open most of the time.
So, be warned: reading my .emacs file is probably a path to madness. Also, I rely on a fairly large collection of external .el files, some of which I either wrote or modified myself, so some of it won't work out of the box.
With that disclaimer out of the way, you can read it here: http://inst.eecs.berkeley.edu/~tikhon/.emacs.html. I colored it with M-x htmlfontify-buffer, which is an awesome command :). If you want the raw version, just drop the .html from the end.
EDIT: Also, note that this is for Emacs 23; some of it (like the color theme stuff) is useless on Emacs 24, but I haven't moved over yet. I'm too spoiled by yum to build my programs from source :).
No guarantees this will work on xemacs, older versions of GNU emacs, or whatever, but here's what I use (some of which is adapted from the excellent Emacs wiki (http://emacswiki.org):
(push "~/.emacs.d/" load-path) ; my init files
(push "~/.emacs.d/elisp/" load-path) ; other elisp pkgs
; byte-compile files in ~/.emacs.d/ whenever we change them
(defun byte-compile-init-files ()
(when (and
(string-match "/\.emacs.d/" buffer-file-name)
(string-match "\.el" buffer-file-name))
(when (file-exists-p (concat buffer-file-name ".elc"))
(delete-file (concat buffer-file-name ".elc")))
(byte-compile-file buffer-file-name)
(if (get-buffer (concat (buffer-name) "c")) ;.el -> .elc
(kill-buffer (concat (buffer-name) "c")))))
(add-hook 'after-save-hook 'byte-compile-init-files)
; don't disable commands or mess with my init, grr grr
(setq disabled-command-function 'nil)
(defun my-load-wrap (fname)
"Compile stuff if the .el file is newer than the .elc, and load."
(let* ((fpath "~/.emacs.d/")
(fn (concat fpath fname ".el")))
(if (not (file-readable-p fn))
(message (concat "File " fname " does not exist!")))
(if (or
(not (file-readable-p (concat fn "c")))
(newer-file (file-last-mod-time fn) ;some .el
(file-last-mod-time (concat fn "c")))) ;compiled
(byte-compile-file fn t) ;compile and load
(load fn t)))) ;load with failsafe
(my-load-wrap "my-options") ; general options
(my-load-wrap "my-functions") ; my misc functions
(my-load-wrap "my-server") ; emacs-server stuff
(my-load-wrap "my-calendar") ; cal/diary options
(my-load-wrap "my-bindings") ; and lots of 'em
(my-load-wrap "my-packages") ; misc packages
(my-load-wrap "my-text") ; text mode hooks
(my-load-wrap "my-programming") ; python, c, lisp, ocmal, etc
(my-load-wrap "my-web") ; for browsing w/ w3m
(my-load-wrap "my-irc") ; rcirc stuff
(my-load-wrap "my-skel") ; skeletons, boo
; load my-aesthetic last, so if there's an error the
; faces don't get set, and to ensure faces from all packages exist
(my-load-wrap "my-aesthetic") ; faces, interface stuffBut ... you're still no better at chair sitting. You've done just as much chair sitting as you have programming, but you've barely progressed in chair sitting.
But that's different, you say - programming languages are open and complex, with many libraries to explore, blog posts and stack exchange threads to read, and many fun side projects to fiddle with myself.
Heh, that's the key. A programming language doesn't limit your growth, your self-betterment. A chair does limit your growth: it's a simple tool, and there's not much improving in chair sitting after you've fiddled with the levers for five minutes.
I use vim because it's a programing language, not a chair. I consistently learn better ways of editing text in vim.
I'm not advocating vim here, so much as I am advocating to thoughtfully examine an activity you do often (text editing) and then looking at the tool you're using (text editor) and asking: am I constantly learning better ways to accomplish my goals?
But you'd be insane not to use emacs.
That is kind of the thing about Emacs and Vim, right? Vim is a text editor. Emacs is... well, Emacs is a text editor, too. And then an outliner, a news reader, a file manager, a source control interface, a psychiatrist, tetris, a mail client, an IM client and pretty much anything that can be represented in text and simple images.
I used to use Vim for a year or two. Then Emacs, and I haven't looked back. Actually, that is not true. I have looked back quite a bit, since Vim is hands down a better text editor than Emacs. But I can't go back to IDEs really and Vim just sucks as a development environment if you can't combine it with a Unix command line. Emacs is the only great platform agnostic development environment I know, even though it might not be the best text editor out there.
And yeah, there is Evil-mode. It is quite lovely, actually. But my brain just can't cope with dealing with Emacs and Vim simultaneously.
So, I totally agree, you'd be insane not to use Emacs, really.
Where can you not combine Vim with a Unix[-like] command line?
I use WinXP at work, and vim works quite nicely in a cygwin terminal.
As for browsing for files using the keyboard, I'm a huge fan of Command-T. https://github.com/wincent/Command-T
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 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).
https://addons.mozilla.org/en-US/firefox/addon/its-all-text/
if you're using Firefox.
Text Editors:
well, right now I am typing into a textbox in firefox
Mac OS X: TextEdit
Linux: Gedit or whatever comes with the distro
Windows: WordPad
Programming Editor: XcodeI 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.
Also, to this day it seems like the only code editor that I've seen which doesn't use monospaced fonts, and better yet, utilizes that properly (for example, parentheses vary slightly in size according to nesting level, so it's easy to see at a glance which parentheses match).
2 Eclipse for development
3 Notepad++ For quick changes to codes, write SQL queries and standard tool for storing temporary text.
For any other language I just use gedit where I add line numbers, automatic indentation, current line highlighting, syntax highlighting and word completion.
I'm currently in the transition to Sublime Text 2 after it being recommended to me at a hackathon, but there are still a handful of things (markdown editing, better find/replace dialog) in TextMate that keep it in my dock. I still use TextMate for writing papers or letters out of habit (though subl's distraction-free editing is quite tempting).
And I've been using Emacs in various of its incarnations since about 1978. (The original ITS Emacs, followed by Zmacs, MINCE, and then Lucid Emacs/XEmacs, the latter still being my preferred variant.)
I do enjoy using Sublime 2 with vintage mode for stuff when I can. I love the accessibility of ctrl+p <filename> to open files quickly.
The development environment I still dream of is to somehow merge the linux terminal with something like Sublime 2. If I could have a separate Sublime tab open that I could use as a terminal, I would easily pay for that.
Can one of you guys who is a lot smarter than me go ahead and build that? Thanks.
You can also try SublimeREPL [https://github.com/wuub/SublimeREPL] / Shell for now, but it's good only for very basic stuff as SublimeREPL does not aim to be a terminal emulator at all.
What're the things I'm missing by not using vim/emacs when I use Textmate? I'd be most helpful if someone could frame an answer in the form of "with Textmate you do..., and then with vim/emacs it's just..."
Text editors that cost less effort have probably a less profound impact on our lives and thus deserve less discussion.
With Textmate you write in Markdown. In Emacs you have org-mode, which is mind-boggingly more powerful. Textmate lacked a code browser last time I checked (not entirely sure there). It does not have Magit or AucTex, either.
Last, and certainly not least, simple text navigation and manipulation in Textmate is way inferior to Emacs or particularly Vim. As in: no macros, no incremental regex search and replace, and just a lot less movement and editing commands. Also, a lot less configurable.
Well, and Textmate is Mac only of course.
Second choice: Visual Studio 2010 with the minimap-in-scrollbar extension - still better than the one in Sublime Text 2 (which doesn't show the entire document, wtf?, and doesn't show edited lines). Also, the "find in files" implementation in VS2010 is better than Sublime Text's when you have hundreds, not a handful of hits.
It's fast, feature rich, supports almost any language via tmbundles, and fixes many quirks that TM had. It just needs a better bundle/plugin manager to be perfect.
I code in javascript/coffeescript 90% of the time, but regardless of editor, Zen HTML/CSS is of utmost importance - can't live without it.
I edit more text files using a combination of ack-grep, cat, sed and pipes than my primary editor (Vim). I had a hard time understanding how one of my coworkers doesn't use a project-wide find (ack-grep, grep, find, &etc).
One of my coworkers uses github's search for our repo. Bizarre, but works really well for him.
Had switched to TextMate for about a year in 2005 when started doing Rails, but went back to vim quickly afterwards.
Tried to switch to sublime2 lately, but its far far from being ready. may be one day.
Vim is old. Way too old I'd say. And has absolutely hideous extension language, horrible internal API and looks like crap. Sadly nothing still comes close to replace it for me.
I have used Xcode before but the memory usage became so high in recent versions (>1.5GB or more) that it is mostly unusable for me now.
Any particular reasons why? I currently use MacVim with solarize dark color palette.
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
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.
This makes me skeptical of UI books.
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.
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.
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.
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.
Geany for writing longer scripts
RubyMine for Ruby development (mostly Chef cookbooks these days)
Check out Komodo Edit! It has made a huge leap since it started.
It is an awesome editor for dynamic languages - particularly Python, JS, HTML, etc...
It simply does so much right, so do your self a favor and give it a try.
At work (microsoft): visual studio, notepad++, notepad (on some servers that have nothing else installed.)
It's powerful, smartly designed, elegant in a weird way… and it works exactly the same on my Ubuntu box at home, on the VPNs I work with and on my Mac at work.
There are many reasons a program wouldn't work across systems. The primary would be that it is a Mac OS X or Windows-only app (TextMate) or that it needs a GUI, or that it makes too many assumptions about the platform it is running on. Vim works on many (if not all) systems, it can be run with or without a GUI without losing or breaking anything, etc. Obviously, Emacs has all the same pros but I liked Vim more.
So Vim for me.
It has a very fast startup time, even on older machines. Also, its syntax highlighting is simple enough to add new languages. Including your own toy language. This helps tremendously when you're still exploring potential syntax.
I've been using TextMate not long ago, but there is no port on Windows. ST 2 has windows and OSX version.
And also, vim.
/ducks
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.
intellij for grails work.
zend studio and/or vim for php work.
visual studio family for .net work.
(my config: http://code.google.com/p/fisa-vim-config/ )
vim-python is a lifesaver to avoid writing vimscript.
Under editplus I learned about regular expressions and a bunch of things. Funny enough the first thing I made when installed linux for the first time was to install ediplus under Wine. Just some time later when I learned about emacs I really understood the programmers world.
Still editplus is the best editor for windows I have ever found.
I have some "util" apps I use since who knows when under Windows: SqlYog, Editplus, LeechFTP, Putty, StartupCPL (http://www.mlin.net/StartupCPL.shtml), hdclone. It's funny to see how much easy is the world for a developer under linux. Util apps simply doesn't exist. Just some commands that may not come by default on your distro.
In order of frequency I probably use nano > kate > NetBeans and the reverse in order of duration.