Czy istnieje sposób na zsynchronizowanie ustawień programu Visual Studio Code między wystąpieniami?

123

Chciałbym móc w jakiś sposób zsynchronizować moje ustawienia użytkownika VS Code (Plik> Preferencje> Ustawienia użytkownika) z chmurą, aby móc łatwo udostępniać je między wieloma instalacjami, na przykład w systemie Windows 10 i Visual Studio.

Czy istnieje obsługiwany sposób na zrobienie tego? Bezpośrednie wsparcie w kodzie byłoby świetne, ale poza tym możliwość przeniesienia mojej lokalizacji settings.json do folderu Dropbox lub OneDrive również działałaby.

Szukam konkretnie sposobu, aby zrobić to automatycznie i po cichu. Ręczne eksportowanie / importowanie jest zbyt kłopotliwe i nie jest tym, czego szukam.


Aktualizacja: tutaj jest prośba o funkcję . Jeśli chcesz tę funkcję, pokaż jej kciuki w górę.

Mark Whitaker
źródło
2
Bardzo prostym sposobem byłoby użycie programu Kopia zapasowa i synchronizacja Google i dodanie kopii zapasowej folderu C: \ Users \ [TWÓJ_UŻYTKOWNIK] \ AppData \ Roaming \ Code \ User.
vinsa

Odpowiedzi:

126

Opracowałem rozszerzenie, które zsynchronizuje wszystkie ustawienia Visual Studio Code w wielu wystąpieniach.

Kluczowe cechy

  1. Użyj tokena konta GitHub.
  2. Łatwe przesyłanie i pobieranie jednym kliknięciem.
  3. Zapisuje wszystkie ustawienia i pliki skrawków.
  4. Klawisz przesyłania: Shift + Alt + u
  5. Klawisz pobierania: Shift + Alt + d
  6. Wpisz Sync In Order, aby wyświetlić wszystkie opcje synchronizacji

Synchronizacja

  • Plik ustawień
  • Plik klucza
  • Uruchom plik
  • Folder fragmentów
  • Rozszerzenia VSCode

Źródło szczegółowej dokumentacji

VSCode - wpis na blogu synchronizacji ustawień

Pobierz tutaj: VS Code - synchronizacja ustawień - rozszerzenie

Shan Khan
źródło
1
Dzięki Shan Khan - to rozszerzenie jest całkiem przydatne - mam zestaw serwerów wirtualnych, na których muszę zsynchronizować ustawienia VS Code i powiązania klawiszy między instancjami, a to rozszerzenie działa dokładnie tak, jak w reklamie.
Bill_Stewart,
Próbowałem, ale bez sukcesu. Kiedy aktywuję go za pomocą Alt-Shift U, pojawia się błąd: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Error Zalogowano w konsoli (menu Pomoc> Przełącz narzędzia programistyczne). Możesz otworzyć problem za pomocą polecenia „Sync: Open Issue” z polecenia ustawień zaawansowanych. E.doShow @ messageService.ts: 126
Robin Coe
4
Chciałbym zaakceptować tę odpowiedź, ale wypróbowałem to narzędzie i okazało się, że jest niewiarygodne i zawiera błędy. Bardzo prosty scenariusz: program VS Code został zainstalowany na dwóch komputerach i próbowałem uzyskać zarówno ustawienia automatycznego przesyłania / pobierania, jak i zmiany rozszerzeń. W końcu zrezygnowałem, gdy nie udało mi się zmusić go do pracy. Świetny pomysł, ale wymaga więcej pracy.
Mark Whitaker,
2
Mam mieszane uczucia, publikując moje ustawienia w (pół) publicznym Gist. Niektóre rozszerzenia przechowują poufne dane (takie jak dane logowania do bazy danych, dane logowania SFTP) w swoich ustawieniach. Czy trudno byłoby zamiast tego przekierować pamięć do pliku „lokalnego”, zsynchronizowanego za pomocą narzędzia zewnętrznego, takiego jak Syncthing lub Resilio Sync?
korkman
1
@korkman do obsługi takich sytuacji, synchronizacja ustawień pozwoli na synchronizację za pośrednictwem lokalnych plików i repozytoriów git, takich jak gist w przyszłych aktualizacjach.
Shan Khan
21

Możesz utworzyć twarde łącze z katalogu zawierającego ustawienia użytkownika do katalogu synchronizacji aplikacji, takich jak Dropbox lub OneDrive.

Na przykład w systemie Windows ustawienia użytkownika znajdują się w %APPDATA%\Code\User, więc możesz wpisać:

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

