Есть ли способ синхронизировать мои настройки кода Visual Studio между экземплярами?

123

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

Есть ли поддерживаемый способ сделать это? Прямая поддержка в коде была бы замечательной, но в противном случае возможность переместить мое местоположение settings.json в папку Dropbox или OneDrive тоже подойдет.

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


Обновление: здесь есть запрос функции . Если вам нужна эта функция, пожалуйста, оцените ее.

Марк Уитакер
источник
2
Самый простой способ - использовать программу Google Backup and Sync и просто добавить в резервную копию папку C: \ Users \ [ВАШ_ПОЛЬЗОВАТЕЛЬ] \ AppData \ Roaming \ Code \ User.
vinsa

Ответы:

126

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

Ключевая особенность

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

Это синхронизация

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

Подробная документация Источник

VSCode - сообщение в блоге о синхронизации настроек

Скачать здесь: VS Code - Настройки синхронизации - Расширение

Шан Хан
источник
1
Спасибо, Шан Хан - это расширение весьма полезно - у меня есть набор виртуальных серверов, на которых мне нужно синхронизировать настройки VS Code и привязки клавиш между экземплярами, и это расширение работает точно так, как рекламируется.
Bill_Stewart
Пробовал, но безуспешно. Когда я активирую его с помощью Alt-Shift U, я получаю сообщение об ошибке: 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 (меню Help> Toggle Developer Tools). Вы можете открыть проблему, используя команду «Sync: Open Issue» из команды дополнительных настроек. E.doShow @ messageService.ts: 126
Робин Коу,
4
Я бы хотел принять этот ответ, но я попробовал инструмент и обнаружил, что он ненадежен и содержит ошибки. Очень простой сценарий: VS Code установлен на двух машинах, и я пытался настроить автоматическую загрузку / выгрузку и изменения расширений. В конце концов, я сдался, не сумев заставить его работать. Итак, отличная идея, но требует доработки.
Марк Уитакер
2
У меня смешанные чувства, когда я публикую свои настройки в (полу) общедоступном Gist. Некоторые расширения хранят конфиденциальные данные (например, имена входа в базу данных, имена входа SFTP) в своих настройках. Было бы сложно вместо этого перенаправить хранилище в «локальный» файл, синхронизированный с помощью внешнего инструмента, такого как Syncthing или Resilio Sync?
korkman
1
@korkman для обработки этих ситуаций, синхронизация настроек позволит синхронизировать через локальные файлы и репозитории git, такие как gist, в будущих обновлениях.
Шан Хан
21

Вы можете создать жесткую ссылку из каталога, содержащего пользовательские настройки, в каталог синхронизации приложений, таких как Dropbox или OneDrive.

Например, в окнах пользовательские настройки находятся в %APPDATA%\Code\User, поэтому вы можете ввести:

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

на ваших компьютерах с Visual Studio Code для синхронизации.

Затем на другом компьютере вы можете удалить %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
Потому что вы не сможете создать ссылку, если данное имя уже существует, в то время как каталог синхронизации будет там после загрузки настроек.
Mr. Ree
Это не удается для сетевых дисков с сообщением"Local NTFS volumes are required to complete the operation."
Амит Бекенштейн
11

Ага, вы можете попробовать мое расширение VSCode: Syncing .

Надеюсь, вам понравится. :)


Краткое руководство

  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. Готово!

Nonoroazoro
источник
Гектометр Кажется, это не синхронизирует расширения, которые я установил в эталонной установке VS Code. Я что-то упустил или эта функция выходит за рамки этого инструмента?
SeaDude
РЕДАКТИРОВАТЬ: мне пришлось запустить Syncing: Download Settings2 раза, чтобы загрузить расширения. Ничего особенного, просто предупреждаю. Спасибо за убийственный инструмент!
SeaDude
1
У меня смешанные чувства, когда я публикую свои настройки в (полу) общедоступном Gist. Некоторые расширения хранят конфиденциальные данные (например, имена входа в базу данных, имена входа SFTP) в своих настройках. Было бы сложно вместо этого перенаправить хранилище в «локальный» файл, синхронизированный с помощью внешнего инструмента, такого как Syncthing или Resilio Sync?
korkman
@korkman Экспорт в локальное хранилище пока не поддерживается, но было бы лучше поддерживать синхронизацию файлов.
Nonoroazoro
9

В v1.48:

Возможности предварительного просмотра

