Чи є можливість синхронізувати налаштування коду Visual Studio між екземплярами?


123

Мені б хотілося якось синхронізувати мої налаштування користувачів VS Code (Файл> Налаштування> Налаштування користувача) до хмари, щоб я міг легко поділитися ними між кількома установками, як у Windows 10 та Visual Studio.

Чи існує підтримуваний спосіб зробити це? Пряма підтримка в Code була б чудовою, але в іншому випадку можливість перенести моє розташування settings.json у папку Dropbox або OneDrive також буде працювати.

Я спеціально шукаю спосіб зробити це автоматично і безшумно. Експорт / імпорт вручну занадто громіздкий і це не те, що я шукаю.


Оновлення: тут є запит на функцію . Якщо ви хочете цю функцію, будь ласка, дайте їй великі пальці.


2
Дуже простим способом було б, якщо ви використовуєте програму резервного копіювання та синхронізації Google і просто додаєте до резервної копії папки C: \ Користувачі \ [YOUR_USER] \ AppData \ Роумінг \ Код \ Користувач.
vinsa

Відповіді:


126

Я розробив розширення, яке буде синхронізувати всі ваші налаштування коду Visual Studio у кількох випадках.

Ключові риси

  1. Використовуйте маркер свого облікового запису GitHub.
  2. Легко завантажувати та завантажувати одним клацанням миші.
  3. Зберігає всі налаштування та фрагменти файлів.
  4. Ключ завантаження: Shift + Alt + u
  5. Ключ завантаження: Shift + Alt + d
  6. Введіть синхронізацію, щоб переглянути всі параметри синхронізації

Синхронізація

  • Файл налаштувань
  • Файл клавіатури
  • Запустити файл
  • Папка з фрагментами
  • Розширення VSCode

Детальне джерело документації

VSCode - налаштування синхронізації повідомлення в блозі

Завантажте тут: Код VS - Синхронізація налаштувань - Розширення


1
Спасибі Шан Хан - це розширення є досить корисним - у мене є набір віртуальних серверів, де мені потрібно синхронізувати настройки VS-коду та прив’язки ключів між екземплярами, і це розширення працює точно так, як рекламується.
Bill_Stewart

Спробував це, але успіху не було. Коли я активую його за допомогою Alt-Shift U, я отримую помилку: extensionHost.ts: 293 [Хост розширення] {"message": "Не знайдено", "документація_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Exroror Logged In Console (меню довідки> Увімкнути Інструменти для розробників). Ви можете відкрити проблему, скориставшись функцією "Синхронізувати: відкрити випуск", скориставшись командою попереднього налаштування.e.doShow @ messageService.ts: 126
Робін Коу

4
Я хотів би прийняти цю відповідь, але я спробував цей інструмент і виявив його ненадійним і помилковим. Дуже простий сценарій: VS-код встановлений на двох машинах, і я намагався отримати як автоматичне завантаження / завантаження параметрів, так і зміни розширень. Я врешті-решт відмовився після того, як не зміг змусити його працювати. Отже, чудова ідея, але потрібно більше працювати.
Марк Уітакер

2
У мене неоднозначні почуття, коли я розміщую свої налаштування на (напів) публічну історію Деякі розширення зберігають у своїх налаштуваннях чутливі дані (такі як вхід у базу даних, вхід SFTP). Чи важко буде натомість переспрямувати сховище на "локальний" файл, синхронізований із зовнішнім інструментом, таким як Syncthing чи Resilio Sync?
korkman

1
@korkman для вирішення цих ситуацій, налаштування Sync дозволить синхронізувати локальні файли та сховища git, як gist, у майбутніх оновленнях.
Шан Хан

21

Ви можете зробити міцне посилання з каталогу, що містить налаштування користувача, до каталогу синхронізації програм, таких як Dropbox або OneDrive.

Наприклад, у Windows налаштування користувача знаходяться у %APPDATA%\Code\User, щоб ви могли вводити:

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

на своїх комп’ютерах з кодом Visual Studio для досягнення синхронізації.

Потім на іншому комп’ютері ви можете видалити %APPDATA%\Code\Userпапку та ввести:

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

для отримання синхронізованих налаштувань.


Привіт ! Я не розумію, чому вам потрібно було б зробити посилання ІЗ каталогу синхронізації ДО папки% appdata%. Перемістіть один раз усі фактичні налаштування VS в каталозі синхронізації (DropBox, OneDrive, будь-який інший ...), а потім на кожному комп’ютері, який ви хочете синхронізувати налаштування, видаліть %APPDATA%\Code\Userі створіть посилання за допомогоюmklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla

2
Тому що ви не зможете створити посилання, якщо вказане ім’я вже існує, тоді як каталог синхронізації буде там, коли налаштування будуть завантажені.
Містер Рій

Це не вдається для мережевих накопичувачів із повідомленням"Local NTFS volumes are required to complete the operation."
Amit Beckenstein

11

Ага, ви можете спробувати моє розширення VSCode: Синхронізація .

Сподіваючись, вам сподобається. :)