na komputerach z programem Visual Studio Code, aby przeprowadzić synchronizację.

Następnie na innym komputerze możesz usunąć %APPDATA%\Code\Userfolder i wpisać:

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

aby pobrać zsynchronizowane ustawienia.

Panie Ree
źródło
Cześć ! Nie rozumiem, dlaczego musisz utworzyć łącze Z katalogu synchronizacji DO folderu% appdata%. Przenieś raz na zawsze wszystkie swoje aktualne ustawienia VS w katalogu synchronizacji (DropBox, OneDrive, cokolwiek ...), a następnie na każdym komputerze, na którym chcesz zsynchronizować ustawienia, usuń %APPDATA%\Code\Useri utwórz łącze za pomocąmklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla
2
Ponieważ nie uda się utworzyć łącza, jeśli podana nazwa już istnieje, podczas gdy katalog synchronizacji będzie tam po pobraniu ustawień.
Pan Ree
To kończy się niepowodzeniem w przypadku dysków sieciowych z komunikatem"Local NTFS volumes are required to complete the operation."
Amit Beckenstein
11

Aha, możesz wypróbować moje rozszerzenie VSCode: Synchronizacja .

Mam nadzieję, że ci się spodoba. :)


Krótki przewodnik

  1. Zainstaluj synchronizację :

  2. Zdobądź własne GitHub Personal Access Token:

    1. Zaloguj się do swojej strony GitHub Settings .

      zaloguj się do strony ustawień

    2. Wybierz Personal access tokenskartę i kliknij Generate new token.

      wygeneruj nowy token

    3. Wybierz gisti kliknij Generate token.

      pozwól na sedno

    4. Skopiuj i wykonaj kopię zapasową swojego tokena.

      kopia i kopia zapasowa tokena

  3. Zsynchronizuj swoje ustawienia:

    Syncingpoprosi o niezbędne informacje for the first timei save for later use.

    1. Prześlij :

      1. Wpisz uploadw VSCode Command Palette.

      2. Wpisz swój GitHub Personal Access Token.

      3. Wprowadź swój Gist ID(lub, leave it blankaby utworzyć automatycznie).

      4. Gotowe!

      5. Po przesłaniu możesz znaleźć swoje ustawienia i odpowiadające im ustawienia Gist IDw swoim GitHub Gist .

        ustawienia i istota

    2. Pobierz :

      1. Wpisz downloadw VSCode Command Palette.

      2. Wpisz swój GitHub Personal Access Token(lub leave it blankjeśli chcesz pobrać z publicznego Gist)

      3. Wpisz swój Gist ID(lub public Gist ID).

      4. Gotowe!

Nonoroazoro
źródło
Hm. Wydaje się, że nie synchronizuje to rozszerzeń, które zainstalowałem w instalacji referencyjnej VS Code. Czy czegoś mi brakuje, czy ta funkcja wykracza poza zakres tego narzędzia?
SeaDude
EDYCJA: Musiałem uruchomić Syncing: Download Settings2x, aby pobrać rozszerzenia. No biggie, tylko heads up. Dzięki za zabójcze narzędzie!
SeaDude
1
Mam mieszane uczucia, publikując moje ustawienia w (pół) publicznym Gist. Niektóre rozszerzenia przechowują poufne dane (takie jak dane logowania do bazy danych, dane logowania SFTP) w swoich ustawieniach. Czy trudno byłoby zamiast tego przekierować pamięć do pliku „lokalnego”, zsynchronizowanego za pomocą narzędzia zewnętrznego, takiego jak Syncthing lub Resilio Sync?
korkman
@korkman Eksportowanie do pamięci lokalnej nie jest jeszcze obsługiwane, ale może być lepszym rozwiązaniem w przypadku obsługi synchronizacji plików.
Nonoroazoro
9

W wersji 1.48:

Podgląd funkcji

Funkcje podglądu nie są gotowe do wydania, ale są wystarczająco funkcjonalne, aby można było z nich korzystać. Czekamy na Twoje wczesne opinie, gdy są one w trakcie opracowywania.

Synchronizacja ustawień

Synchronizacja ustawień jest teraz dostępna do podglądu w stabilnej wersji 🎉. Więcej informacji i najczęściej zadawanych pytań można znaleźć w instrukcji obsługi .

Ta funkcja nosi teraz nazwę Synchronizacja ustawień również w produkcie. Nazwy wszystkich odniesień i ustawień zostały zmienione w celu wyrównania.

Zobacz także „Ręczne scalanie” i synchronizację między Insiderami i Stabilną na https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync


