Gibt es eine Möglichkeit, meine Visual Studio-Codeeinstellungen zwischen Instanzen zu synchronisieren?

123

Ich möchte meine VS Code-Benutzereinstellungen (Datei> Einstellungen> Benutzereinstellungen) irgendwie mit der Cloud synchronisieren können, damit ich sie problemlos für mehrere Installationen freigeben kann, wie in Windows 10 und Visual Studio.

Gibt es eine unterstützte Möglichkeit, dies zu tun? Direkte Unterstützung in Code wäre großartig, aber ansonsten würde es auch funktionieren, wenn ich den Speicherort settings.json in einen Dropbox- oder OneDrive-Ordner verschieben könnte.

Ich suche speziell nach einer Möglichkeit, dies automatisch und leise zu tun. Manuelles Exportieren / Importieren ist zu umständlich und nicht das, wonach ich suche.


Update: Hierfür gibt es eine Feature-Anfrage . Wenn Sie diese Funktion wünschen, geben Sie bitte einen Daumen hoch.

Mark Whitaker
quelle
2
Eine sehr einfache Möglichkeit wäre, wenn Sie das Sicherungs- und Synchronisierungsprogramm von Google verwenden und nur hinzufügen, um Ihren Ordner C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User zu sichern.
Vinsa

Antworten:

126

Ich habe eine Erweiterung entwickelt, die alle Ihre Visual Studio-Codeeinstellungen über mehrere Instanzen hinweg synchronisiert.

Hauptmerkmale

  1. Verwenden Sie Ihr GitHub-Konto-Token.
  2. Einfaches Hochladen und Herunterladen mit einem Klick.
  3. Speichert alle Einstellungen und Snippets-Dateien.
  4. Upload-Taste: Umschalt + Alt + u
  5. Download-Taste: Umschalt + Alt + d
  6. Geben Sie Sync ein, um alle Synchronisierungsoptionen anzuzeigen

Es wird synchronisiert

  • Einstellungsdatei
  • Schlüsselbindungsdatei
  • Datei starten
  • Snippets-Ordner
  • VSCode- Erweiterungen

Detaillierte Dokumentationsquelle

VSCode - Einstellungen Blogbeitrag synchronisieren

Hier herunterladen: VS Code - Einstellungen synchronisieren - Erweiterung

Shan Khan
quelle
1
Vielen Dank an Shan Khan - diese Erweiterung ist sehr nützlich - ich habe eine Reihe von virtuellen Servern, auf denen ich VS-Codeeinstellungen und Schlüsselbindungen zwischen Instanzen synchronisieren muss, und diese Erweiterung funktioniert genau wie angekündigt.
Bill_Stewart
Versuchte es aber keinen Erfolg. Wenn ich es mit Alt-Shift U aktiviere, wird folgende Fehlermeldung angezeigt: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Error Logged In Console (Hilfemenü> Entwickler-Tools umschalten). Sie können ein Problem mit 'Sync: Open Issue' über den Befehl zur Voreinstellung öffnen. E.doShow @ messageService.ts: 126
Robin Coe
4
Ich würde diese Antwort gerne akzeptieren, aber ich habe das Tool ausprobiert und fand es unzuverlässig und fehlerhaft. Sehr einfaches Szenario: VS-Code wurde auf zwei Computern installiert, und ich habe versucht, sowohl Einstellungen für das automatische Hochladen / Herunterladen als auch Änderungen an Erweiterungen vorzunehmen. Ich gab schließlich auf, nachdem ich es nicht zum Laufen gebracht hatte. Also, tolle Idee, braucht aber mehr Arbeit.
Mark Whitaker
2
Ich habe gemischte Gefühle, wenn ich meine Einstellungen in einem (halb-) öffentlichen Gist veröffentliche. Einige Erweiterungen speichern vertrauliche Daten (z. B. Datenbankanmeldungen, SFTP-Anmeldungen) in ihren Einstellungen. Wäre es schwierig, den Speicher stattdessen in eine "lokale" Datei umzuleiten, die von einem externen Tool wie Syncthing oder Resilio Sync synchronisiert wird?
Corkman
1
@korkman Um diese Situationen zu bewältigen, ermöglicht Settings Sync die Synchronisierung über lokale Dateien und Git-Repositorys wie gist in zukünftigen Updates.
Shan Khan
21

