Existe-t-il un moyen de synchroniser mes paramètres Visual Studio Code entre les instances?

123

J'aimerais pouvoir synchroniser mes paramètres utilisateur VS Code (Fichier> Préférences> Paramètres utilisateur) avec le cloud afin de pouvoir les partager facilement entre plusieurs installations, comme dans Windows 10 et Visual Studio.

Existe-t-il un moyen de le faire? La prise en charge directe dans Code serait excellente, mais sinon, pouvoir déplacer mon emplacement settings.json vers un dossier Dropbox ou OneDrive fonctionnerait également.

Je cherche spécifiquement un moyen de le faire automatiquement et silencieusement. L'exportation / importation manuelle est trop lourde et n'est pas ce que je recherche.


Mise à jour: il y a une demande de fonctionnalité pour cela ici . Si vous voulez cette fonctionnalité, merci de lui donner un coup de pouce.

Mark Whitaker
la source
2
Un moyen très simple serait d'utiliser le programme de sauvegarde et de synchronisation de Google et d'ajouter simplement pour sauvegarder votre dossier C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User.
vinsa

Réponses:

126

J'ai développé une extension qui synchronisera tous vos paramètres de code Visual Studio sur plusieurs instances.

Principales caractéristiques

  1. Utilisez votre jeton de compte GitHub.
  2. Facile à télécharger et télécharger en un seul clic.
  3. Enregistre tous les fichiers de paramètres et d'extraits de code.
  4. Télécharger la clé: Maj + Alt + u
  5. Télécharger la clé: Shift + Alt + d
  6. Tapez Sync pour afficher toutes les options de synchronisation

Il synchronise

  • Fichier de paramètres
  • Fichier de liaison de touches
  • Lancer le fichier
  • Dossier d'extraits de code
  • Extensions VSCode

Source de documentation détaillée

VSCode - Article de blog sur la synchronisation des paramètres

Téléchargez ici: VS Code - Synchronisation des paramètres - Extension

Shan Khan
la source
1
Merci Shan Khan - cette extension est très utile - j'ai un ensemble de serveurs virtuels sur lesquels je dois synchroniser les paramètres VS Code et les raccourcis clavier entre les instances et cette extension fonctionne exactement comme annoncé.
Bill_Stewart
Je l'ai essayé mais sans succès. Lorsque je l'activer avec Alt-Shift U, j'obtiens une erreur: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Erreur connecté à la console (menu Aide> Basculer les outils de développement). Vous pouvez ouvrir un problème en utilisant 'Sync: Open Issue' à partir de la commande de configuration avancée.doShow @ messageService.ts: 126
Robin Coe
4
J'adorerais accepter cette réponse, mais j'ai essayé l'outil et je l'ai trouvé peu fiable et bogué. Scénario très simple: VS Code installé sur deux machines, et j'essayais d'obtenir à la fois les paramètres de téléchargement / téléchargement automatique et les modifications d'extensions. J'ai finalement abandonné après avoir échoué à le faire fonctionner. Donc, bonne idée mais nécessite plus de travail.
Mark Whitaker
2
J'ai des sentiments mitigés en publiant mes paramètres sur un Gist (semi) public. Certaines extensions stockent des données sensibles (telles que les connexions à la base de données, les connexions SFTP) dans leurs paramètres. Serait-il difficile de rediriger le stockage vers un fichier "local" à la place, synchronisé par un outil externe comme Syncthing ou Resilio Sync?
korkman le
1
@korkman pour gérer ces situations, Settings Sync permettra de synchroniser via des fichiers locaux et des référentiels git comme gist dans les futures mises à jour.
Shan Khan
21

Vous pouvez créer un lien physique depuis le répertoire contenant les paramètres utilisateur vers votre répertoire de synchronisation d'applications telles que Dropbox ou OneDrive.

Par exemple, sous Windows, les paramètres utilisateur sont situés dans %APPDATA%\Code\User, vous pouvez donc taper:

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

sur vos ordinateurs avec Visual Studio Code pour réaliser la synchronisation.

Ensuite, sur un autre ordinateur, vous pouvez supprimer le %APPDATA%\Code\Userdossier et taper:

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

pour récupérer les paramètres synchronisés.

