C'è un modo per sincronizzare le mie impostazioni di Visual Studio Code tra le istanze?


123

Mi piacerebbe essere in grado di sincronizzare le mie impostazioni utente di VS Code (File> Preferenze> Impostazioni utente) nel cloud in qualche modo in modo da poterle condividere facilmente tra più installazioni, come in Windows 10 e Visual Studio.

C'è un modo supportato per farlo? Il supporto diretto in Code sarebbe ottimo, ma per il resto anche la possibilità di spostare la mia posizione settings.json in una cartella Dropbox o OneDrive funzionerebbe.

Sto cercando specificamente un modo per farlo automaticamente e in silenzio. L'esportazione / importazione manuale è troppo complicata e non è quello che sto cercando.


Aggiornamento: c'è una richiesta di funzionalità per questo qui . Se vuoi questa funzione, per favore dai un pollice in su.


2
Un modo molto semplice sarebbe quello di utilizzare il programma Backup e sincronizzazione di Google e aggiungerlo al backup della cartella C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User.
vinsa

Risposte:


126

Ho sviluppato un'estensione che sincronizzerà tutte le impostazioni del codice di Visual Studio su più istanze.

Caratteristiche principali

  1. Usa il token del tuo account GitHub.
  2. Facile da caricare e scaricare con un clic.
  3. Salva tutte le impostazioni e i file di snippet.
  4. Tasto di caricamento: Maiusc + Alt + u
  5. Tasto download: Maiusc + Alt + d
  6. Digita Sincronizza per visualizzare tutte le opzioni di sincronizzazione

Sincronizza

  • File delle impostazioni
  • File di associazione dei tasti
  • Avvia file
  • Cartella frammenti
  • Estensioni VSCode

Fonte documentazione dettagliata

VSCode - Post del blog sulla sincronizzazione delle impostazioni

Scarica qui: Codice VS - Sincronizzazione impostazioni - Estensione


1
Grazie Shan Khan - questa estensione è abbastanza utile - Ho una serie di server virtuali in cui ho bisogno di sincronizzare le impostazioni di VS Code e le associazioni di tasti tra le istanze e questa estensione funziona esattamente come pubblicizzato.
Bill_Stewart

Ho provato ma senza successo. Quando lo attivo con Alt-Shift U, ricevo un errore: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Errore registrato nella console (menu Aiuto> Attiva / disattiva strumenti per sviluppatori). È possibile aprire un problema utilizzando "Sincronizzazione: Apri problema" dal comando di impostazione avanzata. Es. DoShow @ messageService.ts: 126
Robin Coe

4
Mi piacerebbe accettare questa risposta, ma ho provato lo strumento e l'ho trovato inaffidabile e difettoso. Scenario molto semplice: VS Code installato su due macchine e stavo cercando di ottenere entrambe le impostazioni di caricamento / download automatico e le modifiche alle estensioni. Alla fine ho rinunciato dopo aver fallito nel farlo funzionare. Quindi, ottima idea ma necessita di più lavoro.
Mark Whitaker

2
Ho sentimenti contrastanti nel pubblicare le mie impostazioni su un Gist (semi) pubblico. Alcune estensioni memorizzano dati sensibili (come accessi al database, accessi SFTP) nelle loro impostazioni. Sarebbe invece difficile reindirizzare l'archiviazione a un file "locale", sincronizzato da uno strumento esterno come Syncthing o Resilio Sync?
korkman

1
@korkman per gestire queste situazioni, Settings Sync consentirà di sincronizzare tramite file locali e repository git come gist negli aggiornamenti futuri.
Shan Khan

21

È possibile creare un collegamento fisico dalla directory contenente le impostazioni utente alla directory di sincronizzazione delle applicazioni come Dropbox o OneDrive.

Ad esempio, su Windows, le impostazioni utente si trovano in %APPDATA%\Code\User, quindi puoi digitare:

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

sui tuoi computer con Visual Studio Code per ottenere la sincronizzazione.