Функции предварительного просмотра не готовы к выпуску, но достаточно функциональны для использования. Мы приветствуем ваши ранние отзывы, пока они находятся в стадии разработки.

Синхронизация настроек

Синхронизация настроек теперь доступна для предварительного просмотра в стабильной версии 🎉. Обратитесь к руководству пользователя для получения дополнительной информации и часто задаваемых вопросов.

В продукте функция теперь называется « Синхронизация настроек» . Все его ссылки и настройки переименованы для выравнивания.

См. Также «Ручное слияние» и синхронизацию между инсайдерами и стабильной версией на https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync


В v1.45 похоже, что вы сможете войти во встроенную синхронизацию настроек через github, см. Https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Поддержка входа GitHub в синхронизацию настроек ). И примечания к выпуску v1.45 .


В v1.43 в качестве функции предварительного просмотра (только в сборке для инсайдеров) есть синхронизация настроек . См. Https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Синхронизация настроек

Последние пару месяцев мы работали над поддержкой синхронизации настроек VS Code, расширений и сочетаний клавиш на разных машинах (популярный запрос функции № 2743 ). На этом этапе мы рады сообщить, что эта функция готова к предварительному просмотру из нашего следующего релиза 1.44.0-insider . Теперь вы можете синхронизировать свои настройки во всех установках VS Code на всех ваших машинах. Вы также можете загрузить VS Code с вашими личными настройками на новой машине с минимальными усилиями. Следующее видео демонстрирует это:

Поддерживает обнаружение конфликтов в настройках и привязках клавиш при синхронизации. Конфликты отображаются с помощью редактора различий с входящими (облачными) изменениями слева и локальными изменениями справа. Вы можете разрешить конфликты, отредактировав в правом редакторе, и объединить изменения, используя действия, предусмотренные в редакторе.

Поддерживаемые функции

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

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

Горячие клавиши по умолчанию синхронизируются для каждой платформы. Если ваши сочетания клавиш не зависят от платформы, вы можете синхронизировать их между платформами, отключив настройку sync.keybindingsPerPlatform.

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

Активность синхронизации настроек можно отслеживать в окне вывода журнала (синхронизации) . Все локальные настройки сохраняются на диске за последние 30 дней (не менее 10) всякий раз, когда они изменяются во время синхронизации. Вы можете использовать команду Sync: Open Local Backups Folder, чтобы перейти в место резервных копий и сохранить свои старые настройки.

(и несколько гифок по ссылке на примечание к выпуску)

Обратите внимание, что работает через вашу учетную запись Microsoft , а не через github (до версии 1.45 - см. Вверху):

Синхронизация настроек использует учетную запись Microsoft для хранения настроек VS Code для синхронизации, и поэтому вам потребуется учетная запись для ее использования. См. Документацию по синхронизации настроек для получения дополнительной информации и помощи.

Также см. 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 Code 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 Code

Чтобы использовать резервную копию на другом 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 drive
Крис Фейст,
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 Code.

Wosi
источник
Спасибо за ответ, но вы неправильно поняли вопрос. Я спрашиваю о пользовательских настройках, а не о настройках проекта. Я добавил некоторые пояснения к вопросу.
Марк Уитакер
1
Спасибо, я улучшил ответ
Wosi
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 Code .

Примечание . В настоящее время предварительная версия синхронизации доступна для версии 1.46, май 2020 г.

Марк Уитакер
источник
2
Тем не менее, все еще в превью
Фрэнк Фу
@FrankFu Что ж, но это большая функция, и они прогрессируют: вы можете синхронизироваться с учетной записью microsoft / github, и есть предлагаемый api для входа в учетную запись и т. Д. (Что будет полезно для других расширений, таких как мы. github btw)
Chayim Friedman
@ChayimFriedman, о 100%, я никоим образом не собирался жаловаться. Я чувствовал, что это необходимо прояснить, чтобы не давать людям ложной надежды, поскольку в исходном неотредактированном ответе не говорилось иначе.
Франк Фу,
@FrankFu О, хорошо. Сожалею.
Хаим Фридман,
-7

Используйте настройки рабочей области вместо пользовательских.

ColacX
источник
Это не конструктивное предложение, так как настройки рабочего пространства не синхронизируются между проектом или системами.
Itanex 03
2
Предоставление @ColacX в пользу сомнений, я предполагаю , что имел в виду , что при использовании рабочего пространства-настройки, вы можете сохранить их в мерзавец / SVN / и т.д., что делает на самом деле синхронизации их в некотором смысле.
Джошуа Слипер,