M. Ree
la source
Salut ! Je ne comprends pas pourquoi vous auriez besoin de créer un lien du répertoire de synchronisation vers le dossier% appdata%. Déplacez une fois pour tous vos paramètres VS actuels dans le répertoire de synchronisation (DropBox, OneDrive, peu importe ...), puis sur chaque ordinateur dont vous souhaitez synchroniser les paramètres, supprimez %APPDATA%\Code\Useret créez le lien en utilisantmklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla
2
Parce que vous échouerez à créer un lien si le nom donné existe déjà, alors que le répertoire de synchronisation sera là une fois les paramètres téléchargés.
Mr. Ree
Cela échoue pour les lecteurs réseau avec le message"Local NTFS volumes are required to complete the operation."
Amit Beckenstein
11

Aha, vous pouvez essayer mon extension VSCode: Syncing .

En espérant que vous l'aimerez. :)


Un guide rapide

  1. Installer la synchronisation :

  2. Obtenez le vôtre GitHub Personal Access Token:

    1. Connectez-vous à votre page GitHub Settings .

      se connecter à la page des paramètres

    2. Sélectionnez l' Personal access tokensonglet et cliquez sur Generate new token.

      générer un nouveau jeton

    3. Sélectionnez gistet cliquez Generate token.

      permettre l'essentiel

    4. Copiez et sauvegardez votre jeton.

      jeton de copie et de sauvegarde

  3. Synchronisez vos paramètres:

    Syncingdemandera les informations nécessaires for the first timeet save for later use.

    1. Télécharger :

      1. Tapez uploaddans VSCode Command Palette.

      2. Entrez votre GitHub Personal Access Token.

      3. Entrez votre Gist ID(ou leave it blankpour créer automatiquement).

      4. Terminé!

      5. Après le téléchargement, vous pouvez trouver vos paramètres et le correspondant Gist IDdans votre GitHub Gist .

        les paramètres et l'essentiel

    2. Télécharger :

      1. Tapez downloaddans VSCode Command Palette.

      2. Entrez votre GitHub Personal Access Token(ou leave it blanksi vous souhaitez télécharger à partir d'un Gist public)

      3. Entrez votre Gist ID(ou a public Gist ID).

      4. Terminé!

Nonoroazoro
la source
Hm. Cela ne semble pas synchroniser les extensions que j'ai installées dans l'installation de référence VS Code. Est-ce que je manque quelque chose ou cette fonctionnalité dépasse-t-elle la portée de cet outil?
SeaDude
EDIT: J'ai dû exécuter Syncing: Download Settings2x pour obtenir les extensions à télécharger. Pas de problème, juste un avertissement. Merci pour l'outil tueur!
SeaDude
1
J'ai des sentiments mitigés en publiant mes paramètres sur un Gist (semi) public. Certaines extensions stockent des données sensibles (telles que les connexions à la base de données, les connexions SFTP) dans leurs paramètres. Serait-il difficile de rediriger le stockage vers un fichier "local" à la place, synchronisé par un outil externe comme Syncthing ou Resilio Sync?
korkman le
@korkman L'exportation vers le stockage local n'est pas encore prise en charge, mais il pourrait être préférable de prendre en charge la synchronisation des fichiers.
Nonoroazoro
9

Dans la v1.48:

Aperçu des fonctionnalités

Les fonctionnalités d'aperçu ne sont pas prêtes à être publiées mais sont suffisamment fonctionnelles pour être utilisées. Nous apprécions vos premiers commentaires pendant leur développement.

Synchronisation des paramètres

La synchronisation des paramètres est maintenant disponible pour un aperçu dans la version stable 🎉. Reportez-vous au guide de l' utilisateur pour plus d'informations et FAQ.

La fonctionnalité est désormais appelée Synchronisation des paramètres également dans le produit. Toutes ses références et paramètres sont renommés pour être alignés.

Voir également «Fusion manuelle» et synchronisation entre Insiders et Stable à l' adresse https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync


Dans la v1.45, il semble que vous pourrez vous connecter à la synchronisation des paramètres intégrée via github, voir https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Prise en charge des connexions GitHub dans la synchronisation des paramètres ). Et les notes de version v1.45 .