Wygląda na to, że w wersji 1.45 będziesz mógł zalogować się do wbudowanej synchronizacji ustawień przez github, zobacz https://github.com/microsoft/vscode/issues/95160#event-3266867554 (obsługa logowania GitHub w synchronizacji ustawień ). Oraz informacje o wersji 1.45 .


W wersji 1.43 jako funkcja podglądu (a więc tylko w kompilacji Insiderów) jest synchronizacja ustawień . Zobacz https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Synchronizacja ustawień

Przez ostatnie kilka miesięcy pracowaliśmy nad obsługą synchronizacji ustawień VS Code, rozszerzeń i skrótów klawiaturowych na różnych komputerach (popularne żądanie funkcji nr 2743 ). W tym kamieniu milowym z przyjemnością ogłaszamy, że ta funkcja jest gotowa do podglądu od naszej następnej wersji 1.44.0-insider . Możesz teraz zsynchronizować swoje dostosowania we wszystkich instalacjach VS Code na wszystkich swoich komputerach. Możesz także załadować VS Code z osobistymi dostosowaniami na nowej maszynie przy minimalnym wysiłku. Poniższy film pokazuje to:

Obsługuje wykrywanie konfliktów w ustawieniach i przypisaniach klawiszy podczas synchronizacji. Konflikty są wyświetlane za pomocą edytora różnic z nadchodzącymi (chmurowymi) zmianami po lewej stronie i lokalnymi zmianami po prawej stronie. Możesz rozwiązać konflikty, edytując w edytorze po prawej stronie i scalając zmiany, korzystając z działań udostępnionych w edytorze.

Obsługiwane funkcje

Obecnie ustawienia, skróty klawiaturowe, rozszerzenia i język wyświetlania są zsynchronizowane, ale planujemy dodać więcej. Możesz przejrzeć naszą listę proponowanych funkcji synchronizacji ustawień .

Ustawienia maszyny (z zakresami maszynowymi lub maszynowymi) nie są domyślnie synchronizowane. Możesz także dodać lub usunąć ustawienia, które chcesz, z tej listy z edytora ustawień lub używając ustawienia sync.ignoredSettings.

Skróty klawiaturowe są domyślnie synchronizowane dla każdej platformy. Jeśli Twoje skróty klawiaturowe są niezależne od platformy, możesz zsynchronizować je między platformami, wyłączając to ustawienie sync.keybindingsPerPlatform.

Wszystkie wbudowane i zainstalowane rozszerzenia są zsynchronizowane wraz z ich globalnym stanem włączenia. Możesz pominąć synchronizację rozszerzenia z widoku rozszerzeń lub korzystając z ustawienia sync.ignoredExtensions.

Aktywność synchronizacji ustawień można monitorować w widoku wyjściowym Dziennik (synchronizacja) . Kopie zapasowe wszystkich lokalnych dostosowań są tworzone na dysku z ostatnich 30 dni (co najmniej 10), gdy zostaną zmienione podczas synchronizacji. Możesz użyć polecenia Synchronizuj: Otwórz lokalny folder kopii zapasowych, aby przejść do lokalizacji kopii zapasowych i zachować stare dostosowania.

(i kilka gifów pod linkiem do informacji o wersji)

Zauważ, że działa za pośrednictwem konta Microsoft , a nie github (do wersji 1.45 - patrz u góry):

Synchronizacja ustawień używa konta Microsoft do przechowywania dostosowań VS Code na potrzeby synchronizacji, dlatego do korzystania z niego będzie potrzebne konto. Więcej informacji i pomoc można znaleźć w dokumentacji synchronizacji ustawień .

Zobacz też https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md, aby uzyskać więcej informacji na temat konfiguracji settings sync.


I łącze do informacji o wersji 1.44 na temat synchronizacji ustawień: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync

znak
źródło
Dzięki Mark. Z chęcią spróbuję tego, kiedy nadejdzie.
Mark Whitaker
1
Pytanie za milion dolarów brzmi, kiedy sytuacja będzie stabilna.
Wersja
6

Zrobiłem to na moim Macu, kopiując VS Code na settings.jsonmój dysk iCloud w celu automatycznego tworzenia kopii zapasowych, a następnie tworząc łącze symboliczne.

  1. Skopiuj settings.jsonz katalogu ustawień kodu VS $HOME/Library/Application Support/Code/User/settings.json do lokalizacji kopii zapasowej
  2. Utwórz kopię zapasową starego settings.json, zmieniając nazwę nasettings-old.json
  3. W terminalu cddo katalogu ustawień kodu VS:cd ~/Library/Application\ Support/Code/User/
  4. Utwórz łącze symboliczne do pliku z kopii zapasowej za pomocą polecenia ln -sf path/to/backup/settings.json settings.json. Ponieważ wykonałem kopię zapasową w iCloud i zmieniłem nazwę pliku na vscode.settings.json, moje polecenie wyglądało następująco:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Sprawdź, czy możesz otworzyć preferencje użytkownika w VS Code

