For the first time I am seriously considering whether to replace Emacs as my primary text editor on Linux.
I've been compulsively using Emacs for the past 5 years. Thanks to Emacs I felt
in love with (a dialect of) Lisp and experienced the freedom brought by a truly
programmable text editor. An enlighting experience.
About a couple of weeks ago I began using Sublime Text 2 and... wow, it gets so
many things right and out-of-the-box that I'm now fighting an inner battle to
make a choice.
I am by no means an "hardcore" Emacs user but over the years I accumulated more than
seven hundred lines of elisp code in my ~/.emacs.d/init.el. A large portion of
that file glues together stuff like ido-mode, ido-ubiquitous, smex,
AutoComplete, find-file-in-project, etc making my Emacs a lot Sublime-like.
I recently threw most of that stuff away and began working on sublime.el, which
tries to emulate Sublime Text 2 as closely as possible.
However Emacs is showing a lot of warts: ido's fuzzy matching becomes painfully
slow when dealing with lots of entries, I have yet to make find-file-in-project
behave the way I want, provide most-recently-used heuristics to ido (for any use case not covered by smex),
there's no consistent way to set a unique indentation level across major modes,
long startup times (though the emacs-as-a-daemon/emacsclient pair mitigates
the issue somewhat) and, in general, the UI is antiquated¹.
My only gripes with Sublime Text 2 are that there's nowhere near the amount of
documentation Emacs has (for obvious reasons) and that it is a (mostly)
proprietary piece of software. What if Jon is hit by a bus², looses interest in
his project or finds it unprofitable and decides to stop all development? I
would really, really hate to depend on a piece of software which is never going
to get at least bug fixes. I honestly hope that Jon is considering open-sourcing
it, should he go AWOL for any reason.
By switching to Sublime Text 2 I feel like I am betraying Emacs and all it
represents in the name of convenience. Choice, how paradoxical thou art!
I am sorry if you find this disquisition boring but I had an urge to write it
down somewhere. How liberating!
__________
¹ E.g. there's probably a way to get like find-file-in-project to show stuff as
neatly as Sublime Text 2 does but as far as I know nobody has done it, yet.
wrt Bus Factor, for about one and a half years I used the E text editor, a textmate clone for windows backed by cygwin.
The developer seems to have disappeared, I understand it was sort-of open sourced, but it lost momentum iirc, great shame as it was promising, I jumped ship back to Vi and am not about to move again after that!
You're not alone. I've used Emacs for over a decade, but I fell in love with ST2 almost immediately. And although it may cost me some cred with diehard Emacs users: I'd much rather extend my editor with Python than elisp.
Still, Emacs is my bus factor backup plan. I prefer ST2 today, but it's nice knowing there's a pretty darn excellent fallback if it disappears for some reason.
Org-mode is a big stumbling block for me as well and it seems like most of its features would be possible in Sublime Text 2, but the sheer degree of integration that it's managed with Emacs' various hooks and processes might be much harder. The various org-insinuate functions, the packages to hook it into magit (or rather ST2's equivalents) & Mew, etc. are all pretty important to me. I haven't looked deeply into customizing ST2, but is it actually feasible to hook into it so deeply?
I was also a little hesitant to switch from Vim to Sublime Text 2, but I finally decided to do it. I run ST2 in Vim mode, which is easily configurable, and honestly, it's much more easier, does so many things right,and after adding just a few plugins (the package control being one of them), it has become my default text editor.
I feel the same way about Sublime Text 2 as I do with Reaper (http://reaper.fm).
Both of these applications represent astounding value for money - Reaper is a Digital Audio Workstation, Sublime, a text editor. Both of these applications offer features found in much larger, far more expensive packages - but still, the author keeps them affordable (its an easy, easy buy when the price is right) and competitive. We get updates for free, and each update cycle I find myself almost squealing like a kid getting nintendo for Christmas, jumping in right away to find out whats new.
This is commercial software, done right. A great price, great features, and superlative relationship with the users. Well done Jon, and thank you for todays update excitement!
My main objective with Sublime is to master the keyboard shortcuts. Stuff like (on the PC) Ctrl+D to select the current word, and repeat for next occurrences. This starts up a multiple-selection that you can just type and all selected occurrences are replaced.
> Stuff like (on the PC) Ctrl+D to select the current word, and repeat for next occurrences.
We're evaluating Sublime Text 2 right now, and for me that alone is a killer feature that is likely to earn them their new customer unless anything desperately show-stopping turns up between now and when they make the official release.
My only wish is that it the feature was just slightly more flexible, if only having a corresponding keystroke to deselect/skip an instance. It's so darned useful that it actively annoys me now if I use the same term in two different contexts and can't separate out just one of them, even though no other editor/IDE I use has this feature at all! :-)
I'm starting to figure out the Python integration now, though, so maybe I'll be able to set that up myself in due course, which really would convince me to spend real money on the software...
Wow, very useful, thanks. There's a useful comment to the gist I had no idea about: Ctrl/Cmd X,C, and V all operate on the whole line if nothing is selected. That's a clever way for it to work.
Reading some of the comments here, it's evident that planet Emacs, where I'm from, is in a galaxy a long ways away from planet "I give a shit about the icons".
Sounds like the guy behind the project is quite responsive, and doing a good job for a good price, but I'm just way too attached to having open source tools for my work.
I consider freedom a paramount attribute I expect from software I
use. However, I tend to use use proprietary software if its much
more convenient than free options and either 1) I can easily
switch to an alternative (preferably open), 2) It is being developed in an
ethical way 3) It's a game.
I consider proprietary software to be developed in an "ethical" way when an
entity makes an official statement regarding the destiny of the product itself
should said entity disappear, go bankrupt or, in general, discontinue
development.
For example: Trolltech (then acquired by Nokia), developers of the Qt framework,
double-license their product under a free copyleft license (GPL/LGPL) and a
"Commercial [proprietary] Developer License". In order to protect both the
community and their customers they made an agreement with the "KDE Free Qt
Foundation"¹ which says: "Should Nokia discontinue the development of the Qt
Free Edition under these licenses, then the Foundation has the right to release
Qt under a BSD-style license or under other open source licenses. The agreement
stays valid in case of a buy-out, a merger or bankruptcy."
That's why I would like to hear from Jon what his plans are in case he decides
(or he is forced) to discontinue development of SublimeText for any reason.
There are egregious examples of successful editors being developed, sold and
then (mostly) discontinued. Enough broken promises to warrant strong assurances
from Jon.
Oh, it's closed source? OK, there goes all my interest.
It's odd how you just expect certain kinds of software to be open source today.
Edit: Since I'm getting downvoted as-is, let me flesh out this posting with some more explanation for my stance: My text editor is an application I will invest a lot of time in learning and customizing, and it's important to me that this investment will end up being worth the effort long into the future. With a closed source text editor, I don't have the same level of confidence that the product will continue to exist and be maintained. Closed source also means that parts of the application are off-limits to customization, and I don't want to be beholden to another's determination of what part of the app is on that side of the fence.
I actually agree with you completely: at this point you'd just assume that text editors would be free.
That said, I work faster in ST2 than I did in Emacs and I can very quickly repay its purchase price in increased productivity. Should ST2's author get hit by a bus tomorrow and every copy of ST2 in the world instantly stop working, I could go back to Emacs and still have benefitted from having ST2 in the mean time.
Suppose someone offers you a golden goose that earns you $1 an hour but costs $100. If you get your $100 back out of it before the goose dies, you've broken even. If you get $101 out of it, you've turned a profit. If you get $500 out of it, you've made a good investment. I've already made my money back on ST2. If I lose the use of it, I've still come out ahead.
Let me be clear though that I wasn't talking about price. Rather I was genuinely surprised to learn that it wasn't open source, perhaps because so many of the top editors are, because of its persistent popularity in these circles and its dalliance with open solutions, and because I would expect someone starting a new high-end text editor today to want to put the project on solid long-term footing, which to me implies open and community involvement.
It's pretty interesting to see that I'm still getting down-voted for posts that I think, at this point, do a fairly reasonable job of communicating their point, do it in a civil manager and pose a legitimate question re: expectations of the use of the open source paradigm in certain kinds of software.
I wonder if it's really just because I'm saying something negative about a popular piece of software, and people exercise the downvote purely because they disagree rather than have quality objections?
I've just upvoted the downvoted entries to try to counteract this. The downvotes were not deserved in my view. Nevertheless, as I noted in a commend a couple of months ago, they still sting: http://news.ycombinator.com/item?id=3422539
I can definitely relate; I was somewhat discouraged that it wasn't open source, and was somewhat resistant at first. It would have more value to me that way. I paid my $60 and I would easily pay another $60 if he'd open it up :).
So I understand that its proprietary nature is a cost and a risk, but it's important to keep that cost and risk in context.
For me, there are two mitigating factors.
(1): It's actually really, really good. It is hard to overstate this. As I am writing this I realize that I am shilling pretty hard for this product, so I should say I have no financial interest in helping the author succeed :). I am giving you this sales pitch as someone interested in the well-being of my fellow developers. If you spend your days staring and typing into a text editor, you owe it to yourself to give Sublime a serious shot. After two decades of Emacs, Vim, and Eclipse, the level of quality and polish in Sublime, even in the "beta", is almost shocking. It's not perfect, but there are aspects of it which will make you wonder why you ever put up with the obviously broken behaviors and terrible performance of (your favorite editor here). In particular, I should note that you can really get exactly the key-mappings you want on every platform, so you don't have to change your habits too significantly; it doesn't have any strange reserved keys that are hard-coded to behave differently on different platforms (I'm looking at you, Eclipse). After a few months of using Sublime, Emacs's weird, chunky, jerky scrolling, slow plugin-loading at startup, and constant pauses for GC seem like pointless self-punishment. Eclipse's patina of UI widget detritus looks distracting and confusing. And Vim's slavish adherence to the character grid and grating scriptability limitations (no way to perform timed or background tasks, random segfaults when changing buffers from certain contexts) will look dated and pathetic.
(2): Perhaps more importantly in terms of the amount of energy you might need to invest: although Sublime itself is proprietary, the API is actually reasonably narrow, and there is a ton of open-source Python that has grown up around it. So, if the Sublime Text core were to implode tomorrow, and you had a significant investment in a ton of plugins, you could bring the interesting bits over from your Sublime setup to Vim (via its Python bindings) or Emacs (via Pymacs) or Eclipse (via PyDev for Eclipse's Jython scripting bridge). Perhaps someone could even write a compatibility API that provided Sublime's Python API on those editors. In fact, I had made a conscious decision a couple of years ago to stop writing ELisp and VimScript and start doing as much of my personal editor customization in Python, and that really paid off when I moved over to Sublime; my custom habits and automation were mostly there already. Had I been going from Sublime rather than to it, wrapping the underlying API to do something sensible in Emacs or Vim would be a lot easier than trying to turn my ad-hoc eval()'d turds of elisp and vimscript into something same.
I was pretty surprised that I like Sublime so much. I am pretty finicky about my editor; I spend tons of time customizing it and adding on to it and scripting it and automating things. Since my initial burst of making Sublime behave like the parts of Emacs I care about, though, I've had to tweak it far less than any of my previous experiments, and I really got to know all the editors I've used in the past pretty deeply.
My suggestion would be to get it, use it, love it, and just send the author a friendly note saying that, as a paying customer (rather than a random Internet troll), you'd love it even more if the source were available under a friendly license.
As much as I think sublime is beautiful and rather useful, I think I'll have to stick with vim. I've invested too much time learning how to use it and configuring it to throw all that away, and besides, it's that effort that has made me so efficient in the environment. There is a "vintage" mode (http://www.sublimetext.com/docs/2/vintage.html) that supports some vi bindings, but until I can use vim proper from within sublime, I can't really use the program seriously I'm afraid.
Additionally, I also use boatloads of plugins that I've come to rely on. Among the most important ones are Fugitive, syntastic, and gundo (seriously, branched undos have saved my life in the past, and visualizing them in a tree? Hell yes.) But there's also more basic ones, like surround, tagbar, and eclim (if I were a full-time Java dev, I'd need eclim.)
It's a chicken-and-egg problem, really. Vim is here, Vim is good, Vim is good enough. It's got its warts. VimL is the biggest.
And that birds-eye view in Sublime really does look sweet! I wonder how useful it is in day-to-day programming.
Sublime Text 2 has a plugin that emulates Surround. It has a pretty good mode for Git interaction. Even its Vintage (Vim emulation) mode is really surprisingly good. Hell, it even has a mode that is beginning to emulate Emacs' org-mode. Only time will tell how far it will go.
Does anyone interested in this editor know how to associate file types with this app in bulk, rather than one by one in the "Open With ..." dialog?
Any other editor I have, informs the OS, and a:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
(or the equivalent for your particular version of OS X) will rebuild all those correctly. Sublime Text never appears in the file associations after a rebuild.
Hm, the best I can think of is slightly better than one by one: In the finder, command click to select as many different file types as you can, right click, hold down option and "Get Info" turns into "Show Inspector" which pops up a dialog for the aggregate of all the files. In that dialog, I think you can assign Sublime Text to be the default program for all instances of each of those file types.
I'd completely forgotten this, though I have it as a preference pane. Thank you for reminding me.
SublimeText 2 is recognized in the app list, with a long list of extensions supported, with a single checkmark to add it as an "Open With" option to all of them and a button to allow making it the default.
(Note, it's not always what one wants as the default, consider .html for example, so more granular settings may be in order.)
> rather than one by one in the "Open With ..." dialog
That option means don't just open this .txt file, but all .txt files. That is the option that associates .txt with this editor, yes. But then you have to do it for .php files. And .rb files. And .py files. Etc., one by one.
The Icon Factory does (highly acclaimed and visible) work. The new icon is about a million times more polished than any of those options, in my opinion.
those are just mimicking "web 2.0" or apple-style fads. None of them works better as an identity (except the one by Nate Beaty, but the new one is still prettier).
The new icon is worse. It doen't look like a key. I only figured that out after reading the article. It's not square made worse by the perspective. The other alternatives look much better.
My only real complaint with the icon is that the perspective is completely out of place. See it compared to everything else on my Dock: http://sta.sh/01giwsf26wey
One of the nicest things I discovered about sublime text 2 personally is that it handles ginormous files very well. Having a text editor that doesn't crash on that occasional 1gb text file you need to look at is a nice thing
1. Use Sublime Text for a few weeks.
2. Get annoyed at a tiny issue. Ugly icon, window UI, font rendering, etc.
3. Consider switching to TextMate
4. New version of Sublime Text fixes one/all of my issues.
5. Use Sublime Text.
I'll never learn. Incredibly impressed with the dev cycle and how far it has come in a matter of months. At this point, Coda 2 might not even be enough to pull me away.