Dans la v1.43, en tant que fonctionnalité de prévisualisation (donc dans la version Insiders uniquement) , la synchronisation des paramètres est effectuée . Voir https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Synchronisation des paramètres

Nous avons travaillé ces derniers mois pour prendre en charge la synchronisation des paramètres VS Code, des extensions et des raccourcis clavier entre les machines (demande de fonctionnalité populaire n ° 2743 ). Dans ce jalon, nous sommes heureux d'annoncer que cette fonctionnalité est prête pour la prévisualisation de notre prochaine version 1.44.0-initié . Vous pouvez désormais synchroniser vos personnalisations dans toutes vos installations VS Code sur toutes vos machines. Vous pouvez également amorcer VS Code avec vos personnalisations personnelles sur une nouvelle machine avec un minimum d'effort. La vidéo suivante montre ceci:

Prend en charge la détection des conflits dans les paramètres et les raccourcis clavier lors de la synchronisation. Les conflits sont affichés à l'aide de l'éditeur de différences avec les modifications entrantes (cloud) sur le côté gauche et les modifications locales sur le côté droit. Vous pouvez résoudre les conflits en éditant dans l'éditeur de droite et fusionner les modifications à l'aide des actions fournies dans l'éditeur.

Fonctionnalités prises en charge

Actuellement, les paramètres, les raccourcis clavier, les extensions et la langue d'affichage sont synchronisés, mais nous prévoyons d'en ajouter d'autres. Vous pouvez consulter notre liste de fonctionnalités de synchronisation des paramètres proposées .

Les paramètres de la machine (avec la machine ou les étendues remplaçables par la machine) ne sont pas synchronisés par défaut. Vous pouvez également ajouter ou supprimer les paramètres de votre choix dans cette liste à partir de l'éditeur de paramètres ou en utilisant le paramètre sync.ignoredSettings.

Les raccourcis clavier sont synchronisés par plate-forme par défaut. Si vos raccourcis clavier sont indépendants de la plate-forme, vous pouvez les synchroniser entre les plates-formes en désactivant le paramètre sync.keybindingsPerPlatform.

Toutes les extensions intégrées et installées sont synchronisées avec leur état d'activation global. Vous pouvez ignorer la synchronisation d'une extension, depuis la vue Extensions ou en utilisant le paramètre sync.ignoredExtensions.

L'activité de synchronisation des paramètres peut être surveillée dans la vue de sortie du journal (Sync) . Toutes les personnalisations locales sont sauvegardées pendant les 30 derniers jours (au moins 10) sur le disque chaque fois qu'elles sont modifiées pendant la synchronisation. Vous pouvez utiliser la commande Sync: Open Local Backups Folder pour accéder à l'emplacement des sauvegardes et conserver vos anciennes personnalisations.

(et quelques gifs sur le lien de la note de publication)

