Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

VSCodeのSettings Sync拡張機能でOS毎に設定を切り替えた話

More than 1 year has passed since last update.

複数のOSでVSCodeを使うならSettings Sync拡張機能を使うべき!

仕事柄 ホストOSのWindows上のHyper-Vで、ゲストOSのUbuntuを動かす、みたいな開発環境でいろいろやっています。
ホストOS/ゲストOSともにVSCodeを愛用していて、設定についてはSettings Syncを使って同期しているのですが、「Linuxではこの設定を使いたいけど、Windowsでは使いたくないんだよなぁ」ってことが結構あって悩んでいました。

VSCodeのissuesにも同じような悩みを持つ人が挙げたissueがありますが、2019/06/12時点でまだ公式な対応方法はないようです。

こんな悩みを抱えていたある日、なんとなくSettings SyncのWikiを読んでいると…

https://github.com/shanalikhan/code-settings-sync/wiki/Sync-Pragmas

上のページを見つけました。どれどれ…。

Settings Sync supports per-os and per-host inline settings and keybindings by using Sync Pragmas.

Settings Syncは、Sync Pragmas機能を使用してOS毎およびホスト毎の設定とキーバインドをサポートします。

悩みを解決する方法はこれだー!!

Sync Pragmas機能のざっくりとした使い方

詳細はWikiを見ていただくとして、ざっくりとは以下のような感じです。

settings.json
{
    // @sync os=linux
    "window.zoomLevel": "1" // ...(1)
}

(1)の設定をLinuxでのみ適用したい場合、1行上に// @sync os=linuxというキーワードを挿入します。
すると、Settings SyncのSync : 設定をダウンロード機能を使用したときに、

  • Windows OS/Mac OSの場合は(1)を自動的にコメントアウトしてダウンロードする (=設定が無効となる)
settings.json
{
    // @sync os=linux
  //    "window.zoomLevel": "1" // ...(1)
}
  • Linux OSの場合は何もしない (=設定が有効となる)
settings.json
{
    // @sync os=linux
    "window.zoomLevel": "1" // ...(1)
}

という動作を自動処理してくれます。

補足
先ほどの// @sync ...キーワードを挿入してSync : 設定をアップロード機能を使用した後、すぐにSync : 設定をダウンロード機能を使用しても(自分のWindows環境では)自動処理は実行されませんでした。たぶん既に最新の設定を持っている場合は自動処理が実行されないのだと思います。
その場合は、Sync : 拡張機能の設定をリセット機能を使用して初期化してからやるとうまくいきます。(トークン等の情報を控えておくようにしてくださいね)

キーバインドについては、v3.3.0から対応するみたいなのでもう少し待ちましょう。

これでVSCodeがより使いやすくなりそうです!

hideki0145
現在は基幹業務系システムの設計・開発・運用サポートを主に行っています。 (開発経験:Magic xpa Application Platform / Magic uniPaaS V1Plus / Ruby on Rails / Visual C++ MFC)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away