💨

Xcodeのカスタムスニペットを作成して環境間で同期する

2020/11/30に公開

Xcodeでコードを書く時にコマンドをある程度まで入力すると候補が幾つか出てきて選択することができます。ここで出てくる候補がスニペットです。最初からXcodeに用意されているものでも十分便利ですが、ここに自分なりのスニペットを加えることができると更にコーディングが楽になります。

今回は自分なりのカスタムスニペットを作成して、それを複数のMacで同期する方法をメモしておきます。

カスタムスニペットの作成方法

  1. Xcodeのエディタでコードのスニペットにしたい部分を選択
  2. マウスを右クリックしてメニューからCreate code snippetを選択
  3. 表示されたダイアログに必要事項を入力してDoneをクリック

    以上でカスタムスニペットの作成は終了です。

ダイアログの入力項目

ダイアログには下記の入力項目があるので必要に応じて設定します。

Title

スニペットの名前でダイアログ左にあるリストに表示されます。デフォルトでMy Code Snippetが入力されています。

Summary

スニペットの説明です。候補選択時に表示されます。

Language

SwiftもしくはObjective-Cです。

Platform

All, iOS, macOS, tvOS, watchOSから選択します。

Completion

どの文字列を入力したら候補として表示するかを設定します。

Availability

スニペットがコードの中のどの部分で有効になるかを設定します。

Code

中央の編集ボックスに選択した部分が表示されます。
<##>で囲った文字列はスニペット選択後に選択されて編集可能になる部分です。

prepare関数の中で行先のビューコントローラが目的のものかどうかを確認するスニペットはこんな感じで。

中央のコードの中のidentifier: Stringの部分は<#identifier: String#>と入力してあります。Classも同様です。

Xcodeのエディタでifsと入力すれば候補が出てきます。

選択するとXcodeのエディタに表示されて編集できます。

カスタムスニペットを他のMacと同期する

複数のMacを使ってコードを書く場合に、どのMacでも同じようにカスタムスニペットが使えると便利です。今回はiCloudを使ってMac間の同期を図ります。

やる事はXcodeのカスタムスニペットが保存されているフォルダをiCloudに移動して、各Macのカスタムスニペットが保存されているフォルダをiCloud上のものにリンクするだけです。

カスタムスニペットが保存されている場所

カスタムスニペットは下記の場所に保存されています。
/Users/ユーザ名/Library/Xcode/UserData/CodeSnippets/

iCloudの保存場所

iCloudにXcodeUserDataと言うフォルダを作成します。この中にCodeSnippetsフォルダを移動します。

mkdir /Users/paraches/Library/Mobile\ Documents/com\~apple\~CloudDocs/XcodeUserData

カスタムスニペットの入っているフォルダをiCloudに移動

mv /Users/paraches/Library/Developer/Xcode/UserData/CodeSnippets /Users/paraches/Library/Mobile\ Documents/com\~apple\~CloudDocs/XcodeUserData

カスタムスニペットが保存されていた場所にリンクを張る

ln -s /Users/paraches/Library/Mobile\ Documents/com\~apple\~CloudDocs/XcodeUserData/CodeSnippets /Users/paraches/Library/Developer/Xcode/UserData

以上でiCloudを使用してCodeSnippetsフォルダは同期されます。
後はそれぞれのMacでリンクを張る作業を繰り返せばOKです。

Discussion