Sie können eine feste Verknüpfung vom Verzeichnis mit den Benutzereinstellungen zu Ihrem Synchronisierungsverzeichnis von Anwendungen wie Dropbox oder OneDrive herstellen.

Unter Windows befinden sich beispielsweise die Benutzereinstellungen in %APPDATA%\Code\User, sodass Sie Folgendes eingeben können:

mklink /H /J X:\Your\Sync\Dir %APPDATA%\Code\User

auf Ihren Computern mit Visual Studio Code, um die Synchronisierung zu erreichen.

Anschließend können Sie auf einem anderen Computer den %APPDATA%\Code\UserOrdner löschen und Folgendes eingeben:

mklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir

um die synchronisierten Einstellungen abzurufen.

Mr. Ree
quelle
Hallo ! Ich verstehe nicht, warum Sie einen Link vom Synchronisierungsverzeichnis zum Ordner% appdata% erstellen müssen. Verschieben Sie einmal alle Ihre tatsächlichen VS-Einstellungen in das Synchronisierungsverzeichnis (DropBox, OneDrive, was auch immer ...) und löschen %APPDATA%\Code\Userund erstellen Sie dann auf jedem Computer, auf dem Sie die Einstellungen synchronisieren möchten , den Link mithilfe vonmklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla
2
Weil Sie keinen Link erstellen können, wenn der angegebene Name bereits vorhanden ist, während das Synchronisierungsverzeichnis vorhanden ist, sobald die Einstellungen heruntergeladen wurden.
Herr Ree
Dies schlägt bei Netzlaufwerken mit der Meldung"Local NTFS volumes are required to complete the operation."
Amit Beckenstein
11

Aha, du kannst meine VSCode-Erweiterung ausprobieren : Synchronisieren .

Ich hoffe es wird dir gefallen. :) :)


Eine Kurzanleitung

  1. Synchronisierung installieren :

  2. Holen Sie sich Ihre eigenen GitHub Personal Access Token:

    1. Melden Sie sich auf Ihrer GitHub- Settings Seite an.

      Melden Sie sich auf der Einstellungsseite an

    2. Wählen Sie die Personal access tokensRegisterkarte und klicken Sie auf Generate new token.

      neues Token generieren

    3. Wählen Sie gistund klicken Sie Generate token.

      erlauben Sie das Wesentliche

    4. Kopieren und sichern Sie Ihr Token.

      Token kopieren und sichern

  3. Synchronisieren Sie Ihre Einstellungen:

    Syncingwird nach notwendigen Informationen fragen for the first timeund save for later use.

    1. Hochladen :

      1. Geben Sie uploadein VSCode Command Palette.

      2. Geben Sie Ihre GitHub Personal Access Token.

      3. Geben Sie Ihre Gist ID(oder leave it blankautomatisch zu erstellen).

      4. Getan!

      5. Nach dem Hochladen finden Sie Ihre Einstellungen und die entsprechenden Gist IDin Ihrem GitHub Gist .

        Einstellungen und Kern

    2. Herunterladen :

      1. Geben Sie downloadein VSCode Command Palette.

      2. Geben Sie Ihre GitHub Personal Access Token(oder leave it blankwenn Sie von einem öffentlichen Gist herunterladen möchten)

      3. Geben Sie Ihre Gist ID(oder eine public Gist ID) ein.

      4. Getan!