Aby użyć kopii zapasowej na innym komputerze Mac, powtórz kroki 2–5.

Zrobiłem to również dla rozszerzeń ...

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
źródło
@frankhommers wygląda to może być powielana używając polecenia symlink okna za: mklink. Możesz użyć DropBox, OneDrive lub innej usługi w chmurze zamiast dysku iCloud
Chris Feist
4

Umieszczam mój settings.jsonplik konfiguracyjny w pliku konfiguracyjnym, który synchronizuję z gitem (chociaż Dropbox również działałby) i używam skryptu Python, aby połączyć go symbolicznie z odpowiednią lokalizacją dla każdej platformy, więc aktualizowanie go z menu ustawień synchronizuje się na moich maszynach. Tworzenie łączy symbolicznych wymaga uprawnień administratora w systemie 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
źródło
3

Ustawienia użytkownika

Obecnie nie ma automatycznej synchronizacji ustawień użytkownika dostępnych w programie Visual Studio Code. W systemie Windows ustawienia użytkownika znajdują się w %APPDATA%\Code\User\settings.json. Możesz zapisać kopię tego pliku w OneDrive lub Dropbox i przenieść ją na wszystkie swoje komputery do folderu ustawień użytkownika. Ale nadal obejmuje to ręczne kroki na każdym komputerze za każdym razem, gdy zmieniasz konfigurację.

Możesz zasugerować automatyczną synchronizację ustawień tutaj: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Ustawienia obszaru roboczego

Dodaj .vscodefolder swojego obszaru roboczego do systemu kontroli wersji (Git / SVN itp.). Po wyrejestrowaniu kodu z repozytorium automatycznie uzyskasz ustawienia obszaru roboczego VS Code.

Wosi
źródło
Dziękuję za odpowiedź, ale źle zrozumiałeś pytanie. Pytam o ustawienia użytkownika, a nie ustawienia projektu. Dodałem wyjaśnienie do pytania.
Mark Whitaker,
1
Dzięki, poprawiłem odpowiedź
Wosi
3

Innym sposobem na zrobienie tego byłoby miękkie linkowanie plików, które można również przechowywać w repozytorium na GitHub. Na przykład w systemie Mac OS powiedzmy, że masz katalog o nazwie ~/dev/dotfiles/vscode. Powiedzmy, że są tam dwa pliki o nazwie settings.jsoni keybindings.json. Możesz miękko połączyć te pliki z:

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

Jeśli używasz systemu Windows lub Linux, ścieżkę do odpowiednich katalogów ustawień można znaleźć pod adresem https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations

David
źródło
2

Jest to wreszcie funkcja wbudowana: zobacz synchronizację ustawień w programie Visual Studio Code .

Uwaga : synchronizacja jest obecnie w wersji zapoznawczej od wersji 1.46 z maja 2020 r.

Mark Whitaker
źródło
2
Jednak wciąż w wersji zapoznawczej
Frank Fu
@FrankFu Cóż, ale to duża funkcja i robią postępy: możesz zsynchronizować się z kontem microsoft / github i jest proponowany interfejs API do logowania się na konto itp. (Co będzie przydatne w innych rozszerzeniach, takich jak my github btw)
Chayim Friedman
@ChayimFriedman, o 100%, w żaden sposób nie miałem zamiaru narzekać. Czułem, że trzeba to wyjaśnić, aby nie dawać ludziom fałszywej nadziei, ponieważ pierwotna, nieedytowana odpowiedź nie stanowiła inaczej.
Frank Fu
@FrankFu Och, dobrze. Przepraszam.
Chayim Friedman
-7

Użyj ustawień obszaru roboczego zamiast ustawień użytkownika.

ColacX
źródło
Nie jest to konstruktywna sugestia, ponieważ ustawienia obszaru roboczego nie są synchronizowane między projektem lub systemami.
Itanex
2
Nadanie @ColacX korzyści z wątpliwości, jestem przy założeniu, co miało, że jeśli używasz workspace-ustawienia, można je zapisać w git / svn / etc, który robi w rzeczywistości synchronizacja nich w pewnym sensie.
Joshua Sleeper