Короткий посібник

  1. Встановити синхронізацію :

  2. Отримайте своє GitHub Personal Access Token :

    1. Увійдіть на свою сторінку GitHub Settings .

      увійдіть на сторінку налаштувань

    2. Виберіть Personal access tokensвкладку та натисніть Generate new token.

      генерувати новий маркер

    3. Виберіть gistі натисніть Generate token.

      дозволити суть

    4. Скопіюйте та створіть резервну копію маркера.

      копіювання та резервне маркування

  3. Синхронізуйте налаштування:

    Syncingзапитає необхідну інформацію for the first timeта save for later use.

    1. Завантажити :

      1. Введіть uploadв VSCode Command Palette.

      2. Введіть своє GitHub Personal Access Token.

      3. Введіть своє Gist ID(або leave it blankстворити автоматично).

      4. Готово!

      5. Після завантаження ви можете знайти свої налаштування та відповідні Gist IDу своєму GitHub Gist .

        налаштування та суть

    2. Завантажити :

      1. Введіть downloadв VSCode Command Palette.

      2. Введіть свій GitHub Personal Access Token(абоleave it blank якщо ви хочете завантажити з загальнодоступного Gist)

      3. Введіть своє Gist ID(або а public Gist ID).

      4. Готово!


Гм. Це, здається, не синхронізує розширення, які я встановив у довідковому коді встановлення VS. Я щось пропускаю чи ця функція виходить за рамки цього інструменту?
SeaDude

EDIT: Мені довелося запустити Syncing: Download Settings2x, щоб отримати розширення для завантаження. Ніякого великого, просто головою вгору. Дякуємо за інструмент вбивці!
SeaDude

1
У мене неоднозначні почуття, коли я розміщую свої налаштування на (напів) публічну історію. Деякі розширення зберігають у своїх налаштуваннях чутливі дані (такі як вхід у базу даних, вхід SFTP). Чи важко буде натомість переспрямувати сховище на "локальний" файл, синхронізований із зовнішнім інструментом, таким як Syncthing чи Resilio Sync?
korkman

@korkman Експорт до локального сховища ще не підтримується, але може бути краще підтримати синхронізацію файлів.
Nonoroazoro

9

У версії v1.45 схоже, що ви зможете увійти до вбудованої синхронізації налаштувань за допомогою github, див. Https://github.com/microsoft/vscode/isissue/95160#event-3266867554 (Підтримка входу GitHub у синхронізацію налаштувань ). І примітки до випуску v1.45 .