Nonoroazoro
quelle
Hm. Dies scheint die Erweiterungen, die ich in der Referenz-VS-Code-Installation installiert habe, nicht zu synchronisieren. Fehlt mir etwas oder geht diese Funktionalität über den Rahmen dieses Tools hinaus?
SeaDude
EDIT: Ich musste Syncing: Download Settings2x ausführen , um die Erweiterungen zum Download zu bekommen. Kein Problem, nur ein Kopf hoch. Danke für das Killer-Tool!
SeaDude
1
Ich habe gemischte Gefühle, wenn ich meine Einstellungen in einem (halb-) öffentlichen Gist veröffentliche. Einige Erweiterungen speichern vertrauliche Daten (z. B. Datenbankanmeldungen, SFTP-Anmeldungen) in ihren Einstellungen. Wäre es schwierig, den Speicher stattdessen in eine "lokale" Datei umzuleiten, die von einem externen Tool wie Syncthing oder Resilio Sync synchronisiert wird?
Corkman
@korkman Das Exportieren in den lokalen Speicher wird noch nicht unterstützt, es könnte jedoch besser sein, die Dateisynchronisierung zu unterstützen.
Nonoroazoro
9

In Version 1.45 können Sie sich anscheinend über Github bei der integrierten Einstellungssynchronisierung anmelden (siehe https://github.com/microsoft/vscode/issues/95160#event-3266867554) (Unterstützung von GitHub-Anmeldungen bei der Einstellungssynchronisierung ). Und die Versionshinweise zu Version 1.45 .


In Version 1.43 wird als Vorschaufunktion (also nur im Insider-Build) die Einstellungen synchronisiert . Siehe https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Einstellungen Synchronisieren

Wir haben in den letzten Monaten daran gearbeitet, die Synchronisierung von VS-Code-Einstellungen, Erweiterungen und Tastaturkürzeln auf verschiedenen Computern zu unterstützen (beliebte Funktionsanforderung Nr. 2743 ). In diesem Meilenstein freuen wir uns, Ihnen mitteilen zu können, dass diese Funktion für die Vorschau unserer nächsten Insider- Version 1.44.0 bereit ist . Sie können jetzt Ihre Anpassungen in all Ihren VS Code-Installationen auf allen Ihren Computern synchronisieren lassen. Sie können VS Code auch mit Ihren persönlichen Anpassungen auf einem neuen Computer mit minimalem Aufwand booten. Das folgende Video zeigt dies:

Unterstützt das Erkennen von Konflikten in Einstellungen und Tastenkombinationen während der Synchronisierung. Konflikte werden mit dem Diff-Editor mit eingehenden (Cloud-) Änderungen auf der linken Seite und lokalen Änderungen auf der rechten Seite angezeigt. Sie können die Konflikte lösen, indem Sie sie im rechten Editor bearbeiten und die Änderungen mithilfe der im Editor bereitgestellten Aktionen zusammenführen.

Unterstützte Funktionen

Derzeit sind Einstellungen, Tastaturkürzel, Erweiterungen und die Anzeigesprache synchronisiert, wir planen jedoch, weitere hinzuzufügen. Sie können unsere Liste der vorgeschlagenen Einstellungssynchronisierungsfunktionen überprüfen .

Maschineneinstellungen (mit Maschinen oder von Maschinen überschreibbaren Bereichen) werden standardmäßig nicht synchronisiert. Sie können dieser Liste auch Einstellungen hinzufügen oder entfernen, die Sie dem Einstellungseditor hinzufügen oder die Einstellung verwenden möchten sync.ignoredSettings.

Tastaturkürzel werden standardmäßig pro Plattform synchronisiert. Wenn Ihre Tastaturkürzel plattformunabhängig sind, können Sie sie plattformübergreifend synchronisieren, indem Sie die Einstellung deaktivieren sync.keybindingsPerPlatform.

Alle integrierten und installierten Erweiterungen werden zusammen mit ihrem globalen Aktivierungsstatus synchronisiert. Sie können die Synchronisierung einer Erweiterung in der Erweiterungsansicht oder mithilfe der Einstellung überspringen sync.ignoredExtensions.

Einstellungen Die Synchronisierungsaktivität kann in der Ausgabeansicht Protokoll (Synchronisierung) überwacht werden . Alle lokalen Anpassungen werden für die letzten 30 Tage (mindestens 10) auf der Festplatte gesichert, wenn sie während der Synchronisierung geändert werden. Mit dem Befehl Synchronisieren: Lokalen Sicherungsordner öffnen können Sie den Sicherungsspeicherort aufrufen und Ihre alten Anpassungen beibehalten.

(und ein paar Gifs unter dem Link zum Release Note)

Beachten Sie, dass dies über Ihr Microsoft-Konto und nicht über Github funktioniert (bis Version 1.45 - siehe oben):

Einstellungen Sync verwendet ein Microsoft-Konto, um Ihre VS-Code-Anpassungen für die Synchronisierung zu speichern. Daher benötigen Sie ein Konto, um dies zu verwenden. Weitere Informationen und Hilfe finden Sie in der Dokumentation zur Einstellungssynchronisierung .

Weitere Informationen zum Einrichten finden Sie unter https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.mdsettings sync .


Und ein Link zu Informationen zu Version 1.44 bei der Synchronisierung von Einstellungen: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync

Kennzeichen
quelle
Danke Mark. Ich werde es gerne versuchen, wenn es eintrifft.
Mark Whitaker
1
Die Millionen-Dollar-Frage ist, wann dies stabil bleiben wird. 1.46 ist raus, aber immer noch nur für Insider :(
bviktor
6

Ich habe dies auf meinem Mac getan, indem ich VS-Codes settings.jsonfür die automatische Sicherung auf mein iCloud-Laufwerk kopiert und dann eine symbolische Verknüpfung erstellt habe.

  1. Kopieren Sie settings.jsonaus dem VS-Codeeinstellungsverzeichnis $HOME/Library/Application Support/Code/User/settings.json in Ihren Sicherungsspeicherort
  2. Sichern Sie das alte settings.jsondurch Umbenennen insettings-old.json
  3. Im Terminal cdzum VS-Code-Einstellungsverzeichnis:cd ~/Library/Application\ Support/Code/User/
  4. Erstellen Sie den Symlink zu Ihrer gesicherten Datei mit dem Befehl ln -sf path/to/backup/settings.json settings.json. Da ich meine in iCloud gesichert und die Datei in umbenannt habe vscode.settings.json, sah mein Befehl folgendermaßen aus:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Überprüfen Sie, ob Sie Benutzereinstellungen in VS Code öffnen können

Um das Backup auf einem anderen Mac zu verwenden, wiederholen Sie einfach die Schritte 2-5.

Ich habe das auch für Erweiterungen gemacht ...

cd ~/.vscode/
mkdir ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/
cp -a extensions ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode
mv extensions extensions-old
ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/extensions extensions
Chris Feist
quelle
@frankhommers Es sieht so aus, als ob dies mit dem Befehl symlink des Fensters repliziert werden kann : mklink. Sie können DropBox, OneDrive oder einen anderen Cloud-Dienst anstelle des iCloud-Laufwerks verwenden
Chris Feist
4

Ich platziere meine settings.jsonin einer Konfigurationsdatei, die ich mit git synchronisiere (obwohl Dropbox auch funktionieren würde) und verwende ein Python-Skript, um sie mit dem richtigen Speicherort für jede Plattform zu verknüpfen, sodass die Aktualisierung über das Einstellungsmenü auf meinen Computern synchronisiert wird. Das Erstellen von Symlinks erfordert Administratorrechte unter Windows.

import os
import platform

# Find the settings file in the same directory as this script
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
VS_SETTINGS_SRC_PATH = os.path.join(SCRIPT_DIR, 'settings.json')

# https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations
if platform.system() == 'Windows':
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"%APPDATA%\Code\User\settings.json")
elif platform.system() == "Darwin":
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"$HOME/Library/Application Support/Code/User/settings.json")
elif platform.system() == "Linux":
    raise NotImplementedError()
