Settings

Theme

Configuring Sublime Text 2

mutuallyhuman.com

183 points by manlycode · 91 comments

Reader

27 threads
eta_carinae

Something the article misses: Sublime Text 2 already comes with a command line front end called "subl". Just copy it in your favorite bin/ directory and you can open your files with it from any shell.

  • pygy_

    Even better: use a symlink.

    You won't have to copy each update.

        ln -s target link
    
    thus:

        sudo ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl
jemeshsu

Always wondering why the version '2' is emphasised heavily. Never heard of Sublime Text when it is version 1. The version number is part of the app binary file name. It is the only OS X app in my Mac that has the app name together with version number on the menu bar. Nothing wrong with this "unconventional", just that it will break a little thing when Sublime Text 3 is released. For example to change command prompt linking as in "ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/sublime".

  • calinet6

    They're not too big on marketing. Doesn't matter; it still works great.

  • lobster_johnson

    I suspect people emphasize it because the author does. Version 2 is a radically different piece of software from version 1, and I believe that during the alpha/beta development period you could run ST1/2 concurrently if you liked. This may be the reason why the folder name embeds the version number.

  • zeitg3ist

    The entire Adobe Creative Suite does that. It's annoying.

molecule

My first piece of advice is to set up a command line alias for Sublime...

Sublime ships w/ a command-line executable:

    /usr/bin/subl
shade

Another useful tip for navigation - when using the fuzzy search, you can start typing a filename to jump to that file, then with that still in the search box, hit # and start typing a keyword to jump to in that file.

So if you wanted to find something with the class btn_order in index.aspx, in Windows you'd hit CTRL-P and type "index#btn", hit enter, and there you are. You can of course scroll up/down through the available files matching the filter before you hit # -- the keyword search applies to the currently selected file.

grimgrin

Here are two other sources that I found pretty useful when switching to Sublime.

http://net.tutsplus.com/tutorials/tools-and-tips/essential-s...

I'm not a huge fan of video sources when I could just look at images/read text and get it done faster, but these do offer some pretty good stuff. I was fond of him giving me the idea to use the Gist plugin, creating a new account, and have a great way to manage snippets.

http://net.tutsplus.com/articles/news/perfect-workflow-in-su...

  • doktrin

    This (free) video walkthrough is a terrific resource, and with no disrespect to the OP, is a better resource regarding getting the most out of ST2.

ivanbernat

Sublime team by default need to advertise Packages and just how much you can customize the thing. You'd be amazed just how powerful this thing can be - once you get the hang of it, the shortcuts and some basic packages.

My favorite ones are Zen Coding (now deprecared in favor of Emmet) and SublimeERB when working with ERB - the front-end dev in me cries of joy when using them :-)

  • decad

    I agree I recently installed Emmet and it has vastly improved my life (front-end dev)

alexpopescu

> FileDiffs - This can be a really useful tool for diffing files. [...]

This is something I've been looking for. I had to use an external diff tool or vimdiff, but this might change things quite a bit.

The other thing that would be a great addition to ST2 (if not existing already) would be a search by symbol in all project files. Currently Cmd+R is great for navigating to a symbol in the current file. Extending this to a whole project would be awesome.

SquareWheel

I've been tweaking my Sublime for 5 months or so, and this is how my config file looks so far.

    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
    "detect_indentation": false,
    "detect_slow_plugins": false,
    "font_size": 10,
    "highlight_line": true,
    "highlight_modified_tabs": true,
    "margin": 0,
    "move_to_limit_on_up_down": true,
    "remember_open_files": false,
    "shift_tab_unindent": true,
    "tab_completion": false,
    "tab_size": 4,
    "translate_tabs_to_spaces": false,
    "word_wrap": false
I'd suggest going through the default settings file to see what options there are to change. It's pretty darn configurable.

I'd also like to suggest the plugins Bracket Highlighter and Emmet (previously Zen Coding). I also use Package Manager, Sublime Linter, and FileDiffs as mentioned in the article.

  • wldlyinaccurate

    This is just my opinion, but I think detect_indentation should always be turned on. The reason being that having mixed indentation in a file is worse than having the "wrong" indentation.

    • SquareWheel

      I use tabs strictly in my projects, but often times I work on websites built by other people and there's a hodgepodge of 2 spaces, 4 spaces, and tabs. It's best to leave it as it is and get out as soon as possible.

manojlds

