Sublime Blog

Sublime Text 2: Beta

Since the first public Alpha at the end of January, there have been 12 new releases, and many more dev builds. On average, that's a new version every two weeks for the past five months. During this time, Sublime Text 2 has made great strides in functionality, and a correspondingly large increase in users. Sublime Text 2 has long outgrown its Alpha tag, so it's time to put a Beta label on instead.

There's a new release to mark the occasion, and it's got a bigger change list than any previous version. A couple of the highlights are:

Command Palette

The Command Palette provides a quick way to access commands that don't warrant a key binding, and would usually be hidden away in a menu. For example, turning Word Wrap on or off, or changing the syntax highlighting mode of the current file. It uses the same fuzzy matching as Goto Anything does, meaning most commands are accessible with just a few key presses.

The command palette can be triggered via Ctrl+Shift+P on Windows and Linux, or Command+Shift+P on OS X.

Distraction Free mode

Distraction Free mode is full screen, with an extra emphasis on your content. All user interface chrome is hidden, leaving you with nothing but the file you're working on. It's a great help when you want to ignore everything else and just write. Distraction Free mode is accessible from the View menu.

Now that Sublime Text 2 is in Beta, I'm planning to reduce the number of releases to around one a month, to avoid frequent update prompts. If you prefer living on the edge, the dev channel typically has a new build every 2 or 3 days.

Traditionally, the Beta tag has been used on software to indicate it's feature complete, and is going through testing before the final release. That's not the case with the Sublime Text 2 Beta, which is ready to use, but subject to change. New releases will be coming out, and they'll be adding new functionality and changing how things work.

People use Sublime Text 2 every day to get real work done - if you haven't tried it yet, now is a great time.


Jon Skinner

Sublime Text 2: New Version

A new version of the Sublime Text 2 alpha, 20110129, is out now. This primarily addresses compatibility with Linux distributions other than Ubuntu, but I've snuck in some extra features for everyone:

  • OS X: Command+1 will select the first tab, Command+2 the second, and so on.
  • Various Goto Anything improvements, mostly notably, symbol browsing will start at the symbol closest to the cursor, and spaces are ignored when searching through files. Previously, a space would only match against a file name with a space in it.
  • Syntax highlighting for the Go programming language.
  • More!

The full list of changes is on the Sublime Text 2 page. Release announcements are generally posted on the forum, rather than the blog, so I'll be posting them there (and on twitter) after this release.

Jon Skinner

Sublime Text 2 FAQ

There's been a fantastic response to the Sublime Text 2 alpha. A few questions have come up several times; answers are below.

How do I change the font?
Add these lines to Preferences/User File Preferences:

	"font_face": "Courier New",
	"font_size": 10

and then change as desired. The font will change when you save.

How do I open a directory as a project?
Drag the directory onto the sidebar, and it'll be added to the project. You'll then be able to browse using the sidebar, and search using Ctrl+P (Command+P on OS X)

How do I open files using the command line on OS X?
A command line tool will be coming in the future for OS X, in the mean time you can use this method, although you'll have to replace references to Sublime Text X with Sublime Text 2.

How do I reset Sublime Text 2 to a fresh state?
You'll need to exit Sublime Text 2, and then delete the data directory, which can be found at:

  • Windows: %APPDATA%/Sublime Text 2
  • OS X: ~/Library/Application Support/Sublime Text 2
  • Linux: ~/.Sublime Text 2

I'm having trouble running Sublime Text 2 on Linux
Ubuntu is the only supported distribution at the moment. I'm working to expand this as soon as possible.

Jon Skinner

Sublime Text 2: Public Alpha

Sublime Text 2 is available now as a public alpha, for Windows, OS X, and Linux.

Sublime Text 2 started life as Sublime Text X, and was first available as a preview to registered users several months ago. Since then, there's been an average of one new release a week. It's come a long way, and it's time to open it to a wider audience.

Sublime Text 2 is currently at a late alpha stage. Primarily, this means there are still several features missing compared to Sublime Text 1. These include spell checking, bookmarks, distraction free editing, a full python API, and general UI polish. These features will be coming over the next few months.

Goto Anything

Sublime Text 2 has Goto Anything (Ctrl+P on Windows and Linux, Command+P on OS X) to quickly navigate between and within files:

  • Type part of a file name to open it. Files can be open files, recently closed files, or files in the project. The fuzzy matching is fast and intelligent, providing instant-as-you-type navigation on 50,000+ file projects.
  • Type an '@' character, and start browsing by symbol. Type '#' to search within the file, or ':' to go to a line number.
  • Combining these together, for example, "tp@rf" may take you to a function called "read_file" within a file named "". Similarly, 'tp:100' would take you to line 100 of the same file.

The Goto Anything panel previews where it will take you as you type, loading files asynchronously in the background. You can use this to quickly look up the definition of a function, pressing escape to go back.

