sublimeプロジェクトの管理しよう


sublime Adventカレンダーの5日目です(2記事目;ω;`)。

はじめに

皆さんsublime使ってますか!使っていることだと思います。
ではsublimeのプロジェクトを使っていますか?
使わなくても特に不便ないので使っていない人も多いと思います。
しかしsublimeのプロジェクトは便利なのでぜひ使いましょう!

sublimeのプロジェクト

sublimeのプロジェクトはIDEのようなワークスペースではなくディレクトリの管理をします。
なのでどちらかと言えばブックマークのような使い方になると思います。
では早速使っていきましょう。
普段使っているsublimeの画面ではサイドバーにディレクトリが乗っていると思います。
これらのディレクトリをプロジェクトとして管理するには図のようにメニューバーのprojectからSave Project Asとして適当な所に保存します。

そうすると、***.sublime-project***.sublime-workspaceというファイルが出来ると思います。

sublime-workspace

これは履歴や開いていたファイルや画面分割のデータです。これによってプロジェクトが閉じた時と同じ状態を復元することが出来ます。自分でいじることはないと思います。

sublime-project

これはプロジェクト管理の本体です。
最初は以下のようになっていると思います。

***.sublime-project
{
    "folders":
    [
        {
            "path": "/path/to/project/report5"
        },
        {
            "path": "/path/to/project/report4"
        }
    ]
}

これに追加するとそのプロジェクトだけ有効になります。便利ですね!
以下のものが設定できます。

folders

  • path フォルダーへのパス。必須
  • name サイドバーでの表示名
  • file_exclude_patterns 非表示にするファイル名のパターン
  • folder_exclude_patterns 非表示にするディレクトリ名のパターン
  • file_include_patterns 表示にするファイル名のパターン
  • folder_include_patterns 表示にするディレクトリ名のパターン

setting

PreferencesのUser settingsを上書きすることが出来る。

build system

標準設定のビルドシステムを上書きする設定を書ける。

適当に設定したあとのsublime-projectはこのような感じになるでしょう。

***.sublime-project
{
    "folders":
    [
        {
            "path": "/path/to/project/report5",
      "name":"test5"
        },
        {
            "path": "/path/to/project/report4",
            "file_exclude_patterns":["*.out"],
            "folder_exclude_patterns":["*.out.*"]
        }
    ],
  "settings":
  {
      "translate_tabs_to_spaces": false,
  }
}

詳しくはドキュメントを参考にして下さい。

個人的にsublimeの気に入っていることはこういった設定が全てファイルで管理されていていることです(なにと比べてとはいいませんが)。どの設定が適用されているのか分かりにくいという意見もありますが、柔軟性があり、また自分の好きなように変更できるので便利です。

Gotoの強化

sublimeには関数宣言や変数宣言の場所に跳ぶGoto DefinitionGoto Symbol Definitonの機能がありますが、これがプロジェクトだとプロジェクト内の全てのファイルから検索することが出来るそうです。(ある程度はそのままでも出来るようですが)

プロジェクトの管理

さてこれでsublimeのプロジェクトを作れるようになったわけですが、このまま使っていると***.sublime-projectなどのファイルが量産されてしまい、どこになにがあるのか分からなくなってしまいます。保存する時に一箇所に保存したらいいのですが、なかなかそこまで几帳面に出来ないと思います。
そこでProject Managerというプラグインを入れます。
Package ControlからProject Managerを入れて下さい。

ここでAdd Projectをすると新しいプロジェクトが作られます。
また、下の方には保存したプロジェクトの一覧が表示されています。これらを選択するとそのプロジェクトが開かれます。

project-settingファイルはsublimeの設定があるPackages/User/Projectsの中に保存されます。ここでさらにフォルダ分けをしてもProjectMangaerは認識してくれるので、こまめに分かりやすいように分類するといいでしょう。

pecoで起動

sublimeでプロジェクトを使う設定がほぼ終わりました。これでプロジェクトがだいぶ便利になったと思います。
しかし普段terminalを使っている身としては一度sublimeを開いて、projectManagerを開いて、プロジェクトを開く、というのは少しめんどうです。
なので、あの便利で素晴らしいpecoを使って起動できるようにします。
以下をzshrcに追加します。(shellscriptを普段書かないのでもっといい方法があるかもしれません...)

#pecoでsublime-projectを開く(project managerを使用)
function sublime-projects() {
  subl_root='/path/to/Packages/User/Projects'
  root_len=${#subl_root}+3
  # files=`(ls -l ~/Projects/sublime_projects | grep project | cut -d " " -f 10)`
  files=`find ~/path/to/Packages/User/Projects -name "*sublime-project"`
  if [[ -n "$files" ]]; then
    project=`echo $files | awk '{ name=substr($0,'${root_len}'); print substr(name,0,index(name,".sublime-project"))}'| peco`
    if [[ -n "$project" ]]; then
      subl `echo $files | grep $project`
    fi
  else
    echo "no projects"
  fi
}
alias subp='sublime-projects'

これでsubpというコマンドを打つとsublimeのプロジェクトの一覧がpecoで表示され起動出来るようになりました!

皆さんもこれで便利なsublimeライフを!