What I need to know is how are people versioning the settings? For Vim, a simple .vimrc is all I need to take care of. What do people do for Sublime?

  • shoebappa

    You would version the Preferences / Settings - User file, which overrides defaults in the Preferences / Settings - Default. I found a decent overview of how to store these in drop box with symlinks, but also describes where these are stored - http://wheels.onebuttonapps.net/2012/04/use-dropbox-to-store...

  • heartbreak

    Maybe you should, you know, download Sublime and try it out? The settings are stored similarly to Vim.

    • manojlds

      So kind of you to assume that I haven't used it. I use it on Windows and after I formatted my Window 7 and am now on Windows 8, I don't have my Sublime text preferences with me and was wondering how people are versioning and syncing theirs. In vim ( which I don't claim to be an expert user), every setting is in .vimrc. Including the vundler bundles. Now, I have to reinstall all the plugins from Package Control. How do I version the settings? Get a list of installed plugins? Those were my questions, after having used Sublime for a few months now.

      • jimhart3000

        Not sure the path for windows, but on OS X you could make a repository at ~/Library/Application Support/Sublime Text 2/Packages. It doesn't separate out system packages (basically all your language info/syntax highlight settings), but all your user-installed packages go there and user settings are in Packages/User. If you cloned that folder into a fresh install, it should bring everything you had previously along with it.

        • Derbasti

          That is actually a big gripe I have with ST2. I would love ST2 to have its config files in an easy Unix-like place. Like dotfiles, or better yet, dot-directories.

          (why dot-dirs instead of dot-files? Because while Windows does support symlinks, many programs do delete/newfile instead of modifying files, which breaks symlinks. In a dot-dir, that does not matter.)

          But really, this is not a big gripe, and furthermore one easily solvable uing symlinks.

  • yen223

    Same way. The user settings are stored in a few plain-text JSON files.

    Also I would hardly call .vimrc files "simple".

scq

I set Ctrl-Tab and Ctrl-Shift-Tab to behave like they do in web browsers and notepad++:

    [
        { "keys": ["ctrl+tab"], "command": "next_view" },
        { "keys": ["ctrl+shift+tab"], "command": "prev_view"}
    ]
hayksaakian

Tip I figured out accidentally: command + 1 through x changes to the 1 through xth tab in the current window.

feniv

As a python programmer, these were the first two settings I configured after installing Sublime Text.

    "tab_size": 2,
    "translate_tabs_to_spaces": true

You can either set them as Preferences > Settings - Default or Settings - Syntax specific
  • natrius

    Uh, two space indentation in Python? Consistency is valuable. Everyone else who writes Python uses four spaces.

    http://www.python.org/dev/peps/pep-0008/#indentation

    • tass

      This is a great reason to use tabs over spaces.

      • buttscicles

        It wouldn't matter when people don't adhere to standards anyway.

      • ketralnis

        That everybody else uses spaces?

        • yen223

          If the file uses tabs, at least you can choose to display the indentations as 2 spaces or 4 spaces.

          If the file uses spaces, you don't get to choose.

          • SquareWheel

            This is my reason for preferring tabs. Plus changing indent levels is faster via arrow keys.

            • Tloewald

              The main reason for preferring spaces is wrapping complex calls split across lines. (Of which there is a lot in some languages such as obj-c or JavaScript.) We just went through the whole tabs vs spaces debate on a new project here with, I think, open minds and a general preference for tabs, and ended up using spaces. The alternative was tabs for basic indentation and spaces for line wrapping but that's too hard to maintain.

              YMMV

            • kstrauser

              And even faster using tab or shift+tab to pop up or down a level, regardless of whether you're using tabs or spaces.

              • SquareWheel

                I do this too, along with Home/End to navigate. Once in a while though I want to move only half way left of the indent, which is one press on tab, 2-4 of space. Can't use ctrl+left there.

                But more than anything I'm sure it's just familiarity.

            • charliesome

              Any reasonable editor can be configured to jump multiple spaces at a time.

    • feniv

      I got comfortable with 2 spaces over 4-space tab since it was the accepted coding standard for Ruby at my previous job. The habit carried over to Python and I now find it more succinct and clear.

nicholassmith

If you're using Sublime I'd highly recommend writing some Snippets, there's plenty you can write and it gets you digging into Sublime's docs. Helped me get used to Sublime a lot more.

wldlyinaccurate

This post reminded me that 90% of the developers I work with don't set their editor up properly. I'm constantly finding Windows line endings and trailing whitespace. I wrote this (really short) guide that I send to new developers, but imo editors should come configured like this out of the box. http://wildlyinaccurate.com/setting-up-your-editor

javan

Here's my Github-themed, less-ugly-than-the-default setup: https://gist.github.com/3164018

kellishaver

Here's my (rather opinionated) setup. I'm quite visually impaired, so getting my editor just right so I can code comfortably is important. Most of my changes have to do with making things easier to see.

http://kellishaver.tumblr.com/post/29158801106/sublime-text-...

gavanwoolery

For those who sometimes prefer straight GUI, you can just drag the folder into Sublime Text (or Textmate) and it will open it in the sidebar (probably obvious to some, but I did not know to do it until I saw somebody else do it).

Also, another thing I have grown really attached to:

Command-Option [1,2,3,4] to open up multiple views within one window, good for viewing several files at once.

batgaijin

Does sublime text 2 work well with CL or Haskell?

  • shriphani

    I tried using it with Clojure (FWIW) and I really disliked the REPL's style (maybe I am too used to Emacs here).

    I have since decided to use Sublime Text for Python, LaTeX, C, C++ (it really shines there) and Emacs for Racket and Clojure (I don't use it so much).

  • jewbacca

    I use it to write Haskell. The syntax highlighting screws up the first line of multiline record declarations. Out of the box, it can't run a Hoogle search or launch GHCI like TextMate did. It's definitely not a fully-featured Haskell IDE, but it's a usable basic editor. Depending on what you're used to, it may or not be adequate. I switched because I liked the default color theme better (... I mean... because TextMate was being abandoned).

  • jfb

    No idea, but trying to write lisp in anything other than Emacs/SLIME seems like an exercise in purest madness.

tylermauthe

This is the real lesson of this article: "As a craftsmen it is important to understand and use our tools properly. Just as a painter needs to use the best paint and brushes - and understand how to use them - a developer should understand and use the best software tools available. For me, Sublime Text is the highest-quality brush available."

Great stuff, thanks!

modeless

The biggest win I've had from configuring Sublime Text is in setting up build systems. Specifically, configuring F4/shift-F4 (skip to next/previous error). The build system integration is rudimentary (and I hope that's a focus for Sublime Text 3) but "skip to next error" is all you really need to be productive.

HyprMusic

Kind of awesome seeing him mention one of my plug-ins I created to scratch a simple itch (Auto Semi-colon). Definitely motivated me to work on the slight improvements I wanted to implement.

togasystems

Can someone explain the difference between command-p and command-t?

  • heelhook

    They do the same thing, they are defined as:

      { "keys": ["super+t"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
      { "keys": ["super+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
  • sandyarmstrong

    On OS X, they appear to do the same thing.

    On Windows, ctrl-t doesn't seem to do anything.

    I don't have Sublime set up on Linux so I can test there.

    I suspect the author has an older configuration since he's been using it for almost 2 years, and that the keybinding probably changed since then to cmd-p.

    • ryanmacg

      Sublime has both cmd-t and cmd-p in the OS X version, the general thinking for this seems to be related to other editors (such as Textmate) having used cmd-t. By having this in Sublime by default switching becomes easier.

    • veidr

      IIRC, ⌘P was Sublime's original mapping, and then ⌘T was added on Mac because the then-extremely-popular TextMate had a well-known ⌘T function that was similar.

  • jmelloy

    Traditionally, command-P prints and command-t opens a new tab.

    • sandyarmstrong

      Neither of these are the case in Sublime Text 2. cmd-n opens a new tab and cmd+shift+n opens a new window.

  • rhizome

    On my nearly-vanilla install, cmd-t doesn't do anything.

darkstalker

The hardest part of configuring Sublime Text is the color scheme. It's written in some apple XML format that's hard to edit by hand.

goldfeld

Why isn't there a plugin to Find in Files in the same way Ctrl-P works? Open the best match in buffer as results stream in.

yen223

Awesome stuff. I would dare say the command palette alone makes ST2 better than Vim.

s1

How to make the same settings for root and my user?

  • purephase

    If it is the preferences you're modifying, there are per-user specific settings and default. I believe the default settings will apply for all users.

af3

> "trim_trailing_white_space_on_save": true, # trims trailing whitespace

bad for Markdown, as it will delete spaces that are needed for newline, I believe.

  • freerobby

    I find this to be a questionable practice. When coding I like the idea of "trim whitespace from _my changes_ on save", but doing it globally within a file creates a lot of diffs and makes for convoluted commits. Having a +/- 75 lines when you fix a typo in a comment is annoying when doing a code review.

    If everybody on the team uses SublimeText (or an equivalent vim extension) I think this is a good idea, but when you have some folks using TextMate or other editors that are notorious for leaving extra whitespace, I find it better just to live with it.

  • rmccue

    Yep, so if you put this on, make sure you override it back in the Markdown-specific settings.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection