<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[linus!]]></title>
  <link href="http://linusgraybill.com.com/atom.xml" rel="self"/>
  <link href="http://linusgraybill.com.com/"/>
  <updated>2012-03-07T09:32:31-05:00</updated>
  <id>http://linusgraybill.com.com/</id>
  <author>
    <name><![CDATA[Linus Graybill]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Ten Things Textmate Users Might Love About Sublime]]></title>
    <link href="http://linusgraybill.com.com/blog/2011/11/14/ten-things-textmate-users-might-love-about-sublime/"/>
    <updated>2011-11-14T21:15:00-05:00</updated>
    <id>http://linusgraybill.com.com/blog/2011/11/14/ten-things-textmate-users-might-love-about-sublime</id>
    <content type="html"><![CDATA[<p>I&#8217;ve been a Textmate user since 2004. I loved it then and I have a strong fondness for it now. Textmate converted me from an IDE to a text editor. Before Textmate I was using&#8230;wait for it&#8230;</p>

<p>Dreamweaver.</p>

<p>So Textmate was like huge. But like a lot of folks I&#8217;ve been frustrated Textmate hasn&#8217;t changed in seven-ish years.</p>

<p>I&#8217;ve recently become a quick convert to Sublime. If you&#8217;re a heavy Textmate user, I have 10 good reasons you should take a look at Sublime.</p>

<h3>1. Directory specification for ⌘T</h3>

<p>  In Textmate, ⌘T opens a file browser. Say I&#8217;m looking for group_admin.spec, I can hit ⌘T and type &#8216;gro spec&#8217; and then can jump to that file from a list. I use it tens of times every day.</p>

<p>  There&#8217;s one big pain point with ⌘T: multiple files with the same name, such as this table.haml file that might exist in 16 different directories in this project.</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-textmate_command_t.png" title="Title is optional" alt="picture alt" /></p>

<p>  Sublime solves this problem by adding directory specification. The file that I really want is in the software_requests directory. In Sublime I can do ⌘T and type &#8216;sof /table.ha&#8217; and the results are much more manageable:</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_command_t.png" title="Title is optional" alt="picture alt" /></p>

<p>  <!--more--></p>

<h3>2. Find in project is fast like WOAH</h3>

<p>  Another feature with roots in Textmate is &#8220;find in project&#8221; (⌥⌘F). For some reason Textmate doesn&#8217;t index code and Sublime does. I did some ghetto benchmarking with a stop watch and while the results are miles apart, they shouldn&#8217;t be surprising.</p>

<pre><code>Searching 2487 files for "SoftwareRequest.find" (case sensitive):
----------------------------
|  Textmate  | 45 seconds  |
|  Sublime   | 0.9 seconds |
----------------------------
</code></pre>

<h3>3. Split screenage!</h3>

<p>  Views -> Layout gives you several options for setting up various split-screen configurations. You can drag files via their tab between screens.</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_split_screen_2_columns.png" title="Title is optional" alt="picture alt" /></p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_split_screen_3_rows.png" title="Title is optional" alt="picture alt" /></p>

<h3>4. Configurable project files</h3>

<p>  When you save a project, you get a MyProject.sublime-project file. I&#8217;m especially excited about the easy &#8220;folder_exclude_patterns&#8221; and &#8220;file_exclude_patterns&#8221; settings.</p>

<pre><code>{
  "folders":
  [
      {
          "path": "app"
          "folder_exclude_patterns": ["log"],
          "file_exclude_patterns": ["*.css", "*.log", "*.DS_Store"]
      }
  ],
  "settings":
  {
      "tab_size": 4,
      "covert_tabs_to_spaces": true
  }
}
</code></pre>

<h3>5. Saved workspaces</h3>

<p>  For my Rails projects I like a straight two-column layout. For my Jekyll projects, I like the two-column but also need the sidebar. For my cli projects, I use either one or two-columns and the console. You get the idea.</p>

<p>  With Sublime&#8217;s split screen views, side bar, and built-in console, there are lots of options for customizing your workspace. When you set up a project, Sublime automatically saves your project&#8217;s workspace in a MyProject.sublime-workspace file.</p>

<p>  Note: Unlike .sublime-project files, .sublime-workspace files are frequently overwritten by the system, <em>so don&#8217;t edit them directly.</em></p>

<h3>6. Project jump</h3>

<p>  Building again on the value of setting up projects in Sublime is the project jump feature (⌥⌘P). Selecting a project from this list will open that project exactly how you left it last.</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_jump_to_project.png" title="Title is optional" alt="picture alt" /></p>

<h3>7. Vertical markers for code blocks</h3>

<p>  Finding elusive closing div tags is going to be a lot easier. A small but incredibly useful feature &#8211; vertical lines help you visually line up the begin and end of blocks:</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_vertical_markers.png" title="Title is optional" alt="picture alt" /></p>

<h3>8. You can use Textmate bundles</h3>

<p>  Sublime comes with a solid set of language packs and plugins (for more info check out <a href="http://wbond.net/sublime_packages/package_control">package control</a>). But it&#8217;s still new and all. Copy Textmate bundles into your Sublime Packages directory and with a restart you should have all of their functionality available.</p>

<pre><code>$ cp ~/Library/Application\ Support/TextMate/Bundles/BUNDLENAME.tmbundle ~/Applications/Sublime2 ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/
</code></pre>

<p>  I&#8217;ve pulled over my tmbundles for <a href="https://github.com/pivotal/jasmine-tmbundle">Jasmine</a>, <a href="https://github.com/dchelimsky/rspec-tmbundle.git">rspec</a>, and <a href="https://github.com/bmabey/cucumber-tmbundle">Cucumber</a> and so far it&#8217;s been plug-n-play.</p>

<h3>9. Remembers language/framework on a per-file basis</h3>

<p>  Textmate remembers on an extension basis, so if you tell Textmate that appSpec.js file is Jasmine, now all .js files are considered to be Jasmine.</p>

<p>  Sublime remembers on a per-file basis!</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_file_type_menu.png" title="Title is optional" alt="picture alt" /></p>

<p>  If you want Sublime to open all your .js files as Jasmine (or whatever), use &#8220;Open all with current extension as&#8230;&#8221;:</p>

<p>  <img src="http://linusgraybill.com.com/images/posts/2011-11-14-sublime_file_type_menu_all.png" title="Title is optional" alt="picture alt" /></p>

<h3>10. Running a single test and the last run test from anywhere</h3>

<p>  Thanks to <a href="http://matschaffer.com/">Mat Schaffer</a> for pointing this one out to me.</p>

<p>  Textmate has that nifty ⇧⌘R command to run a single test. RubyTest gives you that, plus ⇧⌘E which runs your last test no matter what file you&#8217;ve got open. That&#8217;s hot, and as Mat said, a feature that&#8217;s usually only available in a heavyweight IDE like Eclipse.</p>
]]></content>
  </entry>
  
</feed>

