Settings

Theme

Configuring Sublime Text 2

mutuallyhuman.com

183 points by manlycode 13 years ago · 91 comments

Reader

eta_carinae 13 years ago

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_ 13 years ago

    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 13 years ago

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 13 years ago

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

  • lobster_johnson 13 years ago

    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 13 years ago

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

molecule 13 years ago

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 13 years ago

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 13 years ago

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 13 years ago

    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 13 years ago

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 13 years ago

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

alexpopescu 13 years ago

> 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 13 years ago

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 13 years ago

    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 13 years ago

      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 13 years ago

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 13 years ago

    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 13 years ago

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

    • manojlds 13 years ago

      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 13 years ago

        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 13 years ago

          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 13 years ago

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

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

scq 13 years ago

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 13 years ago

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

feniv 13 years ago

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 13 years ago

    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 13 years ago

      This is a great reason to use tabs over spaces.

      • buttscicles 13 years ago

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

      • ketralnis 13 years ago

        That everybody else uses spaces?

        • yen223 13 years ago

          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 13 years ago

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

            • Tloewald 13 years ago

              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 13 years ago

              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 13 years ago

                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 13 years ago

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

    • feniv 13 years ago

      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 13 years ago

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 13 years ago

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 13 years ago

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

kellishaver 13 years ago

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 13 years ago

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 13 years ago

Does sublime text 2 work well with CL or Haskell?

  • shriphani 13 years ago

    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 13 years ago

    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 13 years ago

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

tylermauthe 13 years ago

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 13 years ago

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 13 years ago

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 13 years ago

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

  • heelhook 13 years ago

    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 13 years ago

    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 13 years ago

      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 13 years ago

      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 13 years ago

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

    • sandyarmstrong 13 years ago

      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 13 years ago

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

darkstalker 13 years ago

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 13 years ago

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 13 years ago

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

s1 13 years ago

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

  • purephase 13 years ago

    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 13 years ago

> "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 13 years ago

    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 13 years ago

    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