Nothings changed regarding to evaluation "Sublime Text 2 may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.".
I'd be really interested to hear about how well this model works for them. I know that I, for one, am a paying customer because being able to use it for a month or so for free really got me hooked.
I'll most likely end up being the same way. I'm slow to switch editors, but every time I hear news about SublimeText I'll launch it and get closer to just making the switch - and by extension, paying.
Compare that to the 7 day trial of Coda 2. Nowhere near enough time to evaluate an editor, let alone wait for the next bugfix if you run into any issues.
Funny, I bought it more or less right away and ended up using Emacs instead. I still don't feel bad about it though. It is a worthy tool in my belt and I love to support it.
I've reverted back to Vim (not really ST2's fault, just that it doesn't run in a terminal and I've gotten addicted to split-panes in iTerm), but ST2's a solid editor. Definitely worth your $60.
PS: If it got even a basic terminal...
EDIT2: ST2 does have split panes, I just can't run a terminal in them.
I suppose you know that you split the layout of ST just like you can split the pane in iTerm2 ... You can even have the same file open twice in a side by side view.
You can init Sublime (and open/edit files) from the command line relatively easily[1] and there's a plugin that will allow you run shell commands from within Sublime Text[2].
A basic terminal is 100% feasible under the plugin API... see http://www.sublimetext.com/docs/2/api_reference.html#sublime... ... although to capture keystrokes, you'd need to bind a keystroke to every single key with every single combination of modifiers.
I'm just curious about why you need to run it in a terminal?
I have a linux machine at work and use a MacBook for remote work. When I'm remote I just run Sublime locally on my Mac and set up an sshfs mount to my workstation for the source files. Works like a charm.
Note - not at all saying you're doing it wrong :-) just curious if you'd tried this kind of setup and why it didn't work for you?
It's mainly to keep everything (where everything == files, REPL, docs, etc.) in a single window, which I can then throw full-screen and have absolutely nothing but my work in front of me. I'm sure one could use ST2 (or any other GUI app) on Linux with a tiling WM like xmonad and achieve a similar workflow, but there doesn't seem to be a way to achieve this on OSX that doesn't involve ugly/unstable hacks.
You know, in theory it'd be possible to do that within Sublime but I'm not sure if that's veering towards the emacs approach of ALL THE THINGS. I'd have to try it but I think you can probably use PyQt to grab WebKit and make a package to display HTML docs within Sublime
The "all the things" approach is a large part of what keeps me away from Emacs[1]. I'd much rather use a single-purpose editor (like ST2 or Vim) alongside other similarly-focused tools, or a well-done IDE that's focused on it's environment. Emacs tries too hard to be everything at once (why do I want an editor that's a file manager, IRC client, organizer, and Tetris?).
[1] The other is it's absolute refusal to "fit in" on whatever platform it's on. Fits with the kitchen-sink approach: why interop with [program X] when you can just build it in?
> why do I want an editor that's a file manager, IRC client, organizer, and Tetris?
Although I don't want my editor to do all those things, for me the reason emacs wins is because it invites you to learn the (not unpleasant, genuine programming) language in which it is written and then do whatever you want with it. Even if you basically want to keep it simple having that power to hand is nice.
Personally I keep 10+ screen tabs open, many of them with emacs sessions set up to specific projects with split panes and files open to exactly where I left off. I couldn't imagine reopening my editor windows every time I'm due to start something. I do this over ssh to my server from my laptop because even the occasional laptop restart is too annoying for the projects I work on a lot.
An editor that can't work in a screen session is simply a non-starter for me, especially as there's pretty much no _benefit_ in a GUI for any of the text editors I've tried.
I also switched to vim so that I could run it in a terminal. The reason I did it is that I found Sublime Text 2's file listing cache would sometimes get corrupted or out of date, so suddenly I couldn't using Cmd+p to open things anymore. I couldn't find a way to manually bust that cache, so this was very aggravating. I'd basically be dramatically slowed down until ST2 deigned to update itself. IIRC, this was especially bad when adding new files and whatnot.
Updating from within sublime text, I get a 500 Internal Server Error in the release note window (being served up by a pretty old version of nginx). Still able to update though.
An absolutely joyful piece of software. I love it so much, I bought it right away. Plus, where else can you experience such a pleasant multiplatform situation? Great Job!
I started writing the same thing, and thought I'd just add onto this instead. Tried using Vim because I like the look of how flexible it is to tile windows, but I just cannot move away from Sublime's file search.
I don't even click tabs that I have open any more, I just hit Apple + p and start typing say g-l-o for global.css and I know its there, hit enter and voila.
Like you say, multi-platform too, so I get to use it on my little Ubuntu netbook and on my iMac. Love it. Really should buy a licence.
Yes, CtrlP is faster and easier to install because it's just a vimscript. It also supports all of Command-T's functionality, so it's pretty much just great.
I've found Command-T slows way down on large trees, causing a very noticeable interruption in my "flow" when I use it. Also, it's written in ruby which can be a bit more painful to get started with if your distro doesn't compile ruby support into vim by default.
Do you find that it slows down only the first time you use it within an editing session, or everytime you use it? If only the first time, I've got a fork which caches the files to disk, so that you don't hit that slowdown very often. The downside is that when you add new files, you have to bust that cache.
Hey, what agscala says below is absolutely right. I tried it, but honestly, Sublime Text 2 is far superior. Even my Vim-core colleague to my right agrees. And thats saying something!
Edit: Scrap that, rush-read - CntrlP doesn't beat Sublime's Apple+P. Honestly, try it and you'll see what I mean.
I like it too. The main problem I have with it—and Textmate—is the lack of an emacs-like Follow-mode: http://www.gnu.org/software/emacs/manual/html_node/emacs/Fol... . It's 2012, I'm using a 27" monitor, and yet I can't find this feature, or one like it, in anything other than emacs, which has a learning curve far too steep for my pretty simple needs.
At one point, the Textmate website mentioned that a follow-mode-like feature was in the works, but 1) I can't find that mention anymore, and 2) even if it is, I'd rather not wait forever for it.
Honestly I've always looked at follow mode as mostly a cute toy. It's too distracting to use while editing, and in my single-screen environment I always want a shell beside my editor anyway. Surely the proper solution to this problem in 2012 is to buy another monitor and flip it on it's side, no?
In Vim, you can bind several windows to scroll together by doing :scrollbind in each. It's a bit more manual than what you do in Emacs, but you could use this and some :vsplit'ing to achieve a result similar to the follow mode described at your link (though I'm not sure if Vim has the learning curve you're after).
I was an active user of Notepad++, but ever since I started using Sublime text, I never turned back to NP++ (or any other editors). Totally love the Sublime experience.
I've been using Notepad++ as my log-viewing problem for a while and I periodically use it to edit a bit, but when I tried out Sublime I didn't see anything to make me drop Notepad++. It did the same things equally well, but not much more from what I noticed.
Yes, please. I am very interested in this. I feel as though I've only scratched the surface of what ST2 can do even though I've been using it for the last year and experimented with writing my own plugins.
I'd also love to see a "cheat-sheet" for shortcut keys.
To be honest, my ebook is on initial stage, but I'm actively working on it. If you want to track its progress, here's its repository on GitHub: https://github.com/elomarns/sublime-coding
Anyway you can find a great cheat sheet on the links below:
As a die-hard Vim'er I like this more every time I look at it.
What I'm still missing in vintage-mode is search/replace (mostly ':s' and ':%s') and block visual mode (^V in vim). The latter habit I could probably break, but the search/replace stuff gets me all the time.
Is there perhaps a plugin/workaround already to get Vim-style search/replace or do I have to hold out for another version?
Maybe take a look at VintageEx: https://github.com/SublimeText/VintageEx I'm not sure if search/replace is included but if not you could open an issue and maybe someone adds it. :)
Thanks man, that does indeed add working search/replace!
Giving Sublime a whirl now. If nothing else it's going to be an interesting discovery of which Vim features I really use in my daily workflow.
Edit: Sadly bumped right into the next issue. It seems in addition to the lack of Vim's visual-block-mode the native multi-select (Ctrl-Shift-L) doesn't work in vintage either. No multi-line editing at all is a bit of a showstopper.
Anyway, there's always a next version, I'm not giving up hope. :)
Yes, in particular the "bulk edit actions" (not sure if they have a proper name) that you can do in Vim in either visual mode.
E.g. make visual selection, shift-I = prepend text to all selected lines. This is the same functionality as sublime multi-line editing. The problem is that neither seems to work in vintage-mode (or I'm just too dense to figure out how).
Edit: Nevermind, it works now after I started over with a fresh config. Apparently I had something bad stuck in there from earlier experiments. Thanks for the replies!
Maybe I'm not understanding exactly what you're missing, but I do believe sublime can do what you want.
* Search/replace: ctrl-f will do find (and you can use a reg-ex, case insensitive, etc, based on the little toggles to the left of the find bar. Then hit "Find all" on the right, and everything in that file will be highlighted and you'll have multiple cursors. So from there, just type what you want to replace all the words with, or really do whatever you want with your multiple cursors.
* "bulk edit actions": Works just fine for me in vintage mode. Highlight each line you want (or repeatedly press ctrl-l to add a line to your selection), hit ctrl-shift-l to get multiple cursors, and then do what you want from there. Example:
You're in vintage/command mode. Highlight three lines. Hit ctrl-l to flesh out the top and bottom lines (so the whole line is in the selection, and not just where you started and ended your mouse drag). Hit ctrl-shift-l for multiple cursors. Now you have three separate cursors, each in command mode. So you can hit "I", and you will go into insert mode three times simultaneously with three cursors at the beginning of three lines. Type "blah", and it will appear at the beginning of each of the three lines.
I haven't used ST beyond a trivial play, I'd like to use it more but I'm also a "die-hard" vim user, everytime I try to switch I discover some feature of Vim isnt there, like half decent macros (at least stored in a buffer and editable in the editor itself), or text objects, or pathname completion, or sensible shortcuts for switching panes etc ...
Rather than spend a few hours before abandoning, do you think and advanced vim user could successfully make the jump?
The problem with answering this question is what exact subset of Vim features you use and whether you're willing to learn replacement commands or hack your missing features in.
Of the features you list, you can record macros into a buffer (qa...q, @a works) but you can't "ap to edit them. Text object support is pretty solid. I don't use pathname completion in vim so no idea, switching panes is reasonable (at least on OS X) but you can rebind to something more vim-like without too much trouble.
It's taken me about 9 months to migrate, the big holdup for was correct text objects (any multiline object was linewise for a while...) and ctrl-i/ctrl-o support. For the latter, I found a plugin that mostly did what I wanted and patched Vintage in about a half hour. Vim compatibility has improved greatly since guillermoo and msfio started hacking on the Vintage repo.
As for whether to switch, the advatage of ST is better plugin API, which matters to me since I do write my own plugins and first-class support for a lot of the things I had as plugins in Vim (snippets, project drawer, autoclose/surround, project fuzzy search). I keep meaning to do a vim-incompatible Vintage "s for select" plugin which would do text objectish multicursor selection but other projects have been more pressing.
Sublime Text is really awesome! It's remarkable work, especially since there is just one developer working on it: ST2 works very well on all 3 platforms, it's very fast and has a lot of cool features. :)
I just hope that it keeps getting new features, the thing I'm really really missing is a terminal that runs in a ST2 tab.
Yeah, I've been using that one for some days already. It's really nice but not what I really want. :)
For example I can't hit tab to auto complete. I'm also missing all the zsh awesomeness, so a real terminal running in some tab would be the best solution!
This is great news. Truly staggering amount of effort for a small gap in build numbers (if you were using the last beta). Love the release and the editor. Worth every penny.
The only additional package I use is the Dark Soda Theme, is there any others that people would recommend for Rails development? The default editor seems to provide a lot. I tried SublimeCodeIntel but it kept crashing.
As a Textmate'r, I have to say using ST for the last few months has been a pleasure.
There is one thing that ST doesn't do as well though: pasting blocks of code while retaining the formatting/indentation. i.e. if I copy a loop and try and paste it into another function/whatever and the cursor isn't on the same column, the indentation gets messed up.
It's a minor quibble and far from a deal-breaker, but it is a bit of a shock when it happens.
Keep in mind that updating Sublime will revert this file. Add the bottom two lines to your Preferences > Key Bindings > User file if you want to keep them.
This goes for all preferences files in Sublime. Any declarations in the User file overrides Default settings, and Default settings are overwritten on any upgrade. This caveat has bitten me quite a few times with my packages in Package Control.
i really hoped that he would get a fix in for customizable/better matching brackets indicators before release :( those underlines are just impossible to see, and the alternative plugins that do this are not as good as SynWeb component-based editors or NP++ (scintilla)
I just tried Sublime 2 and I must admit I don't "get it." It seems like a basic editor with several features which Notepad++ already had.
Specifically for programming I cannot see why you would use this as opposed to something like Visual Studio with its context aware auto-complete (massive productivity increase).
But then again I also don't get why someone would use Vim or Emacs when you have GUI based tools available (even freely). Even for non-Windows programming Eclipse exists and has a decent (if slow) context aware auto-complete for many languages.
The only justification I've ever heard for people's continued use of tools like this boil down to either "I know the shortcut keys" or "I don't have to use the mouse."
Which to me is odd within its self as very little of my programming efficiency is lost mousing around, and a lot more lost having to jump around code blocks because auto-complete didn't magically know what an object's members were...
For me the biggest reason is speed. I use visual studio at work and love it, but when I am at home writing javascript. All those extra features just make it such a slow experience.
* you can place the cursor at multiple places since VS 2010
* Extensive search with R# (Search files, classes, methods... * using CamelCase, fuzzy..)
* sort shuffle lines, methods or any blocks with R#.
So ok, it's R#, and I agree that ST2 is amazing out of the box. (LOVE it for the Rails side project I work on) but adding R# (or standalone add-ins) to visual studio will get you there too.
Navigation within a .NET solution will always be better with VS + R# in my opinion.
I use ST2 and have been learning about using multiple cursors, but I wonder what kind of things are you doing where that comes in handy? So far I haven't had a chance to use it, especially since there already is a shortcut for commenting things out.
And why would I want to spend years crafting the perfect .vimrc for myself when tools exist that already do 80% of that better and without any configuration?
I say this with a carefully crafted and organized .vim folder.
Yes, sorry to be unclear. When Emacs 23 was released I took a good look at my config and noticed that a lot of things I had added over the years weren't needed anymore.
Looking at the new features in Emacs 24 I expect my config to shrink even more. I am still on Emacs 23 but will switch when it both shows up on Debian Testing and when my workstation needs a reboot.
>>And why would I want to spend years crafting the perfect .vimrc for myself when tools exist that already do 80% of that better and without any configuration?
If only it were that easy. Programming trends change drastically. What is fashion today, isn't tomorrow. You need tools that survive this for years(In case of vim and Emacs its decades).
I am all ears to hear about the 'tools' that you talk about.
emacs works with every language I have to use for work, including C/C++, Fortran, LaTeX, Python, Shell, and every language I like to play around with, including Haskell, Clojure, and Common Lisp.
I switch between tasks often enough that the fact emacs can do all of them (and doesn't crash all the time like Eclipse...) is great.
I use both IDEs and ST2. As with most things it comes down to personal preference, but perhaps mine may shed a little light.
I use Eclipse for Java, VC++10 for C++, and ST2 for everything else. "Everything else" is a hodgepodge of things; dynamic scripting languages, JSON/CSV files, plain text files, etc. Basically everything one may use Notepad++ for, true; but I've found that I much prefer the ST2 interface, a subjective conclusion on my part. It's fast, it looks nice (to me), and I like the API.
My biggest problem with IDEs is that they often don't like when I want to do something nonstandard. I've had trouble using git with Eclipse (it works, but I spend more time than I want fooling with it), for example. It's usually faster and simpler to add support for a new programming language or environment to a programmable text editor than to an IDE. Currently I'd say that the best environment for working with Go, is to use sublimetext2 and the GoSublime extension.
IDEs are valuable when doing what they were designed for (I use Eclipse when I write Android apps, and I'd probably use Visual Studio if I was going to write something for the MS stack), but I'm rarely doing things that fit nicely into their world, and I end up spending more time fighting with them than they are worth.
That's just for me though.
Also: you can get completion in many text editors if you install the right plugins. See the GoSublime extension that I mentioned for example.
Regarding auto-complete, I find it is extremely rare that typing speed is what slows me down, nor that I end up having to chase code around. There are plenty of fast search solutions for terminal based editors, but I don't even use things like ctags because the times I've tried it the speedup was never compelling enough to justify yet another thing to install on all the machines I work on.
Solving the problem at hand in a good way is usually far slower than editing the text in my experience. Maybe I'd think different about that if I went back to using C++, or were coding in Java or another verbose language, but thankfully I don't have to.
But the bigger reason is: They are GUI apps. I do 99% of my work over ssh connections to servers where I have lots of screens open and waiting for me to attach with all the state I want ready and waiting no matter which machine I happen to connect from.
I have shortcuts for a dozen machines or so on my desktop that throws me straight into a screen over ssh, and even in the two cases where those machines are across the Atlantic for me, my screen with my editor windows is open faster than any IDE I've tried will open locally on my machine.
Being limited to local editor-state seems to me to be a huge step backwards.
Exactly. I avoided IDEs for years thinking they were for lazy typists. Finally a friend convinced me to try one, and it totally changed the way I work. Just hit CTRL-space and see what you can do with it. Who needs to look up documentation when you can just hit CMD+B and jump into that library's source code? Oh the time I wasted...
If I don't remember a method or class name, I sure as hell don't want to auto-complete it into what I'm currently typing without opening up documentation.
See, I tried to use Visual Studio and I must admit I don't "get it". Actually, I'm not mocking you there. This is the truth. But I don't get many things.
So I end up compiling with VS and editing code in Emacs, because VS does not have a shortcut to switch between files quickly and because VS does not integrate with Git properly and because VS does not have keyboard macros and because I just don't like VS much.
Funny enough, I used to feel the same way as you do, though. I mean, how can you live without auto completion? But gradually I realized that in fact, I did not miss auto completion any more after a day or two not having it. And I did not miss a method browser either. And a menu bar. And... a mouse.
I think we humans are clever animals and we can adjust to any number of things. Me, I have been through IDEs (XCode, Eclipse, VS), Textmate, Vim and now Emacs. In the end I think it boils down to fun: I can work with pretty much any tool or language you throw at me. But to really get me going I need to have fun. And Emacs is giving me that. I am not quite sure if it really is any more or less efficient than XCode or Visual Studio or ed or whatever, but I know that I am magnitudes more productive when I am having fun than when I don't.
So use what you like best. Just don't forget that it is about having fun! Anyone who tells you otherwise... well, I frankly don't care. Have fun!
ctrl + tab to switch between open files. ctrl + w, ctrl + s to focus the project explorer, from where you can use the arrow keys to select a file from the current project.
He said "VS does not have a shortcut to switch between files quickly". I'm having trouble thinking of a quicker way to switch files than pressing ctrl + tab.
I'm a long time emacs user and I work in Visual Studio a lot. VS does have pretty good integration with Perforce and other commercial scs, which presumably is what most of it's target audience needs.
Switching between files works best with Visual Assist added. Alt-Shift-o search string will get a list of matching files, and approximates emacs buffer switching.
Regarding the great IDE vs emacs/vim debate, I find using the IDE is best when working with code, and emacs for everything else. Occasionally I'll need to do something more complicated or that can be automated with an emacs macro and I edit the file there instead.
I tried it out, and didn't see anything really compelling.
ST seemed to be going in the right direction, but it was nowhere near as complete as even an uncustomized workaday Emacs clone.
[speaking with 30+ years of Emacs, and as a user of many, many other editors in environments that didn't support Emacs: ST seemed to be like using VMS's EDT -- a fairly capable editor, but not one I'd bring home to Mom]
It is great! It really is! Give it a shot just to see what we Emacsens are missing.
But if you're like me... Well, Emacs is a way of life and it does a whole lot more than just editing text. I would love to have smooth scrolling and multiple cursors and slick animations and a cursor that can be off-screen. But at the end of the day, I prefer magit and org-mode and keyboard-only navigation and macros and so on. It still is awesome though. Do give it a try!
Maybe in a few decades it will have accumulated enough awesomeness to compare to our beloved Emacs.
As an Intellij user (and Emacs way before that) I'm trying to give this a chance, but I see no way to click-navigate through source code. Am I missing something? I tried installing SublimeCodeIntel, and that lets me (occasionally) navigate to symbols in the current file. But I don't seem to be able to click through to symbols defined in other files/classes. Am I missing something fundamental, or is this strictly the domain of the IDEs?
It's not necessarily click-through as it is type-and-find. Ctrl+P to find a file, Ctrl+R (usually) to find methods/functions, etc. It's still very fast and productive.
I found that, but it cmd+r (I'm on a Mac) seems to only show you hits in the current file. The thing I'm interested in doing is clicking on a call to foo.bar() and have it bring up Foo.rb, right on the "def bar" method.
Also a lot of the time the thing I'm trying to navigate to is library code that's referenced via require, vs something that's actually in my codebase proper.
What I do in such a situation is cmd+shift+f and do a project wide search (I leave that as the default in the "Where" field. You can tweak case sensitivity, whole word, or even just use a regex.
It opens a new tab with your search results, and you can double click on a result to be taken to that place in that file.
It's admittedly not as slick as what you're asking, but it serves me well enough in exploring a codebase.
I think that if you're using Java you might as well get some benefit out of the static typing- use an IDE that can put it to good use for source navigation.
I'm a long-time Java programmer who's spoiled by tools like Intellij, and I cry every time I want to delve into a Ruby library that my code uses, but can't do so because the editor (even Intellij/RubyMine) can't find it. Oh, you want to jump into the "foo.open()" method? Here are 58 choices- pick the one that looks like it might be the one you want.
Well, given a sufficiently advanced code parsing module, I'd consider Sublime Text an IDE. It's just that CodeIntel might not be sufficiently advanced enough (for your language of choice or in general). It's a port from the Komodo editor, where it doesn't work perfectly, either.
I don't see anything really fundamental that should stop an improved/better plugin from working, the hooks should be there.
Because you don't always know your code base very well. I almost always use vim but when a new large project comes along I've found no better way to read through it than with a mouse.
I don't- but for discoverability purposes, I'm more likely to find success by clicking on a method name than by randomly pawing keyboard shortcuts. Once discovered, I'll happily take the shortcut.
I use the mouse all the time while developing software. And oddly enough, it doesn't diminish my productivity, since I generally spend more time thinking than typing, and use an IDE to get any boilerplate out of the way or look up API calls or refactor.
Once you are used to an environment where you can do everything with no mouse, it feels very clunky and inefficient when you are in an IDE and you need to constantly switch between typing and using the mouse.
If you had to stand up and sit down in order to open a file menu you would think that was silly, but could make the same argument for it that you did for the mouse.
Even in Visual Studio that's not true, at least not for me. Just move the cursor to the symbol in question, hit the menu key and select the 'Go to definition' or whatever menu item. Or better yet, map it to something like Ctrl+] which I usually do.
This reminds me of the times I was tasked with the job of assisting junior programs with their code.
At times their mouse usage habits would drive me nuts!!!
I would say something like cut those three lines and move them outside of the loop.
I would watch them try to mark the three lines of code with the mouse.
That would take a second or two.
Then they would right click on the mouse to bring up the copy popup menu only to accidentally hit the left mouse button and remove the marked area forcing them to start again.
Five or six seconds later the task was still not done and I would say please move and let me jave a go.
It's language dependent. For instance, I've installed SublimeRope for Python refactoring. When I open a new project, I run the "Rope: New Project" command and give it the source directory of the project and the path to the virtualenv I'm installing it in.
I'm looking at a Django project right now. At the top, I see something like:
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('', [...])
Moving to the "patterns()" call, I press command-F3 and it opens "/Users/kirk/.virtualenvs/portal/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/conf/urls/__init__.py" and puts the cursor on the "def patterns()" line.
I'm also an IntelliJ user, and this really only works when you are coding in Java or other strongly typed languages. IntelliJ's ability to do this with JavaScript and Ruby is abysmal at best.
Can I just say I love the pricing model. It's paid software, with an unenforced 'trial period'. Relying on coders who use a text editor all day and appreciate good software and want to compensate someone for their good software. +1 humans.
I agree. It would be great to see some revenue numbers, if it's really successful (which I think it is), it would be a nice model for other developers or software companies.
I'm not sure about that. Developers tend to be more sensible about paying for software. Regular people will just download it without reading the "yada yada" stuff about paying.
Case in point: WinRAR, anyone?
EDIT: Just to clarify, I like the pricing model too. I just don't think it works for software in general.
An article on the demise of winamp suggested that the winamp people were receiving over $100,000 a month in checks sent by mail. I would suppose if you had an easier way to pay then checks by mail, even more "regular" people would be willing to pay.
I point out winamp because it is similar in that no new features are unlocked after paying.
Well, it's infinite trialware, but it pops a few nag screens here and there, especially when saving files. And this, when you are working and have a habit of mashing Cmd+S regularly, gets in the way often enough.
I think the nag dial is just about right between casual use/unlimited evaluation and I'm using this editor for real shit.
Interestingly, I think this model works best for 'software for developers'. Developers naturally empathize with the author of their software much more so than a 'typical user' would.
Developers are typically very bad software customers. As much as they could empathize, more often than not, they think they could do it themselves in a couple of weekends.
I have wasted so many months of my life in this trap, spending a few days coding an app myself rather than paying usually less than $100 for it (usually because I want some small feature it doesn't have) . I dont think its ever been worth it in the long run.
I'm fairly sure he's made really quite a large chunk of dollar out of it already. Especially after he started forcing people to pay up if they wanted the very latest builds. That was a stroke of genius.
I saw it as more that he didn't want the masses trying to use potentially buggy builds as their 9-5 editor, which is what happened with "dev" beforehand.
I really appreciate being able to just use it on whatever machine I am at. I did bought it initially just to support the developer, but since I use both Linux, OSX and Win, it helps great deal to have two good editors, vim and Sublime Text ;)
That's interesting. Back when I was using Windows, I had some tools (like WinRAR, I think) with that sort of license. I hated it. One of the things I really loved when switching to Linux is that I didn't have to deal with that sort of nonsense for an archiving tool, or for any other tool I needed but didn't use often.
Naturally, I use a text editor almost all the time. That doesn't make this licensing model any better though: it's still annoying, and there are still superior alternatives that are free in both senses of the word. For me, that alternative happens to be Emacs, but there are other options that are almost as good :P.
Of course, it is much harder to learn how to use Emacs properly (navigating with the keyboard, using more obscure commands, writing your own elisp... and so on). However, as everybody has pointed out, your text editor is probably your most important tool; it seems odd to be willing to put down some money on one but not willing to sit down with a tutorial and learn how to use something like Emacs well. Sure it might slow you down for a bit (it took me about a week to get as proficient with Emacs as I was before), but it's completely worth it in the long run. I've been using Emacs for almost three years now, and it's helped me do all sorts of things more efficiently than I would have with another editor.
While I agree with almost everything you said, I think you're downplaying the importance of person preference. I used Emacs nearly exclusively for well over a decade, but fell in love with ST2 the moment I tried it. To me, it feels like a well-configured Emacs that's 95% the way I like it right out of the box. The other 5% has been easy to install through the package manager. As a bonus, it's scripted in a language I like working in.
Don't assume that people are flocking to ST2 because they're not aware of the alternatives. I'm very aware of them. For me, the advantages of ST2 over Emacs were worth the money and I'm glad I bought a license.
That said, I always keep the latest Emacs installed on my laptop and I could jump back into it if ST2 were to disappear off the planet tomorrow. I hope it doesn't, though, because I find ST2 more pleasant to use than Emacs and I hope I can keep using it for a long time.
Based on the great reviews of ST2, I switched from vim to ST2 (with vintage mode) a few months ago. It seems good... but it hasn't lived up to the reviews for me.
I'm guessing I'm missing some of the functionality. Is there a tutorial anywhere to show me what I'm missing?
How have you learned about ST2 features (rather than just repeating your old editing habits in a new program)?
Thanks to that blog post I am convinced that ST2 is a better editor than Eclipse. I'd really like to see a similar list for someone switching from vim though.
I did too but couldn't live with the way search worked in Sublime. Substitutions are also too ingrained for editing. In my opinion Sublime is vastly superior to an IDE but way underpowered to compete with vim or emacs.
For me, at least when I tried the beta, the sore points where:
1. The linting plugin support was woefully broken and often hung up the editor, that may be better now, but it seems to be a single thread for all plugins. For Vim I use syntastic and find it works great.
2. Visual mode (using vintage) isn't great, block selection pretty much didn't work. There was a plugin that could do multiselect based on regex, but for the most part that wasn't what I needed.
3. Speed wasn't great but it was a beta, I'm tempted to give it another go. To be honest though, at least for RoR work Rubymine seems like a better editor if you are looking for IDE features. It had a pretty decent Vim mode too, no worse than Vintage.
4. Split panes were not great either, I need good keyboard shortcuts to open into vertical and horizontal splits quickly and easily or they are basically useless. Almost every new editor fails at this and makes me wonder if the developers have ever used a decently powerful editor.
If editor developers are not going to learn from the "good parts" of Vim and Emacs then I'm afraid we will never really move away from them.
I don't even use a fraction of the power available to me from Vim yet, but to switch editors I have to be able to find sufficient functionality to make up for what I do use. Believe me I'd love to find an editor other than Vim that works for me.
There are several problems with sublime especially as an IDE, for 60 bucks I don't see how I can justify not having:
A decent linter.
Auto-complete is really shabby.
Find and search, also sub-par.
No separate console window.
Though it does have some good parts.
Map view
Speed
Multi-select
In fairness -- and I write this as someone who has paid for ST2 and recommends it -- the linting and auto-complete support are weak compared to a good IDE.
As a text editor, ST2 is great. The editor has a project system where you just add whichever directories you care about, which is simple but effective for many jobs.
As an IDE replacement, I don't think the combination of available packages is even close to sufficient yet. If you want to start looking at things like code navigation, code completion, refactoring, and integration with external tools for build/test/analysis/source control, you need a bit more flexibility than the default project system. The catch is that for this kind of tool, it has to be done so that it plays nicely with arbitrary plug-ins in arbitrary languages, and without descending into the kind of abomination that is configuring a project in most IDEs.
That's a very tough problem to solve well. If you work on projects using multiple programming languages, I'm not sure anyone has actually solved it yet. But for single languages, IDEs do a lot more than what ST2's default project system can support, and if anyone has built a plug-in that gets anywhere near what I think would be necessary, I've never found it so far.
I wish those plugins worked on plain Windows (were written in C++ or Python), but they mostly depend on external utilities. (In other words: there aren't things like Emacs' js2-mode that really are native to Emacs and will work everywhere).
I learned ST2 from my coworkers, who were all using it. Now I'm learning vim much the same way. I've switched to vim fulltime from ST2, and here are the features of ST2 that I miss:
1. Multiple cursors. This is the only reason I ever use ST2 now. They're sort of like vim's visual block mode, except on steroids. For example, if you have multiple cursors, you can start typing and each cursor will behave as in insert point. Each cursor can also move independently, which means you can do things like moving word-wise or line-wise over lines which are not heterogeneous. Using Cmd + D, you can add selections, and then they're multiple cursors. This ends up replacing things like find-replace for me, because it's so fast and easy.
I should make a video of me using multiple cursors, because I feel I'm not explaining it well at all.
2. Cmd+p/goto-anything. Suppose I want to go to the getUser method of the auth class. All I have to do is hit Cmd + p, then type “Au@getUser”. As I type, a window appears with filenames, so first I type, “Au”, and then seeing that “Auth.php” is at the top, I type an @, which tells ST2 I'm now looking for a method, it then starts searching for methods within Auth.php.
Now, with vim I use Cmd-T, but that only gets me to the file, and it's kind of a bitch to get it working. It also has a thing to navigate methods, but I have to use something called tags, which means a) I have to figure out what the hell that is and b) I have to fiddle with getting it all setup. All that time could be spent programming. Mmmm, programming. I understand ctrlp makes some of this better, but I haven't tried it yet.
3. Better platform integration. With vim, there's a bunch of weird shit I have to do to get the clipboard working properly (including recompiling vim o_O), and the mouse seems janky. I mostly never use the mouse anyway, but the clipboard issues are annoying.
4. Python API vs vimscript. I wrote a couple of small plugins for ST2, which was nice and easy, because everybody knows python, and the API is modern and well thought out. With vim, I feel like it's a whole different matter, starting with learning a new programming language.
It doesn't seem like the main issue is age as much as that most people will be coming to VIM from either IDEs or editors that had built-in code-navigation features, so moving to something like vim involves the extra overhead of learning things like tags or rope even.
It's funny, I grew up writing C++, but in an IDE. You're probably right that older people may have started programming before IDEs were commonplace (?). I've actually never liked using IDEs for interpreted languages, but have always used them for compiled languages.
I'm talking specifically about tags, because it's the tool I'd need to use to get goto-anything functionality in vim using command-t or ctrlp.
Whenever there's a debate about something like ST2 or an IDE vs vim/emacs, the argument is always “well you can do all that stuff with vim, just install x, y and z plugins", and I was making the point that with ST2, the out-of-the-box goto-anything functionality is really excellent. I love vim, and can't see myself ever going back on that, but I certainly appreciated with ST2 that the baked-in, absolutely-zero-effort-required goto-anything functionality was really excellent.
>Whenever there's a debate about something like ST2 or an IDE vs vim/emacs, the argument is always “well you can do all that stuff with vim, just install x, y and z plugins",
That might be true for vim, but it isn't for Emacs. Most of what you need is built-in, with the occasional plugin only coming in when you want hardcore IDE functionality or something uber language specific. It supports virtually every language, VCS, use-case, etc. out of the box though.
Has it ever occurred to you that people who've been programming for decades have a reason for putting forth the advantages of editors like Emacs and vim?
> Has it ever occurred to you that people who've been programming for decades have a reason for putting forth the advantages of editors like Emacs and vim?
Of course--I stated clearly that I'm a vim user and that I love it, and couldn't see myself going back. But I still appreciate the out of the box functionality and ease-of-use of ST2.
> I should make a video of me using multiple cursors, because I feel I'm not explaining it well at all.
I'd love to have this explained better with good examples of where it's useful, other than just changing variable names.
I understand this is one of the most used features but I have a hard time seeing a lot of use for it, but that's probably because I come from a single-cursor editor background.
357 comments
[ 2.2 ms ] story [ 297 ms ] threadCompare that to the 7 day trial of Coda 2. Nowhere near enough time to evaluate an editor, let alone wait for the next bugfix if you run into any issues.
PS: If it got even a basic terminal...
EDIT2: ST2 does have split panes, I just can't run a terminal in them.
1: http://www.sublimetext.com/docs/2/osx_command_line.html 2: https://github.com/misfo/Shell-Turtlestein (or from Package Control)
EDIT: Ahh I see you edited, nevermind! But you can split the windows easily too!
EDIT: There can be only one!
[0] https://github.com/kien/ctrlp.vim
EDIT: Some insane person seems to have done this: https://github.com/wuub/SublimePTY
I have a linux machine at work and use a MacBook for remote work. When I'm remote I just run Sublime locally on my Mac and set up an sshfs mount to my workstation for the source files. Works like a charm.
Note - not at all saying you're doing it wrong :-) just curious if you'd tried this kind of setup and why it didn't work for you?
[1] The other is it's absolute refusal to "fit in" on whatever platform it's on. Fits with the kitchen-sink approach: why interop with [program X] when you can just build it in?
Although I don't want my editor to do all those things, for me the reason emacs wins is because it invites you to learn the (not unpleasant, genuine programming) language in which it is written and then do whatever you want with it. Even if you basically want to keep it simple having that power to hand is nice.
An editor that can't work in a screen session is simply a non-starter for me, especially as there's pretty much no _benefit_ in a GUI for any of the text editors I've tried.
I was using NFS, btw. Never tried sshfs.
I don't even click tabs that I have open any more, I just hit Apple + p and start typing say g-l-o for global.css and I know its there, hit enter and voila.
Like you say, multi-platform too, so I get to use it on my little Ubuntu netbook and on my iMac. Love it. Really should buy a licence.
https://github.com/wincent/Command-T
https://github.com/kien/ctrlp.vim
Edit: Scrap that, rush-read - CntrlP doesn't beat Sublime's Apple+P. Honestly, try it and you'll see what I mean.
At one point, the Textmate website mentioned that a follow-mode-like feature was in the works, but 1) I can't find that mention anymore, and 2) even if it is, I'd rather not wait forever for it.
I believe this plugin does what you want: https://github.com/atbell/SublimeSynchroScroll
http://cl.ly/0N0X1j401o22353m2V2V
I'd also love to see a "cheat-sheet" for shortcut keys.
Anyway you can find a great cheat sheet on the links below:
PC: https://gist.github.com/1736542
Mac: https://gist.github.com/1839777
What I'm still missing in vintage-mode is search/replace (mostly ':s' and ':%s') and block visual mode (^V in vim). The latter habit I could probably break, but the search/replace stuff gets me all the time.
Is there perhaps a plugin/workaround already to get Vim-style search/replace or do I have to hold out for another version?
Giving Sublime a whirl now. If nothing else it's going to be an interesting discovery of which Vim features I really use in my daily workflow.
Edit: Sadly bumped right into the next issue. It seems in addition to the lack of Vim's visual-block-mode the native multi-select (Ctrl-Shift-L) doesn't work in vintage either. No multi-line editing at all is a bit of a showstopper.
Anyway, there's always a next version, I'm not giving up hope. :)
E.g. make visual selection, shift-I = prepend text to all selected lines. This is the same functionality as sublime multi-line editing. The problem is that neither seems to work in vintage-mode (or I'm just too dense to figure out how).
Edit: Nevermind, it works now after I started over with a fresh config. Apparently I had something bad stuck in there from earlier experiments. Thanks for the replies!
Try selecting several lines in vintage mode, then hitting Ctrl+l?
* Search/replace: ctrl-f will do find (and you can use a reg-ex, case insensitive, etc, based on the little toggles to the left of the find bar. Then hit "Find all" on the right, and everything in that file will be highlighted and you'll have multiple cursors. So from there, just type what you want to replace all the words with, or really do whatever you want with your multiple cursors.
* "bulk edit actions": Works just fine for me in vintage mode. Highlight each line you want (or repeatedly press ctrl-l to add a line to your selection), hit ctrl-shift-l to get multiple cursors, and then do what you want from there. Example:
You're in vintage/command mode. Highlight three lines. Hit ctrl-l to flesh out the top and bottom lines (so the whole line is in the selection, and not just where you started and ended your mouse drag). Hit ctrl-shift-l for multiple cursors. Now you have three separate cursors, each in command mode. So you can hit "I", and you will go into insert mode three times simultaneously with three cursors at the beginning of three lines. Type "blah", and it will appear at the beginning of each of the three lines.
Rather than spend a few hours before abandoning, do you think and advanced vim user could successfully make the jump?
Of the features you list, you can record macros into a buffer (qa...q, @a works) but you can't "ap to edit them. Text object support is pretty solid. I don't use pathname completion in vim so no idea, switching panes is reasonable (at least on OS X) but you can rebind to something more vim-like without too much trouble.
It's taken me about 9 months to migrate, the big holdup for was correct text objects (any multiline object was linewise for a while...) and ctrl-i/ctrl-o support. For the latter, I found a plugin that mostly did what I wanted and patched Vintage in about a half hour. Vim compatibility has improved greatly since guillermoo and msfio started hacking on the Vintage repo.
As for whether to switch, the advatage of ST is better plugin API, which matters to me since I do write my own plugins and first-class support for a lot of the things I had as plugins in Vim (snippets, project drawer, autoclose/surround, project fuzzy search). I keep meaning to do a vim-incompatible Vintage "s for select" plugin which would do text objectish multicursor selection but other projects have been more pressing.
I just hope that it keeps getting new features, the thing I'm really really missing is a terminal that runs in a ST2 tab.
For example I can't hit tab to auto complete. I'm also missing all the zsh awesomeness, so a real terminal running in some tab would be the best solution!
With the need to maintain backwards compatibility with a stable version 2.0, that's not going to happen now. :(
The only additional package I use is the Dark Soda Theme, is there any others that people would recommend for Rails development? The default editor seems to provide a lot. I tried SublimeCodeIntel but it kept crashing.
and Rails Nav: https://github.com/noklesta/SublimeRailsNav which gives you a pretty neat way navigating your app. Much like the common vi plugins.
There is one thing that ST doesn't do as well though: pasting blocks of code while retaining the formatting/indentation. i.e. if I copy a loop and try and paste it into another function/whatever and the cursor isn't on the same column, the indentation gets messed up.
It's a minor quibble and far from a deal-breaker, but it is a bit of a shock when it happens.
edit: if anyone is curious,
Preferences > Key Bindings > Default [edit: should use User as noted below]
ctrl+f paste, and change
toUsing the user file has two advantages:
First, you avoid mishaps when some future version makes changes to the default bindings file.
Second, you can quickly check what are your non-default settings.
This goes for all preferences files in Sublime. Any declarations in the User file overrides Default settings, and Default settings are overwritten on any upgrade. This caveat has bitten me quite a few times with my packages in Package Control.
http://sublimetext.userecho.com/topic/19331-better-or-custom...
Specifically for programming I cannot see why you would use this as opposed to something like Visual Studio with its context aware auto-complete (massive productivity increase).
But then again I also don't get why someone would use Vim or Emacs when you have GUI based tools available (even freely). Even for non-Windows programming Eclipse exists and has a decent (if slow) context aware auto-complete for many languages.
The only justification I've ever heard for people's continued use of tools like this boil down to either "I know the shortcut keys" or "I don't have to use the mouse."
Which to me is odd within its self as very little of my programming efficiency is lost mousing around, and a lot more lost having to jump around code blocks because auto-complete didn't magically know what an object's members were...
* No CTRL+D duplicate line in VS
* Can't use middle-mouse in VS to select multiple columns
* Can't place your cursor in many multiple locations at once in VS
* You can use ALT+DRAG to select columns in VS but there's no way to put a carat at the end of each of a bunch of lines of varying sizes
* CTRL+J to append the next line to the current one, removing all whitespace. I feel as if this has saved me a year of life.
Those five alone are extremely useful when writing JavaScript and HTML.
* The autocomplete in VS does not "learn" like the sublime text one does.
* No good incremental search in VS (might have changed on the very newest version?)
* CTRL+B opens the current HTML page being edited in my browser on sublime text. There's probably an equivalent in VS though
* highlighting a string of text highlights all similar ones in sublime text. In VS for C# it sorta does this if the string of text is a token
* The ability to sort and shuffle lines in sublime text can be useful at times, though this is usually when preparing data and not when writing code.
* Ctrl + D does copy lines
* you can place the cursor at multiple places since VS 2010
* Extensive search with R# (Search files, classes, methods... * using CamelCase, fuzzy..)
* sort shuffle lines, methods or any blocks with R#.
So ok, it's R#, and I agree that ST2 is amazing out of the box. (LOVE it for the Rails side project I work on) but adding R# (or standalone add-ins) to visual studio will get you there too.
Navigation within a .NET solution will always be better with VS + R# in my opinion.
1. Ctrl+A Select all the lines
2. Ctrl+Shift+L to split into multiple cursors, 1 per line
3. Home/Ctrl+Shift+arrows/etc to select stuff to copy/delete
I find it easier than constructing a regex to pass to find/replace.
so you got some property names like
a
b
c
d
now convert them into ['a', 'b', 'c', 'd']
with ST2, you middle mouse vertical select, ctrl+right, press ', then end, press ,, then del.
You'd get it if you did.
I say this with a carefully crafted and organized .vim folder.
And I have an .emacs.d folder carefully crafted over 20 years.
Looking at the new features in Emacs 24 I expect my config to shrink even more. I am still on Emacs 23 but will switch when it both shows up on Debian Testing and when my workstation needs a reboot.
If only it were that easy. Programming trends change drastically. What is fashion today, isn't tomorrow. You need tools that survive this for years(In case of vim and Emacs its decades).
I am all ears to hear about the 'tools' that you talk about.
emacs lives on every server I have to work on.
emacs works with every language I have to use for work, including C/C++, Fortran, LaTeX, Python, Shell, and every language I like to play around with, including Haskell, Clojure, and Common Lisp.
I switch between tasks often enough that the fact emacs can do all of them (and doesn't crash all the time like Eclipse...) is great.
I use Eclipse for Java, VC++10 for C++, and ST2 for everything else. "Everything else" is a hodgepodge of things; dynamic scripting languages, JSON/CSV files, plain text files, etc. Basically everything one may use Notepad++ for, true; but I've found that I much prefer the ST2 interface, a subjective conclusion on my part. It's fast, it looks nice (to me), and I like the API.
IDEs are valuable when doing what they were designed for (I use Eclipse when I write Android apps, and I'd probably use Visual Studio if I was going to write something for the MS stack), but I'm rarely doing things that fit nicely into their world, and I end up spending more time fighting with them than they are worth.
That's just for me though.
Also: you can get completion in many text editors if you install the right plugins. See the GoSublime extension that I mentioned for example.
Solving the problem at hand in a good way is usually far slower than editing the text in my experience. Maybe I'd think different about that if I went back to using C++, or were coding in Java or another verbose language, but thankfully I don't have to.
But the bigger reason is: They are GUI apps. I do 99% of my work over ssh connections to servers where I have lots of screens open and waiting for me to attach with all the state I want ready and waiting no matter which machine I happen to connect from.
I have shortcuts for a dozen machines or so on my desktop that throws me straight into a screen over ssh, and even in the two cases where those machines are across the Atlantic for me, my screen with my editor windows is open faster than any IDE I've tried will open locally on my machine.
Being limited to local editor-state seems to me to be a huge step backwards.
Auto-complete isn't about typing speed. It's about API exploration.
So I end up compiling with VS and editing code in Emacs, because VS does not have a shortcut to switch between files quickly and because VS does not integrate with Git properly and because VS does not have keyboard macros and because I just don't like VS much.
Funny enough, I used to feel the same way as you do, though. I mean, how can you live without auto completion? But gradually I realized that in fact, I did not miss auto completion any more after a day or two not having it. And I did not miss a method browser either. And a menu bar. And... a mouse.
I think we humans are clever animals and we can adjust to any number of things. Me, I have been through IDEs (XCode, Eclipse, VS), Textmate, Vim and now Emacs. In the end I think it boils down to fun: I can work with pretty much any tool or language you throw at me. But to really get me going I need to have fun. And Emacs is giving me that. I am not quite sure if it really is any more or less efficient than XCode or Visual Studio or ed or whatever, but I know that I am magnitudes more productive when I am having fun than when I don't.
So use what you like best. Just don't forget that it is about having fun! Anyone who tells you otherwise... well, I frankly don't care. Have fun!
Switching between files works best with Visual Assist added. Alt-Shift-o search string will get a list of matching files, and approximates emacs buffer switching.
Regarding the great IDE vs emacs/vim debate, I find using the IDE is best when working with code, and emacs for everything else. Occasionally I'll need to do something more complicated or that can be automated with an emacs macro and I edit the file there instead.
ST seemed to be going in the right direction, but it was nowhere near as complete as even an uncustomized workaday Emacs clone.
[speaking with 30+ years of Emacs, and as a user of many, many other editors in environments that didn't support Emacs: ST seemed to be like using VMS's EDT -- a fairly capable editor, but not one I'd bring home to Mom]
But if you're like me... Well, Emacs is a way of life and it does a whole lot more than just editing text. I would love to have smooth scrolling and multiple cursors and slick animations and a cursor that can be off-screen. But at the end of the day, I prefer magit and org-mode and keyboard-only navigation and macros and so on. It still is awesome though. Do give it a try!
Maybe in a few decades it will have accumulated enough awesomeness to compare to our beloved Emacs.
Also a lot of the time the thing I'm trying to navigate to is library code that's referenced via require, vs something that's actually in my codebase proper.
It opens a new tab with your search results, and you can double click on a result to be taken to that place in that file.
It's admittedly not as slick as what you're asking, but it serves me well enough in exploring a codebase.
I'm an Intellij power user but tend to use Sublime for Rails & other dynamic languages. Using the same environment all of the time would be nice.
I'm a long-time Java programmer who's spoiled by tools like Intellij, and I cry every time I want to delve into a Ruby library that my code uses, but can't do so because the editor (even Intellij/RubyMine) can't find it. Oh, you want to jump into the "foo.open()" method? Here are 58 choices- pick the one that looks like it might be the one you want.
There is no reason why you must subject yourself to that sort of a torture.
The IDEs are designed to make your life easy for that kind of verbosity and boiler plate.
I don't see anything really fundamental that should stop an improved/better plugin from working, the hooks should be there.
https://github.com/SublimeText/CTags
sorry. https://github.com/SublimeText/CTags
If you had to stand up and sit down in order to open a file menu you would think that was silly, but could make the same argument for it that you did for the mouse.
In the Zeus editor you just have to place the cursor on the name (using the keyboard or mouse) and hit the F12 key.
This reminds me of the times I was tasked with the job of assisting junior programs with their code.
At times their mouse usage habits would drive me nuts!!!
I would say something like cut those three lines and move them outside of the loop.
I would watch them try to mark the three lines of code with the mouse.
That would take a second or two.
Then they would right click on the mouse to bring up the copy popup menu only to accidentally hit the left mouse button and remove the marked area forcing them to start again.
Five or six seconds later the task was still not done and I would say please move and let me jave a go.
A few key strokes later the cut and past is done.
You should probably work on your patience just for the sake of self improvement. That's a little ridiculous.
I'm looking at a Django project right now. At the top, I see something like:
Moving to the "patterns()" call, I press command-F3 and it opens "/Users/kirk/.virtualenvs/portal/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/conf/urls/__init__.py" and puts the cursor on the "def patterns()" line.It works pretty well.
Case in point: WinRAR, anyone?
EDIT: Just to clarify, I like the pricing model too. I just don't think it works for software in general.
I point out winamp because it is similar in that no new features are unlocked after paying.
I think the nag dial is just about right between casual use/unlimited evaluation and I'm using this editor for real shit.
That is, it's not like, say, Chrome release where it's Dev -> Beta -> Stable. It is (was?) more like Nightly -> Dev -> Beta/Stable.
That right there sold me- no issues at all getting purchase orders at work and regardless of the OS I'm using I still have the same editor.
Of course, it is much harder to learn how to use Emacs properly (navigating with the keyboard, using more obscure commands, writing your own elisp... and so on). However, as everybody has pointed out, your text editor is probably your most important tool; it seems odd to be willing to put down some money on one but not willing to sit down with a tutorial and learn how to use something like Emacs well. Sure it might slow you down for a bit (it took me about a week to get as proficient with Emacs as I was before), but it's completely worth it in the long run. I've been using Emacs for almost three years now, and it's helped me do all sorts of things more efficiently than I would have with another editor.
Don't assume that people are flocking to ST2 because they're not aware of the alternatives. I'm very aware of them. For me, the advantages of ST2 over Emacs were worth the money and I'm glad I bought a license.
That said, I always keep the latest Emacs installed on my laptop and I could jump back into it if ST2 were to disappear off the planet tomorrow. I hope it doesn't, though, because I find ST2 more pleasant to use than Emacs and I hope I can keep using it for a long time.
I'm guessing I'm missing some of the functionality. Is there a tutorial anywhere to show me what I'm missing?
How have you learned about ST2 features (rather than just repeating your old editing habits in a new program)?
Edit: This was posted above... https://news.ycombinator.com/item?id=4162210. Somebody is apparently writing an ebook and the 1st chapter is available.
That one made me laugh!
1. The linting plugin support was woefully broken and often hung up the editor, that may be better now, but it seems to be a single thread for all plugins. For Vim I use syntastic and find it works great.
2. Visual mode (using vintage) isn't great, block selection pretty much didn't work. There was a plugin that could do multiselect based on regex, but for the most part that wasn't what I needed.
3. Speed wasn't great but it was a beta, I'm tempted to give it another go. To be honest though, at least for RoR work Rubymine seems like a better editor if you are looking for IDE features. It had a pretty decent Vim mode too, no worse than Vintage.
4. Split panes were not great either, I need good keyboard shortcuts to open into vertical and horizontal splits quickly and easily or they are basically useless. Almost every new editor fails at this and makes me wonder if the developers have ever used a decently powerful editor.
If editor developers are not going to learn from the "good parts" of Vim and Emacs then I'm afraid we will never really move away from them.
I don't even use a fraction of the power available to me from Vim yet, but to switch editors I have to be able to find sufficient functionality to make up for what I do use. Believe me I'd love to find an editor other than Vim that works for me.
Though it does have some good parts. Map view Speed Multi-select
There's brilliant plugins for decent linter & auto-complete; If you didn't install package manager you didn't spend enough time with sublime.
Stating find & search is sub-par in my opinion means you must have honestly spent less than a day utilizing the program.
Search:
Ctrl+P
Ctrl+shift+p
ctrl+f
ctrl+shift+f
ctrl+shift+f alt+r (Supports regex)
ctrl+h
Separate console window? As in you can't remove it from the sublime window? Else ctrl+`
As a text editor, ST2 is great. The editor has a project system where you just add whichever directories you care about, which is simple but effective for many jobs.
As an IDE replacement, I don't think the combination of available packages is even close to sufficient yet. If you want to start looking at things like code navigation, code completion, refactoring, and integration with external tools for build/test/analysis/source control, you need a bit more flexibility than the default project system. The catch is that for this kind of tool, it has to be done so that it plays nicely with arbitrary plug-ins in arbitrary languages, and without descending into the kind of abomination that is configuring a project in most IDEs.
That's a very tough problem to solve well. If you work on projects using multiple programming languages, I'm not sure anyone has actually solved it yet. But for single languages, IDEs do a lot more than what ST2's default project system can support, and if anyone has built a plug-in that gets anywhere near what I think would be necessary, I've never found it so far.
1. Multiple cursors. This is the only reason I ever use ST2 now. They're sort of like vim's visual block mode, except on steroids. For example, if you have multiple cursors, you can start typing and each cursor will behave as in insert point. Each cursor can also move independently, which means you can do things like moving word-wise or line-wise over lines which are not heterogeneous. Using Cmd + D, you can add selections, and then they're multiple cursors. This ends up replacing things like find-replace for me, because it's so fast and easy.
I should make a video of me using multiple cursors, because I feel I'm not explaining it well at all.
2. Cmd+p/goto-anything. Suppose I want to go to the getUser method of the auth class. All I have to do is hit Cmd + p, then type “Au@getUser”. As I type, a window appears with filenames, so first I type, “Au”, and then seeing that “Auth.php” is at the top, I type an @, which tells ST2 I'm now looking for a method, it then starts searching for methods within Auth.php.
Now, with vim I use Cmd-T, but that only gets me to the file, and it's kind of a bitch to get it working. It also has a thing to navigate methods, but I have to use something called tags, which means a) I have to figure out what the hell that is and b) I have to fiddle with getting it all setup. All that time could be spent programming. Mmmm, programming. I understand ctrlp makes some of this better, but I haven't tried it yet.
3. Better platform integration. With vim, there's a bunch of weird shit I have to do to get the clipboard working properly (including recompiling vim o_O), and the mouse seems janky. I mostly never use the mouse anyway, but the clipboard issues are annoying.
4. Python API vs vimscript. I wrote a couple of small plugins for ST2, which was nice and easy, because everybody knows python, and the API is modern and well thought out. With vim, I feel like it's a whole different matter, starting with learning a new programming language.
Well. I'm not exactly old, but seeing someone say that about tags has made me feel rather ancient.
There are better ways to navigate code than tags. For Emacs, for example, my setup uses Rope to navigate Python code.
People who grew up coding C had to learn to use ctags, whereas, people who start out in interpreted languages are much less likely to encounter such.
>involves the extra overhead of learning things like tags or rope even.
Rope has no learning overhead. It works the same as any IDE. You use the functionality it provides like "go-to definition" or refactoring.
Tags are just a file you generate using a command and the editor uses it to provide a "go-to definition" faculty.
Edited my comment to better reflect the content and mood I wanted to convey.
Thanks for the feedback.
I'm talking specifically about tags, because it's the tool I'd need to use to get goto-anything functionality in vim using command-t or ctrlp.
Whenever there's a debate about something like ST2 or an IDE vs vim/emacs, the argument is always “well you can do all that stuff with vim, just install x, y and z plugins", and I was making the point that with ST2, the out-of-the-box goto-anything functionality is really excellent. I love vim, and can't see myself ever going back on that, but I certainly appreciated with ST2 that the baked-in, absolutely-zero-effort-required goto-anything functionality was really excellent.
That might be true for vim, but it isn't for Emacs. Most of what you need is built-in, with the occasional plugin only coming in when you want hardcore IDE functionality or something uber language specific. It supports virtually every language, VCS, use-case, etc. out of the box though.
Has it ever occurred to you that people who've been programming for decades have a reason for putting forth the advantages of editors like Emacs and vim?
Of course--I stated clearly that I'm a vim user and that I love it, and couldn't see myself going back. But I still appreciate the out of the box functionality and ease-of-use of ST2.
You can bolt vi/vim on top of it if you really want the modal editing though.
I'd love to have this explained better with good examples of where it's useful, other than just changing variable names.
I understand this is one of the most used features but I have a hard time seeing a lot of use for it, but that's probably because I come from a single-cursor editor background.