Sublime Blog

Building a Better Text Editor

The text editor is a humble tool, its purpose distinct and implementation well trodden. There are a lot of people who spend a lot of time working them them: you’ve probably got one open right now.

I think they can be better.

Furthermore, I’ve got a fairly strong vision of exactly how they can be better. I left my job as a software engineer at Google to build a company, and a text editor, around this conviction.

I’d like to share my ideas for a better text editor; you’ll shortly see the beginning of a series of articles describing just that. Stay tuned!

In the mean time, why not let me know what you think a better text editor should be?

Jon Skinner


  1. [...] (This is an introduction to the user interface of Sublime Text, it’s the first in a series) [...]

    Pingback by Sublime Blog » Anatomy of a Next Generation Text Editor — November 30, 2007 @ 10:26 pm

  2. Floodgates opening …

    One thing I’d love to see in any new text editor would be the ability to understand the language being written at any point (even down to html within php files, or sql within vb files) and highlight accordingly. Very very tricky, yes, but would be a great help.

    Decent, intelligent, collapsing of sections is a must, again in all languages. Including the ability to select a whole section of text and collapse everything either side of it (so you just see the bit you selected).

    The ability to go “back” within a file (i.e., click “back” (or a keyboard shortcut of course) to go to the point in the same file you were previously working on).

    Configurable “send to” dialog (i.e., send file to browser for testing, or to ftp and so on).

    Regex-based find and replace (EditPlus is awesome for that) (across multiple files, e.g., all in folder or all open).

    I rather like that I can set Visual Studio up to work with whatever unit testing software I’m using. Same with things like version control.

    Speaking of Visual Studio, I also like it’s “Go To Definition” functionality and intellisense.

    All that is of course in addition to tabbed editing, code highlighting, spellchecking, configurable word wrap (none, full screen or number of characters), matching brace (or end of block) highlighting, auto-indentation (where relevant).

    That would make me pretty happy. :)

    Comment by Dave Child — December 29, 2007 @ 12:34 am

  3. 1. Stick to the IBM CUA guidelines. I don’t want to configure keyboard shortcuts.

    2. Regular expression based incremental find and replace.

    3. Editor startup should be blindingly fast.

    4. No highlighting or intelligent intending nonsense please… Nobody does it perfectly. No folding either. Simple character matching (% in vi) should be enough.

    5. No tabbed interface or MDI.

    6. Embed a sane language without a steep learning curve (lua) for both scripting and configuration.

    7. Must work in unix terminals and win32 command prompt. The JASSPA Emacs GUI is spiffy IMO…

    8. Ability to hardwrap long lines (like vi), or keep long lines and wrap for display only (notepad).

    8.1. Ability to join hardwrapped lines.

    And I’d give up vi to use this editor.

    Comment by sysprv — December 29, 2007 @ 5:15 am

  4. Great initiative! I appluad you! My perspective: Take emacs visual!

    The greatest improvement that’s waiting to happen is visualizing text. I’m talking about allowing the user to take XML blob’s like
    and displaying single references or all references as a little blue nicely shaped box that’s recognizable for the user.

    In practice this would translate to adding extra modes to emacs, such as graphical tree-visualizations for Java code or XML documents.

    If you want more info, feel free to drop me a line.

    Comment by Michiel Trimpe — December 29, 2007 @ 7:31 am

  5. Looks promising.
    The absolute bare minimum in a text editor for me is:
    - snippets (à la textmate)
    - word completion for words in use in the file being edited
    - regex find&replace
    and bonus:
    word completion for functions and methods of classes that are included in the file being edited.

    Comment by nolan — December 30, 2007 @ 11:50 am

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.