SublimeText2設定メモ


##Package Control

パッケージなる拡張機能を使うには下記参照。

http://wbond.net/sublime_packages/package_control/installation

View→Show Consoleでコンソールを表示、下記Pythonのワンライナーを貼り付けEnter。

![コンソール表示](http://f.cl.ly/items/292R1M3r2G2C2Y2k390M/スクリーンショット 2012-08-08 19.20.54.png)

```py
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ',' ')).read()); print 'Please restart Sublime Text to finish installation'
```

##設定

###全体の設定

``Sublime Text2 > Preferences > Settings - User``から設定を編集できる。
設定できる内容はDefaultの方を参考にする。
Defaultを修正してもいいけどUserに上書きされる。

![設定](http://f.cl.ly/items/253b0i400g1P0Y1S3Y0d/スクリーンショット 2012-08-08 19.16.06.png)

####現在の設定

```javascript
{
	"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
	"font_size": 12.0,

	// カーソル行をハイライト
	"highlight_line": true,
	// 未保存タブを強調表示
	"highlight_modified_tabs": true,
	// 使用しないパッケージはなし、これでVimのキーバインドが使える
	"ignored_packages":
	[
	],
	// インデントガイドラインを常に表示
	"indent_guide_options":
	[
		"draw_active",
		"draw_normal"
	],
	// 規定のタブサイズ
	"tab_size": 4,
	// タブをスペースに変換
	"translate_tabs_to_spaces": true,
	// 保存時に行末のスペースなどを削除
	"trim_trailing_white_space_on_save": true,
	// Ctrlキーを含めたVimのキーバインドを使用する
	"vintage_ctrl_keys": true,
	// 開始時はコマンドモード
	"vintage_start_in_command_mode": true
}

```

###キーマップ

```javascript
[
    // シンボルへの移動
    { "keys": ["ctrl+s"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
    // ;でVimのコマンドを入力するウィンドウを表示
    {
        "keys": [";"], "command": "vi_colon_input",
        "context":
        [
            { "key": "setting.command_mode", "operator": "equal", "operand": true }
        ]
    },

    {
        "keys": [";"], "command": "vi_colon_input",
        "args": {
            "initial_text": ":'<,'>"
        },
        "context":
        [
            { "key": "setting.command_mode", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false }
        ]
    },

    // Ctrl + [でオートコンプリートのパネルを閉じる
    { "keys": ["ctrl+["], "command": "hide_auto_complete", "context":
        [
            { "key": "auto_complete_visible", "operator": "equal", "operand": true }
        ]
    },

    // タブの切替を表示順にする
    { "keys": ["ctrl+tab"], "command": "next_view" },
    { "keys": ["ctrl+shift+tab"], "command": "prev_view" },

    // Vim風タブの切替
    { "keys": ["g", "t"], "command": "next_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },
    { "keys": ["g", "T"], "command": "prev_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },

    // Commandモードで0を押した際、入力文字がない本当の先頭ではなく
    // 文字の先頭に行くように変更
    {
        "keys": ["0"], "command": "move_to", "args": {"to": "bol", "extend": false} ,
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
       ]
    },
    {
        "keys": ["9"], "command": "move_to", "args": {"to": "eol", "extend": false} ,
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
       ]
    }
]
```

DashDocのデフォルトのキーバインドを変更。
ユーザ用の設定ファイルに書いたけど上書きされないっぽいのでパッケージ内のファイルを直接編集。

```javascript
[
	{ "keys": ["ctrl+shift+h"], "command": "dash_doc"}
]
```

###Vintageモードを使いやすくする

こんなちょっとしたプラグインを作った。
保存時にINSERT MODEを抜けるのと、AutoComplete表示時にEscなどに割り当ててEscが押されたらAutoCompleteを非表示にしてINSERT MODEを抜ける。

```python
import sublime, sublime_plugin

class OnSaveComannd(sublime_plugin.EventListener):
  def on_post_save(self, view):
    if not view.settings().get('command_mode'):
      view.run_command('hide_auto_complete')
      view.run_command('exit_insert_mode')

class HideAutoCompleteAndExitInsertModeCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    if not self.view.settings().get('command_mode'):
      self.view.run_command('hide_auto_complete')
      self.view.run_command('exit_insert_mode')
```

###言語ごとの設定


該当の言語のファイルを開いた状態で``Sublime Text2 > Preferences > Settings - More``。

![言語ごとの設定](http://f.cl.ly/items/1Q2I1p0f0i0r2I443p2i/スクリーンショット 2012-08-09 19.32.31.png)


##インストールしたパッケージ

```javascript
{
	"auto_upgrade_last_run": 1344431907,
	"installed_packages":
	[
		// 開いているすべてのファイルから補完
		"All Autocomplete",
		// カッコを強調表示
		"BracketHighlighter",
		"Git",
		"Gitignore",
		"Package Control",
		"RubyMotion Autocomplete",
		"RubyMotionBuilder",
		"RubyTest",
		// サイドバーからgitを操作
		"SideBarGit",
		// ブロックカーソル
		"SublimeBlockCursor",
		"SublimeCodeIntel",
		// Vintageを強化
		"VintageEx"
		// 選択した文字列をDashで検索
		"DashDoc",
		// irbなどをSublime Text2上で実行
		"SublimeREPL",
		"Milkode_Sublime"
	]
}

```

##その他
###Vimモードでキーリピートが効かない場合(Mac版)

https://gist.github.com/2510186

ターミナルから下記を実行。

```sh
defaults write com.sublimetext.2 ApplePressAndHoldEnabled -bool false
```

元に戻す場合。

```sh
defaults write -g ApplePressAndHoldEnabled -bool false
```

###パッケージを探す

http://wbond.net/sublime_packages/community

###ターミナルから呼び出せるようにする

``subl``なるファイルがあるので適当にリンクを貼る。

```sh
ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/
```

###SublimeREPL

Mac + rbenv環境でシステム規定の古いRubyが使用されてしまう場合はSublimeREPLの設定ファイルに環境に応じた``PATH``を設定する。

```javascript
{
 "default_extend_env": {
   "PATH": "{HOME}/.rbenv/bin:{HOME}/.rbenv/shims:/usr/local/bin:{PATH}"
 }
}
```

###rbenv環境で使う

``subl``でターミナルから立ち上げた方が環境変数なんかを引き継いでくれるようなので、こちらのほうが良さ気？
``milkode``がSubilme Text2から動作せず往生した。

###アイコンを変更する

``/Applications/Sublime Text 2.app/Contents/Resources/Sublime Text2.icns``を置き換える。

##最新版

その後もあれやこれやと変更しています。
最新の設定は下記に置いてあります。

[toshinori/SublimeText2 · GitHub](https://github.com/toshinori/SublimeText2)