Quindi, su un altro computer, puoi eliminare la %APPDATA%\Code\Usercartella e digitare:

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

per recuperare le impostazioni sincronizzate.


Ciao ! Non capisco perché dovresti creare un collegamento DALLA directory di sincronizzazione alla cartella% appdata%. Spostati una volta per tutte le impostazioni effettive di VS nella directory di sincronizzazione (DropBox, OneDrive, qualunque cosa ...), quindi su ogni computer in cui desideri sincronizzare le impostazioni, elimina %APPDATA%\Code\Usere crea il collegamento utilizzandomklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla

2
Perché non riuscirai a creare un collegamento se il nome dato esiste già, mentre la directory di sincronizzazione sarà lì una volta scaricate le impostazioni.
Mr. Ree

Questo non riesce per le unità di rete con il messaggio"Local NTFS volumes are required to complete the operation."
Amit Beckenstein,

11

Aha, puoi provare la mia estensione VSCode: Syncing .

Spero che ti piaccia. :)


Una guida rapida

  1. Installa sincronizzazione :

  2. Prendi il tuo GitHub Personal Access Token:

    1. Accedi alla tua pagina GitHub Settings .

      accedi alla pagina delle impostazioni

    2. Seleziona la Personal access tokensscheda e fai clic Generate new token.

      generare nuovo token

    3. Seleziona giste clicca Generate token.

      consentire il succo

    4. Copia e fai il backup del tuo token.

      token di copia e backup

  3. Sincronizza le tue impostazioni:

    Syncingchiederà le informazioni necessarie for the first timee save for later use.

    1. Carica :

      1. Digitare uploadin VSCode Command Palette.

      2. Inserisci il tuo GitHub Personal Access Token.

      3. Inserisci il tuo Gist ID(o leave it blankper creare automaticamente).

      4. Fatto!

      5. Dopo il caricamento, puoi trovare le tue impostazioni e il corrispondente Gist IDnel tuo GitHub Gist .

        impostazioni e sintesi

    2. Scarica :

      1. Digitare downloadin VSCode Command Palette.

      2. Inserisci il tuo GitHub Personal Access Token(oleave it blank se vuoi scaricare da un Gist pubblico)

      3. Inserisci il tuo Gist ID(o un public Gist ID).

      4. Fatto!


Hm. Questo non sembra sincronizzare le estensioni che ho installato nell'installazione di riferimento di VS Code. Mi manca qualcosa o questa funzionalità va oltre lo scopo di questo strumento?
SeaDude

EDIT: ho dovuto eseguire Syncing: Download Settings2x per scaricare le estensioni. Nessun problema, solo un avvertimento. Grazie per lo strumento killer!
SeaDude

1
Ho sentimenti contrastanti nel pubblicare le mie impostazioni su un Gist (semi) pubblico. Alcune estensioni memorizzano dati sensibili (come accessi al database, accessi SFTP) nelle loro impostazioni. Sarebbe invece difficile reindirizzare l'archiviazione a un file "locale", sincronizzato da uno strumento esterno come Syncthing o Resilio Sync?
korkman

@korkman L'esportazione nella memoria locale non è ancora supportata, ma potrebbe essere meglio supportare la sincronizzazione dei file.
Nonoroazoro

9

Nella v1.45 sembra che sarai in grado di accedere alla sincronizzazione delle impostazioni incorporata tramite github, vedi https://github.com/microsoft/vscode/issues/95160#event-3266867554 (supporta gli accessi GitHub nella sincronizzazione delle impostazioni ). E le note di rilascio v1.45 .


Nella v1.43 come funzionalità di anteprima (quindi solo nella build Insiders) è la sincronizzazione delle impostazioni . Vedi https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Impostazioni di sincronizzazione