У версії v1.43 як функція попереднього перегляду (так у програмі Insideers 'Build) є синхронізація налаштувань . Дивіться https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Параметри синхронізації

Останні кілька місяців ми працювали над підтримкою синхронізації налаштувань, розширень та комбінацій клавіш VS-коду на всіх машинах (популярний запит на функцію №2743 ). На цьому рубежі ми раді повідомити, що ця функція готова до попереднього перегляду з наступного індесатора 1.44.0 випуску. Тепер ви можете синхронізувати свої налаштування у всіх встановлених кодах VS на всіх ваших машинах. Ви також можете завантажувати код VS за допомогою персональних налаштувань на свіжій машині з мінімальними зусиллями. Наступне відео демонструє це:

Підтримує виявлення конфліктів у налаштуваннях та вкладеннях клавіш під час синхронізації. Конфлікти відображаються за допомогою редактора diff із вхідними (хмарними) змінами з лівого боку та локальними змінами в правій частині. Ви можете вирішити конфлікти, відредагувавши в правому редакторі та об'єднавши зміни, використовуючи дії, передбачені в редакторі.

Підтримувані функції

В даний час налаштування, комбінації клавіш, розширення та мова відображення синхронізовані, але ми плануємо додати ще. Ви можете переглянути наш список запропонованих функцій налаштування синхронізації .

Налаштування машини (за допомогою машинного чи машинного діапазону) за замовчуванням не синхронізуються. Ви також можете додати або видалити налаштування, які ви хочете, до цього списку з редактора налаштувань або скориставшись налаштуваннями sync.ignoredSettings.

Комбінації клавіш за замовчуванням синхронізуються на кожній платформі. Якщо клавіатурні скорочення є агностичними, ви можете синхронізувати їх на різних платформах, відключивши налаштування sync.keybindingsPerPlatform.

Усі вбудовані та встановлені розширення синхронізуються разом із загальним станом включення. Ви можете пропустити синхронізацію розширення з подання розширень або за допомогою налаштування sync.ignoredExtensions.

Налаштування Синхронізацію можна відстежувати у вихідному вікні Журнал (Синхронізація) . Усі локальні налаштування створюються резервними копіями на диску протягом останніх 30 днів (принаймні 10) щоразу, коли вони змінюються під час синхронізації. Ви можете скористатися командою Sync: Відкрити папку Local Backups, щоб перейти до місця резервного копіювання та зберегти свої старі налаштування.

(та кілька gif-файлів на посиланні на замітку до випуску)

Зауважте, що ви працюєте через ваш обліковий запис Microsoft , а не github (до v1.45 - див. Вгорі):

Налаштування Sync використовує обліковий запис Microsoft для зберігання налаштувань коду VS для синхронізації, і тому вам знадобиться обліковий запис для цього. Для отримання додаткової інформації та довідки зверніться до документації налаштувань синхронізації .

Також див. Https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md для отримання додаткових відомостей про налаштування settings sync.


І посилання на v1.44 інформацію про налаштування синхронізації: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


Спасибі Марку. Я буду радий спробувати це, коли воно прибуде.
Марк Уітакер

1
Питання на мільйон доларів - коли це стане стабільним. 1,46 немає, але все одно лише інсайдери :(
bviktor

6

Я зробив це на своєму Mac, скопіювавши код VS settings.jsonна мій диск iCloud для автоматичного резервного копіювання, а потім створивши символічне посилання.

  1. Скопіюйте settings.jsonз каталогу налаштувань коду VS $HOME/Library/Application Support/Code/User/settings.json у ваше резервне місце
  2. Створіть резервну копію старої settings.json, перейменувавши її наsettings-old.json
  3. У терміналі cdдо режиму встановлення коду VS:cd ~/Library/Application\ Support/Code/User/
  4. Створіть символьне посилання на резервний файл за допомогою команди ln -sf path/to/backup/settings.json settings.json. Оскільки я створив резервну копію в iCloud і перейменував файл vscode.settings.json, моя команда виглядала так:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Переконайтеся, що ви можете відкрити налаштування користувачів у коді VS

Щоб використовувати резервну копію на іншому Mac, просто повторіть кроки 2-5.

Я також робив це для розширень ...

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 Схоже , що це може бути відтворено з допомогою символьного посилання команди вікна: mklink. Ви можете використовувати DropBox, OneDrive або інший хмарний сервіс замість iCloud диска
Chris Feist

4

Я розміщую свій settings.jsonфайл конфігурації, який я синхронізую з git (хоча Dropbox також працює) і використовую скрипт Python, щоб символізувати його до потрібного місця для кожної платформи, тому оновлення його з меню налаштувань синхронізується на моїх машинах. Для створення символьних посилань потрібні права адміністратора в 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

Налаштування користувача

Наразі в Visual Studio Code немає автоматичної синхронізації для налаштувань користувача. У Windows налаштування користувача знаходяться в %APPDATA%\Code\User\settings.json. Ви можете зберегти копію цього файлу в OneDrive або Dropbox і перемістити його на всіх своїх машинах у папку з налаштуваннями користувачів. Але це все ж включає ручні дії на кожній машині щоразу, коли ви змінюєте конфігурацію.

Ви можете запропонувати автоматичну синхронізацію налаштувань тут: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Налаштування робочої області

Додайте .vscodeпапку робочої області до системи контролю версій (Git / SVN тощо). Під час отримання коду з сховища ви автоматично отримаєте налаштування робочої області коду VS.


Дякуємо за відповідь, але ви неправильно зрозуміли питання. Я запитую про налаштування користувачів, а не про налаштування проекту. Я додав дещо уточнення до питання.
Марк Уітакер

1
Дякую, я покращив відповідь
Восі

3

Інший спосіб зробити це - м'яке посилання ваших файлів, які також можна зберігати у сховищі на GitHub. Наприклад, у Mac OS, скажімо, у вас є названий каталог ~/dev/dotfiles/vscode. Скажімо, там є два файли, що називаються settings.jsonта keybindings.json. Ви можете м'яко зв’язати ці файли з:

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

Якщо ви використовуєте Windows або Linux, шлях до відповідних каталогів налаштувань можна знайти за адресою https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations


2

Це нарешті вбудована функція: див. Синхронізацію налаштувань у коді Visual Studio .

Примітка . Синхронізація наразі переглядається з версії 1.46 травня 2020 року.


2
Все ще в попередньому перегляді
Франк Фу

@FrankFu Ну, але це велика особливість, і вони досягають прогресу: ви можете синхронізуватися з обліковим записом microsoft / github, і є запропонований api для входу в обліковий запис і т.д. (що буде корисним для інших розширень, таких як нас github btw)
Хаїм Фрідман

@ChayimFriedman, о 100%, жодним чином не було наміру скаржитися. Я відчував, що його потрібно прояснити, щоб не давати людям хибної надії, оскільки в оригінальній неопрацьованій відповіді не було сказано іншого.
Франк Фу

@FrankFu О, добре. Вибачте.
Хаїм Фрідман

-7

Використовуйте налаштування робочої області замість налаштувань користувача.


Це не конструктивна пропозиція, оскільки налаштування робочої області не синхронізуються між проектами чи системами.
Ітанекс

2
Надання @ColacX на користь сумнівів, я припускаю , що мав в виду , що при використанні робочого простору-настройки, ви можете зберегти їх в мерзотник / SVN / і т.д., що робить насправді синхронізації їх в деякому сенсі.
Джошуа Сон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.