Xcode の既定のコードスニペットを書き換える

SPECIAL


システムコードスニペットを編集する

Xcode 4.3.2 にあらかじめ登録されているコードスニペット内のコードのインデントが好みと違ったので、編集しようとしてみたところ、これらのシステムコードスニペットは編集できなくなっていました。

インデントが好みとちょっと違うだけでも、たとえば @try を打つと @try @catch @finaly ブロック全てが出てきてしまい、インデントを直すくらいならいったん ESC でスニペットをキャンセルして手動で打ち直すということをやっていたので、何かといつも面倒でした。

 

それでも何か編集する手がないものかと調べていたところ、システムスニペットを無理やり編集する方法が見つかりました。

システムスニペットの内容は "SystemCodeSnippets.codesnippets" ファイルにテキスト形式で保存されているので、これを直接書き換えることで、内容を編集することができる様子です。

 

Xcode 4.3.2 の場合は "/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources" ディレクトリ内にこのファイルが保存されているので、ターミナルを起動して、次の要領で編集を行うことができました。

以下ではテキストエディタとして "vi" を使用する場合の方法なので、"vi" の使い方がわからない場合は注意してください。

cd /Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources

sudo vi SystemCodeSnippets.codesnippets

Xcode パッケージの中は、通常では編集不可となっているようなので、このように "sudo" コマンドを使って、管理権限で編集しています。

ここでパスワードを聞かれた場合は、アプリケーションをインストールするときなどに入力するパスワードを入力します。

 

編集箇所は Xcode に登録されているシステムコードスニペットの内容と照らし合わせると直ぐに判る感じです。

こうして編集してあげることで、Xcode のシステムコードスニペットで置き換えられる内容を調整することができました。

 

ただ、このシステムコードスニペットのファイルは、Xcode アプリのパッケージ内に保存されているので、Xcode のバージョンアップがあったときには消えてしまう可能性が高いので注意が必要です。

あくまでもよく使うものを微調整する程度にとどめて、大幅な調整が必要なスニペットやよく使う独自のコードについては、従来通り、ユーザーコードスニペットとして登録して使う感じが良さそうです。

 

中括弧の登場位置を下段に調整する

上記でも記したように、Xcode のアップデートともに初期化される可能性が高いシステムコードスニペットなだけに、あまり手間のかかる編集は向かない感じですけど、たとえば中括弧の登場位置を右横にするか下段にするか程度であれば、vi エディタの置換で簡単にできます。

Xcode 4.3.2 のシステムコードスニペットでは、たとえば次のように、中括弧がたいてい右側に設定されています。

@try {

statements

}

@catch (NSException *exception) {

handler

}

@finally {

statements

}

このように登録されている中括弧を、次のようにすることで、すべて次の行に送ることができます。

 

上で説明したように vi エディタで "SystemCodeSnippets.codesnippets" を開いたら、コマンドモードの状態で、次のように入力します。

:%s/ {\n/^M{^M/

このとき注意したいのは、上記の "^M" は「改行文字」を表す記号なので、「Ctrl+V を押して、Enter を押す」という流れで入力する必要があるところです。

もし上記の記載どおりの文字で入力したり、改行を表す "\n" を指定したりしてしまうと、そのまま ^M に置き換わったり、^@ に置き換わったりしてしまいます。

 

このように置換してあげると、システムコードスニペットの内容は、次のように編集されます。

@try

{

statements

}

@catch (NSException *exception)

{

handler

}

@finally

{

statements

}

このような簡単な操作で中括弧の位置を調整できるので、Xcode がアップデートされてリセットされてしまっても、めげずにまた調整できると思います。

 

自分の場合は、次の行に中括弧があるのになれていて、自動補完で使い慣れていない中括弧がでてくるたびに消して書き直すのがけっこう負担な感じでしたけど、これで if や switch や @try などを打つ度に感じるストレスが無くなりました。

システムコードスニペットを編集しようと思ったきっかけが、もともとこの中括弧の位置の問題だったので、たとえアップデートの度に戻されようと、この程度の手間で編集できれば万々歳です。