Abbiamo lavorato negli ultimi due mesi per supportare la sincronizzazione delle impostazioni, delle estensioni e delle scorciatoie da tastiera di VS Code tra le macchine (richiesta di funzionalità popolare # 2743 ). In questo traguardo, siamo lieti di annunciare che questa funzione è pronta per l'anteprima dalla nostra prossima versione 1.44.0-insider . È ora possibile sincronizzare le personalizzazioni in tutte le installazioni di VS Code su tutte le macchine. Puoi anche avviare VS Code con le tue personalizzazioni personali su una nuova macchina con il minimo sforzo. Il seguente video lo dimostra:

Supporta il rilevamento dei conflitti nelle impostazioni e nelle associazioni di tasti durante la sincronizzazione. I conflitti vengono visualizzati utilizzando l'editor delle differenze con le modifiche in arrivo (cloud) sul lato sinistro e le modifiche locali sul lato destro. È possibile risolvere i conflitti modificando nell'editor di destra e unire le modifiche utilizzando le azioni fornite nell'editor.

Funzionalità supportate

Attualmente le impostazioni, le scorciatoie da tastiera, le estensioni e la lingua di visualizzazione sono sincronizzate, ma abbiamo in programma di aggiungerne altre. È possibile rivedere il nostro elenco di funzioni di sincronizzazione delle impostazioni proposte .

Le impostazioni della macchina (con ambiti macchina o sovrascrivibili dalla macchina) non sono sincronizzate per impostazione predefinita. È inoltre possibile aggiungere o rimuovere le impostazioni desiderate da questo elenco dall'editor delle impostazioni o utilizzando l'impostazione sync.ignoredSettings.

Le scorciatoie da tastiera sono sincronizzate per piattaforma per impostazione predefinita. Se le scorciatoie da tastiera sono indipendenti dalla piattaforma, puoi sincronizzarle tra le piattaforme disabilitando l'impostazione sync.keybindingsPerPlatform.

Tutte le estensioni integrate e installate vengono sincronizzate insieme al loro stato di abilitazione globale. È possibile saltare la sincronizzazione di un'estensione, dalla visualizzazione delle estensioni o utilizzando l'impostazione sync.ignoredExtensions.

Impostazioni L'attività di sincronizzazione può essere monitorata nella visualizzazione dell'output del registro (sincronizzazione) . Viene eseguito il backup di tutte le personalizzazioni locali per gli ultimi 30 giorni (almeno 10) nel disco ogni volta che vengono modificate durante la sincronizzazione. È possibile utilizzare il comando Sync: Open Local Backups Folder per andare alla posizione dei backup e conservare le vecchie personalizzazioni.

(e alcune gif al collegamento della nota di rilascio)

Nota che funziona tramite il tuo account Microsoft , non GitHub (fino alla v1.45 - vedi sopra):

Impostazioni Sincronizzazione utilizza un account Microsoft per memorizzare le personalizzazioni di VS Code per la sincronizzazione e quindi è necessario un account per utilizzarlo. Fare riferimento a documentazione di sincronizzazione delle impostazioni per ulteriori informazioni e assistenza.

Vedi anche https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md per ulteriori informazioni su come configurare settings sync.


E un collegamento alle informazioni sulla v1.44 sulla sincronizzazione delle impostazioni: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


Grazie Marco. Non vedo l'ora di provarlo quando arriverà.
Mark Whitaker

1
La domanda da un milione di dollari è quando sarà stabile. 1.46 è disponibile ma ancora solo per addetti ai lavori :(
bviktor

6

L'ho fatto sul mio Mac copiando VS Code settings.jsonsul mio disco iCloud per il backup automatico, quindi creando un collegamento simbolico.

  1. Copia settings.jsondalla directory delle impostazioni del codice VS $HOME/Library/Application Support/Code/User/settings.json nella posizione di backup
  2. Eseguire il backup del vecchio settings.jsonrinominando insettings-old.json
  3. Nel terminale, cdin VS code setting dir:cd ~/Library/Application\ Support/Code/User/
  4. Crea il link simbolico al tuo file di backup usando command ln -sf path/to/backup/settings.json settings.json. Dal momento che ho eseguito il backup del mio su iCloud e ho rinominato il file in vscode.settings.json, il mio comando era simile a questo:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Verifica di poter aprire le preferenze utente in VS Code

Per utilizzare il backup su un Mac diverso, basta ripetere i passaggi 2-5.

L'ho fatto anche per le estensioni ...

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

@frankhommers Sembra che questo possono essere replicati utilizzando il comando link simbolico della finestra: mklink. Puoi utilizzare DropBox, OneDrive o un altro servizio cloud invece di iCloud Drive
Chris Feist

4

Inserisco il mio settings.jsonin un file di configurazione che sincronizzo con git (sebbene Dropbox funzioni anche) e utilizzo uno script Python per collegarlo simbolicamente alla posizione corretta per ciascuna piattaforma, quindi aggiornarlo dal menu delle impostazioni si sincronizza su tutte le mie macchine. La creazione di collegamenti simbolici richiede privilegi di amministratore su 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')

3

Impostazioni utente

Attualmente non è disponibile alcuna sincronizzazione automatica per le impostazioni utente in Visual Studio Code. Su Windows le impostazioni utente si trovano in%APPDATA%\Code\User\settings.json . Puoi salvare una copia di quel file su OneDrive o Dropbox e spostarlo su tutti i tuoi computer nella cartella delle impostazioni utente. Ma questo include ancora passaggi manuali su ogni macchina ogni volta che si modifica la configurazione.

Puoi suggerire una sincronizzazione automatica delle impostazioni qui: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Impostazioni dell'area di lavoro

Aggiungi la .vscodecartella del tuo spazio di lavoro al sistema di controllo della versione (Git / SVN ecc.). Quando esegui il checkout del codice dal repository, otterrai automaticamente le impostazioni dell'area di lavoro di VS Code.


Grazie per aver risposto ma hai frainteso la domanda. Chiedo le impostazioni dell'utente, non le impostazioni del progetto. Ho aggiunto qualche chiarimento alla domanda.
Mark Whitaker

1
Grazie, ho migliorato la risposta
Wosi

3

Un altro modo per farlo sarebbe collegare i tuoi file, che possono anche essere archiviati in un repository su GitHub. Ad esempio, su Mac OS diciamo che hai una directory chiamata ~/dev/dotfiles/vscode. Diciamo che ci sono due file lì chiamati settings.jsone keybindings.json. Puoi collegare questi file con:

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

Se stai usando Windows o Linux, il percorso alle rispettive directory delle impostazioni può essere trovato su https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations


2

Questa è finalmente una funzionalità incorporata: vedi Impostazioni di sincronizzazione in Visual Studio Code .

Nota : la sincronizzazione è attualmente in anteprima a partire dalla versione 1.46 di maggio 2020.


2
Ancora in anteprima però
Frank Fu

@FrankFu Bene, ma questa è una grande funzionalità e stanno facendo progressi: sei in grado di sincronizzarti con l'account microsoft / github e c'è un'API proposta per l'accesso all'account ecc. (Che sarà utile ad altre estensioni come noi github btw)
Chayim Friedman

@ChayimFriedman, oh 100%, non avevo intenzione di lamentarmi in alcun modo. Sentivo che doveva essere chiarito per evitare di dare alle persone false speranze poiché la risposta originale non modificata non diceva diversamente.
Frank Fu

@FrankFu Oh, bene. Scusate.
Chayim Friedman

-7

Usa le impostazioni dell'area di lavoro invece delle impostazioni dell'utente.


Non è un suggerimento costruttivo poiché le impostazioni dell'area di lavoro non si sincronizzano tra progetti o sistemi.
Itanex

2
Dare @ColacX il beneficio del dubbio, sto assumendo cosa voleva dire era che se si utilizzano delle aree di lavoro-impostazioni, è possibile salvare in git / svn / ecc, che fa in realtà sincronia loro in un certo senso.
Joshua Sleeper
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.