else:
    raise NotImplementedError()

# On Windows, there might be a symlink pointing to a different file
# Always remove symlinks
if os.path.islink(VS_SETTINGS_DST_PATH):
    os.remove(VS_SETTINGS_DST_PATH)

choice = input('symlink %r -> %r ? (y/n) ' % (VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH))
if choice == 'y':
    os.symlink(VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH)
    print('Done')
else:
    print('aborted')
Ben
quelle
3

Benutzereinstellungen

Derzeit ist keine automatische Synchronisierung für Benutzereinstellungen in Visual Studio Code verfügbar. Unter Windows befinden sich die Benutzereinstellungen in %APPDATA%\Code\User\settings.json. Sie können eine Kopie dieser Datei auf OneDrive oder Dropbox speichern und auf allen Ihren Computern in den Ordner mit den Benutzereinstellungen verschieben. Dies umfasst jedoch weiterhin manuelle Schritte auf jedem Computer, wenn Sie die Konfiguration ändern.

Sie können hier eine automatische Synchronisierung der Einstellungen vorschlagen: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Arbeitsbereichseinstellungen

Fügen Sie den .vscodeOrdner Ihres Arbeitsbereichs zum Versionskontrollsystem hinzu (Git / SVN usw.). Wenn Sie den Code aus dem Repository auschecken, erhalten Sie automatisch die VS Code-Arbeitsbereichseinstellungen.

