概要
複数PC間でのVSCode設定ファイルの一元管理方法の紹介です。
VSCodeの設定ファイルをどうやって管理しようか悩んでいたのですが、ある程度落ち着いたのでここに記しておきます。
ひとつの例として参考にしてみてください。
たどり着いた方法
結論から言うと、設定ファイルをGitで管理してGitHubで同期し、VSCodeに対してはシンボリックリンクで設定ファイルを認識させる方法が自分にとってはベストでした。
こんな感じのリポジトリ構成でPCごとに設定ファイルを管理してます。
vscode-setting-sync
│
├ win1
│ ├ snippets
│ │ └ *.json
│ ├ keybindings.json
│ └ settings.json
│
├ win2
│ ├ snippets
│ │ └ *.json
│ ├ keybindings.json
│ └ settings.json
│
└ mac1
├ snippets
│ └ *.json
├ keybindings.json
└ settings.json
それで、setting.json
などへのシンボリックリンクをVSCodeの設定ファイルのパスの場所につくってます。
# Windowsでシンボリックリンクを作成するコマンドレット (管理者権限が必要)
New-Item `
-ItemType SymbolicLink `
-Path "C:\Users\tacos\AppData\Roaming\Code\User\settings.json" ` # シンボリックリンクのパス
-Value "C:\Users\tacos\git\vscode-setting-sync\win1\settings.json" ` # 実体ファイルのパス
-Force
ディレクトリをPCごとに分けているのは、PCのOSや用途によって入れている拡張機能や設定が異なっているので設定ファイルを分ける必要があったからです。
(昔、設定内容を同期する拡張機能を使っていたのですがWinddowsとMacを同期してごちゃごちゃになってしまった経験があります...)
運用方法としては、例えばwin1のVSCodeで設定を変えると win1/setting.json
で差分が検知されるので、それを他のマシンにも反映したければ win2/setting.json
などにも追記してcommit&pushするという感じで使ってます。
補足) なぜGit管理?
Git管理にしたのは 設定内容の変更を検知したかった からです。
VSCodeユーザーなら共感してくれるんじゃないかと思うのですが、setting.json
の末尾に知らないうちに設定が追加されていた経験ないですか?
(例えばGUI操作でポチポチしてたら変わってたとか、拡張機能を呼び出したら変わってたとか、等々)
あまり問題になることはないんですけど、たまに自分で設定した内容が上書きされてしまうこともあったので、変更を監視できるようにしたいなと思ってました。
なのでGitの管理対象にして「この設定変更は必要な変更だからあとで別のPCに反映する」とか「この設定変更は操作ミスだから戻す」とかの判断ができるようにしてみました。
補足) 他PCとの設定共有
自分は複数のPCを使い分けているのですが、メインPCの使用率が8割くらいなのでたまにサブPCを使うと「VSCodeの設定がなんか違う...」となることが多々ありました。
(例えば設定が古いとか、自作スニペットがないとか、キーバインドがないとか、等々)
なので設定ファイルをどこか1か所で管理したいという思いがありました。
そこで、今回はGit管理としたのでGitHubにあげることでメインPCの設定をサブPCと共有できるようにしました。
ちなみに、単に同期するだけならOneDriveのようなクラウドストレージやNASに上記構成のディレクトリを作る方法もアリだと思います。
また、PCごとに設定ファイルを分ける必要もないのであればVSCode標準の Settings Sync を使うのが手っ取り早いと思います。
やってみての感想
やりたかったことはいい感じに実現できたと思います。
ちょうどこの整理をしているときにPCを新しく買ったんですけど、リポジトリをクローンしてリンクを貼るだけで設定が完了したときは少し感動しました。
一方で気になる点として、これは仕方ないですけど、やはりVSCodeで設定を変えたあとにわざわざリポジトリの場所でコマンド操作しないと同期できないのが少し面倒ですね。
ひとまず運用してみて何かあれば追記したいと思います。
最後まで読んでいただきありがとうございます。みなさんもよきVSCodeライフを ノシ