The various within-file symbols operate on the current file if typed alone, for example, ":50" will take you to line 50 of the current file, and "@" will browse the symbols of the current file. There are key bindings to open the Goto Anything panel with these pre-filled, for example, Ctrl+R (Command+R on OS X) will go directly to the list of symbols in the current file.

Instant Project Switch

Projects in Sublime Text 2 capture the full contents of the workspace, including modified and unsaved files. You can switch between projects using similar fuzzy matching logic as the Goto Anything panel, and the switch is instant, with no save prompts - all your modifications will be restored next time the project is opened.

Multiple Selection

Sublime Text 2 has the same multiple selection functionality as Sublime Text 1, providing a simple way to make many edits.

For example, to make the same edit on multiple lines, split the selection into lines (Ctrl+Shift+L on Windows and Linux, Command+Shift+L on OS X), and start navigating the cursors and type. Your actions will occur simultaneously at each cursor.

To rename a variable within a function, position the cursor next to it, and press Select More (Ctrl+D on Windows and Linux, Command+D on OS X) several times to select all occurrences, and then start typing to rename them all.

To rename a variable everywhere, use the Find Panel and press the Find All button (or Alt+Enter), then start typing to edit every occurrence.

User Interface

Sublime Text 2 supports multi-pane editing (i.e., side by side editing and other layouts), multi-window editing, full screen editing, and a minimap to show you an overview of your files.

Sublime Text 2 also lets you choose how you switch between files. It has a modern tab implementation, including dragging tabs between windows. A side bar is available, for when you need to work with a large number of open files. Both the tabs and side bar can be shown or hidden individually.

The side bar allows you to browse files in your project without cluttering the list of open files. Click once to preview a file, without opening a tab. Start editing the file, or double click, and the file will be opened as normal in a tab.


Sublime Text 2, like Sublime Text 1, allows you to extend the editor with Python plugins. It has a Python console (Ctrl+~) to work with them at run time.

Every key binding is customizable, as are the menus, themes, and per-file type settings.

Cross Platform

Sublime Text 2 is available on Windows, OS X, and Linux, in 32 and 64 bit versions, and one license covers all operating systems.


Sublime Text 2 can be downloaded and evaluated for free. Give it a try, I think you'll like it.

For news about new versions, follow sublimehq on twitter.

Jon Skinner

Sublime Text X

Now that Sublime Text 1.4 is out in the wild, it's time to look towards the next version. Previously, development has progressed via regular beta releases. There are some grander plans for the next version, which require bigger changes than the beta releases can deliver. Sublime Text X is the solution.

Sublime Text X is a new application built around the same editing core as Sublime Text. Building a new application shell gives the opportunity to make some fundamental improvements to the day to day editing workflow. It will eventually morph into the next stable version of Sublime Text, which will likely be Sublime Text 2.0.

Sublime Text X is currently in alpha status: it works, but it's missing many features compared to Sublime Text, and isn't yet ready to be used for every day text editing. It's available as a preview for registered users: it will be opened to non-registered users at a later date, after it's progressed beyond the alpha stage.

Sublime Text X is cross platform, with downloads available now for Windows, OS X and Linux. Downloads and more information are available on the Sublime Text X page.

Jon Skinner

Sublime Text 1.4

Sublime Text 1.4 is now available for all users. The focus for 1.4 has been on refinement and polish, with a host of small tweaks and improvements: a full list of changes in available on the beta page. Highlights are a significant improvement in startup time, and a reduction in memory usage. Also featuring is a new system for automatic indentation, which especially improves the editing experience in languages like Ruby and Lua.

Sublime Text 1.4 is available for download, either as a traditional installer, or a portable version suitable for running from a USB key.

Jon Skinner

Sublime Text 1.3

Sublime Text 1.3 is now available as a free download for registered users. If you haven't tried Sublime Text yet, now is a great time to test drive the fully functional trial.

New features in 1.3 are find in files, revamped find and replace panels that preview results as you type and accepts multi-line inputs. Also new are goto symbol, syntax highlighting support for more languages (ASP, JSP, ActionScript and YAML), speed improvements, an expanded API and more. Almost every area of functionality has been improved and polished in version 1.3.

Find in Files

Find in files can search through directories on the file system, in the current project, or across all open buffers. Full Perl style regular expressions are supported. You can step forwards and backwards through the results with F4 and Shift+F4 respectively.

Reworked Find Panel

The find and replace panels now accept multi-line inputs (Ctrl+Enter to add a new line), and will preview the results live in the buffer. There are now shortcuts for each of the find options, which you can see by hovering over the buttons.

Goto Symbol

Ad-hoc Projects

Directories can be opened as projects, via the Project/Open Directory menu or by dragging a directory onto Sublime Text from Explorer.


Thanks to all the beta testers for your feedback and testing throughout the development of version 1.3.

Jon Skinner

Review Roundup

If you're just starting to look into Sublime Text, and want to hear what others think, have a look at these recent reviews:

  • Review 1:
    "The first impression that Sublime Text gives is that it’s beautiful."
  • Review 2:
    "ingeniously wicked project management ... using it is like googling inside your project."
  • Review 3:
    "Sublime Text is a text editor for Windows intended to be used by programmers, developers, and in fact anybody who needs to work with text."

