背景
この記事では、VSCodeが公式に「設定を同期する機能」を実装する以前に考え出した、VSCodeのいくつかの設定を同期する方法を紹介しています。よほど酔狂な人でなければ公式の機能を使うべきでしょう。
設定ファイルの保存先は Dropbox を前提にしていますが、ローカルファイルを同期してくれるシステムであれば何でも良いでしょう。Dropbox(またはその他同期システム)クライアントを同期させるすべての端末にインストールする必要があります。現在、Dropbox無料版では同期できる端末の上限数を 3 に制限しています。
機能拡張は大量のファイルの追加・削除が発生することが想定され、Dropboxのようなローカルファイル同期システムでは実行速度が極端に遅くなることが考えられるため、今回は対象外としています。
手順
1. ファイルの保存
同期対象のファイルをコピーします。
ファイルの保存先と同じディレクトリに下記のスクリプトを保存し、実行して下さい。
#!/usr/bin/env bash
set -eu
SETTINGDIR="$HOME/Library/Application Support/Code/User"
SOURCEDIR="$(dirname "$(realpath "$0")")"
cd $SOURCEDIR
while read; do
cp $SETTINGDIR/$REPLY .
done <<EOS
snippets
keybindings.json
settings.json
EOS
このスクリプトはもう使用しません。削除しても大丈夫です。
2. シンボリックリンクの作成
コピーしたファイルから本来配置すべき箇所へシンボリックリンクを張ります。
ファイルの保存先と同じディレクトリに下記のスクリプトを保存し、実行して下さい。
#!/usr/bin/env bash
set -eu
SETTINGDIR="$HOME/Library/Application Support/Code/User"
SOURCEDIR="$(dirname "$(realpath "$0")")"
cd $SETTINGDIR
while read; do
[ -d "$REPLY" ] && rm -rf "$REPLY"
ln -sf "$SOURCEDIR/$REPLY" "$REPLY"
done < <(ls "$SOURCEDIR" | grep -v "$(basename $0)")
新規の同期対象端末が増えた場合、このコマンドを実行するだけで同期が完了します。
その他
機能拡張も手動で同期するようなスクリプトを書いたのですが、他の自家製スクリプトを使用する構成になっているため、こちらの掲載は見送りました。