Notez que cela fonctionne via votre compte Microsoft , pas github (jusqu'à la v1.45 - voir en haut):

La synchronisation des paramètres utilise un compte Microsoft pour stocker vos personnalisations VS Code pour la synchronisation et vous auriez donc besoin d'un compte pour l'utiliser. Reportez-vous à la documentation Settings Sync pour plus d'informations et d'aide.

Voir également https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md pour plus d'informations sur la configuration settings sync.


Et un lien vers les informations v1.44 sur la synchronisation des paramètres: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync

marque
la source
Merci Mark. Je serai ravi d'essayer ceci quand il arrivera.
Mark Whitaker
1
La question à un million de dollars est de savoir quand cela sera-t-il stable? 1.46 est sorti mais toujours réservé aux initiés :(
bviktor
6

Je l'ai fait sur mon Mac en copiant les codes VS settings.jsonsur mon lecteur iCloud pour une sauvegarde automatique, puis en créant un lien symbolique.

  1. Copier settings.jsondu répertoire des paramètres du code VS $HOME/Library/Application Support/Code/User/settings.json vers votre emplacement de sauvegarde
  2. Sauvegardez l'ancien settings.jsonen renommantsettings-old.json
  3. Dans le terminal, cddans le répertoire de réglage du code VS:cd ~/Library/Application\ Support/Code/User/
  4. Créez le lien symbolique vers votre fichier sauvegardé à l'aide de la commande ln -sf path/to/backup/settings.json settings.json. Depuis que j'ai sauvegardé le mien sur iCloud et renommé le fichier en vscode.settings.json, ma commande ressemblait à ceci:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Vérifiez que vous pouvez ouvrir les préférences utilisateur dans VS Code

Pour utiliser la sauvegarde sur un autre Mac, répétez simplement les étapes 2 à 5.

J'ai aussi fait ça pour les extensions ...

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
la source
@frankhommers Il ressemble à ceci peut être répliqué en utilisant la commande symlink de la fenêtre: mklink. Vous pouvez utiliser DropBox, OneDrive ou un autre service cloud au lieu du lecteur iCloud
Chris Feist
4

Je place mon settings.jsondans un fichier de configuration que je synchronise avec git (bien que Dropbox fonctionne également) et utilise un script Python pour le lier symboliquement à l'emplacement correct pour chaque plate-forme afin de le mettre à jour à partir du menu des paramètres se synchronise sur mes machines. La création de liens symboliques nécessite des privilèges d'administrateur sur 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
la source
3

Paramètres utilisateur

Il n'y a actuellement aucune synchronisation automatique pour les paramètres utilisateur disponibles dans Visual Studio Code. Sous Windows, les paramètres utilisateur se trouvent dans %APPDATA%\Code\User\settings.json. Vous pouvez enregistrer une copie de ce fichier sur OneDrive ou Dropbox et la déplacer sur toutes vos machines vers le dossier des paramètres utilisateur. Mais cela inclut toujours des étapes manuelles sur chaque machine chaque fois que vous modifiez la configuration.

Vous pouvez suggérer une synchronisation automatique des paramètres ici: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Paramètres de l'espace de travail

Ajoutez le .vscodedossier de votre espace de travail au système de contrôle de version (Git / SVN, etc.). Lorsque vous récupérez le code du référentiel, vous obtiendrez automatiquement les paramètres de l'espace de travail VS Code.

Wosi
la source
Merci d'avoir répondu, mais vous avez mal compris la question. Je pose des questions sur les paramètres utilisateur, pas sur les paramètres du projet. J'ai ajouté quelques éclaircissements à la question.
Mark Whitaker
1
Merci, j'ai amélioré la réponse
Wosi
3

Une autre façon de le faire serait de lier vos fichiers, qui peuvent également être stockés dans un référentiel sur GitHub. Par exemple, sur Mac OS, disons que vous avez un répertoire appelé ~/dev/dotfiles/vscode. Disons qu'il y a deux fichiers appelés settings.jsonet keybindings.json. Vous pouvez lier ces fichiers avec:

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

Si vous utilisez Windows ou Linux, le chemin d'accès aux répertoires de paramètres respectifs peut être trouvé à https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations

David
la source
2

Il s'agit enfin d'une fonctionnalité intégrée: consultez Synchronisation des paramètres dans Visual Studio Code .

Remarque : la synchronisation est actuellement en préversion à partir de la version 1.46 de mai 2020.

Mark Whitaker
la source
2
Encore en avant-première
Frank Fu
@FrankFu Eh bien, mais c'est une fonctionnalité importante, et ils progressent: vous pouvez vous synchroniser avec un compte microsoft / github, et il existe une api proposée pour la connexion au compte, etc. (qui sera utile pour d'autres extensions telles que nous github btw)
Chayim Friedman
@ChayimFriedman, oh à 100%, je n'avais aucunement l'intention de me plaindre. J'avais l'impression qu'il fallait clarifier cela pour éviter de donner de faux espoirs aux gens puisque la réponse originale non éditée ne disait pas le contraire.
Frank Fu
@FrankFu Oh, bien. Désolé.
Chayim Friedman le
-7

Utilisez les paramètres de l'espace de travail au lieu des paramètres utilisateur.

ColacX
la source
Ce n'est pas une suggestion constructive car les paramètres de l'espace de travail ne se synchronisent pas entre le projet ou les systèmes.
Itanex
2
En donnant à @ColacX le bénéfice du doute, je suppose que ce que cela voulait dire était que si vous utilisez les paramètres de l'espace de travail, vous pouvez les enregistrer dans git / svn / etc, ce qui les synchronise en un sens.
Joshua Sleeper