Update: Here are a few more reviews for perusal:

  • Review 4:
    " won’t find anything more Zen than this text editor."
  • Review 5:
    "Full screen mode in this application does full justification for the term used."
Jon Skinner

Sublime Text 1.2 Now Available

After many months of development, I'm very pleased to announce the release of Sublime Text 1.2. This is the most significant upgrade of Sublime Text since the initial release, and it's free for all registered users. If you haven't purchased a license yet, you can download a fully functional evaluation version.

New features in version 1.2 include a revised user interface, a project system, and support for TextMate format snippets, many of which are installed by default. In addition to this, it's more customisable, has an enhanced Python API, and improved facilities for day to day text editing.

Selecting a file in the project

Changelog Highlights

  • New project system
  • Updated user interface look and feel
  • Support for TextMate format snippets
  • Resizeable panes and panels in the GUI
  • Distraction free editing mode
  • Quick panel, to select between open buffers, file in the current directory, or files in the project.
  • Visible whitespace
  • Overwrite mode
  • Load and save files in various european encodings
  • New preferences menu
  • Swap lines command
  • Improved auto complete
  • Improved bracket matching
  • Improved auto pairing of brackets and quotes
  • Improved bookmark support
  • Close buttons per-tab by default
  • Minimap and scrollbars may be disabled in full screen mode
  • Assign names to buffers
  • API: Exposed auto complete functionality
  • API: Exposed findAll
  • API: Exposed quick panel
  • API: Exposed the input panel
  • Download it now, and try it out!

    Jon Skinner

    Choosing an Extension Language

    If you're building an application, then your users will get much more out of it if you given them a plugin API. For Sublime Text, I settled on Python as the extension language. In fact, I think you'd be mad to choose anything else.

    For a desktop application looking for an extension language, the two most important things to optimize for are the likelihood that your users will create plugins, and the chance they'll actually enjoy it. This gives a few guidelines when choosing an extension language:

    • Adoption matters. There should be a reasonable chance that users already know the language, or if they don't, learning it is at least a worthy investment.
    • Unicode matters. How much depends on the application, but if users can't even write a script that opens a file in their home directory because of Unicode issues, you won't be winning any friends.
    • Libraries matter. File access, date / time, socket programming, subprocesses, etc. If you're writing a general purpose desktop application, then most plugins your users will want to write will involve using APIs other that what you've explicitly exposed.
    • Ease matters. Any language requiring a separate compilation step isn't a contender.

    There are also several criteria that don't matter for a typical desktop application extension language:

    • If you're going to depend on the scripting language having fast runtime performance, then Python may well not be for you: Lua or Scheme are both typically much faster, and have a lower memory footprint.
    • If you're depending on the language for security, such as a web browser running untrusted code, or a server running code submitted by users, then you have an entirely different set of considerations.
    • If the application is only going to be used in house, then it doesn't matter terribly much what percentage of users are familiar with the language, because they're going to be forced to use it anyway.

    At first glance, it appears that desktop application developers are spoiled for choice of extension languages, but caveat programmer:

    Scheme, despite having reasonable libraries and Unicode support, is far from mainstream. Using Scheme or another Lisp dialect as an extension language is an effective way to make sure you won't have any extensions. Early versions of Sublime Text used Scheme as an extension language, but it was dropped for this reason. Just because you like a language, doesn't mean your users will.

    Lua is another candidate, which has a lot of uptake in games. It has a very small code footprint, and excellent runtime speed. However, its paucity of libraries, weak Unicode support, and small-medium user base make it hard to justify as an extension language for desktop applications.

    What about JavaScript? It's an underrated, elegant language, with a huge number of people acquainted with its syntax. Its weakness is that it's not used as a general purpose language, so there's no selection of libraries your users will be able to build on. No libraries and no built-in standard APIs (file system access, I'm looking at you) rule JavaScript out.

    We come to Python and Ruby. Which language is better really isn't relevant, both are fine languages with pleasant syntax and semantics. In terms of ecosystems, both are popular and have a good selection of libraries. Python, however, is the bigger gorilla, with a larger user base and more libraries.

    Python, however, has a secret weapon: Python has ctypes, and Ruby doesn't (1). ctypes provides an ad-hoc way to call functions in any shared library in the system. This means that the platform's entire native API is available with no C extensions required. Take, for example, a user who wants to launch another application, then set the input focus back to yours. With Python and ctypes on Windows, it's only a few lines of code to call GetForegroundWindow and SetForegroundWindow. That's pretty awesome.

    Summary: Your users will be happiest if you choose Python. It's pretty hard to argue with that.

    1. Not strictly true, as pointed out in the comments, Ruby has a similar library called Ruby/DL 2. That's pretty cool.

    Jon Skinner
    « Newer PostsOlder Posts »