Wosi
quelle
Vielen Dank für Ihre Antwort, aber Sie haben die Frage falsch verstanden. Ich frage nach Benutzereinstellungen, nicht nach Projekteinstellungen. Ich habe der Frage einige Klarstellungen hinzugefügt.
Mark Whitaker
1
Danke, ich habe die Antwort verbessert
Wosi
3

Eine andere Möglichkeit wäre, Ihre Dateien per Softlink zu verknüpfen, die auch in einem Repository auf GitHub gespeichert werden können. Angenommen, Sie haben unter Mac OS ein Verzeichnis mit dem Namen ~/dev/dotfiles/vscode. Nehmen wir an, es gibt zwei Dateien mit dem Namen settings.jsonund keybindings.json. Sie können diese Dateien mit folgenden Elementen verknüpfen:

ln -s ~/dev/dotfiles/vscode/keybindings.json ~/Library/Application\ Support/Code/User/keybindings.json
ln -s ~/dev/dotfiles/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json

Wenn Sie Windows oder Linux verwenden, finden Sie den Pfad zu den jeweiligen Einstellungsverzeichnissen unter https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations

David
quelle
2

Dies ist endlich eine integrierte Funktion: Siehe Einstellungen synchronisieren in Visual Studio Code .

Hinweis : Die Synchronisierung wird derzeit ab Mai 2020 Version 1.46 in der Vorschau angezeigt.

Mark Whitaker
quelle
2
Immer noch in der Vorschau
Frank Fu
@FrankFu Nun, aber dies ist eine große Funktion, und sie machen Fortschritte: Sie können mit dem Microsoft / Github-Konto synchronisieren, und es gibt eine vorgeschlagene API für die Kontoanmeldung usw. (die für andere Erweiterungen wie uns nützlich sein wird github übrigens)
Chayim Friedman
@ChayimFriedman, oh 100%, in keiner Weise war meine Absicht, mich zu beschweren. Ich hatte das Gefühl, dass es geklärt werden musste, um den Menschen keine falsche Hoffnung zu geben, da die ursprüngliche unbearbeitete Antwort nichts anderes sagte.
Frank Fu
@FrankFu Oh, gut. Es tut uns leid.
Chayim Friedman
-7

Verwenden Sie Arbeitsbereichseinstellungen anstelle von Benutzereinstellungen.

ColacX
quelle
Kein konstruktiver Vorschlag, da die Arbeitsbereichseinstellungen nicht projekt- oder systemübergreifend synchronisiert werden.
Itanex
2
Wenn ich @ColacX den Vorteil des Zweifels gebe, gehe ich davon aus, dass gemeint ist, dass Sie, wenn Sie Arbeitsbereichseinstellungen verwenden, diese in git / svn / etc speichern können, wodurch sie tatsächlich in gewissem Sinne synchronisiert werden.
Joshua Sleeper