Existe alguma maneira de sincronizar minhas configurações de código do Visual Studio entre instâncias?

123

Gostaria de poder sincronizar minhas configurações de usuário do Código VS (Arquivo> Preferências> Configurações do Usuário) com a nuvem de alguma forma, para que eu possa compartilhá-las facilmente entre várias instalações, como no Windows 10 e no Visual Studio.

Existe uma maneira suportada de fazer isso? O suporte direto no Code seria ótimo, mas, caso contrário, poder mover meu local settings.json para uma pasta Dropbox ou OneDrive também funcionaria.

Estou procurando especificamente uma maneira de fazer isso de forma automática e silenciosa. Exportar / importar manualmente é muito complicado e não é o que estou procurando.


Atualização: há uma solicitação de recurso para isso aqui . Se você deseja esse recurso, dê um joinha.

Mark Whitaker
fonte
2
Uma maneira muito simples seria se você usasse o programa de Backup e sincronização do Google e apenas adicionasse ao backup sua pasta C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User.
vinsa

Respostas:

126

Eu desenvolvi uma extensão que sincronizará todas as suas configurações de código do Visual Studio em várias instâncias.

Características principais

  1. Use seu token de conta do GitHub.
  2. Fácil de carregar e baixar em um clique.
  3. Salva todas as configurações e arquivos de trechos.
  4. Carregar chave: Shift + Alt + u
  5. Chave de download: Shift + Alt + d
  6. Digite Sync Para visualizar todas as opções de sincronização

It Sync

  • Arquivo de configurações
  • Arquivo de ligação de teclas
  • Iniciar arquivo
  • Pasta Snippets
  • Extensões VSCode

Fonte da documentação detalhada

VSCode - Postagem no blog de sincronização de configurações

Faça o download aqui: Código VS - Sincronização de configurações - Extensão

Shan Khan
fonte
1
Obrigado Shan Khan - esta extensão é bastante útil - eu tenho um conjunto de servidores virtuais em que preciso sincronizar as configurações do código VS e as combinações de teclas entre instâncias e essa extensão funciona exatamente como anunciado.
Bill_Stewart
Tentei, mas sem sucesso. Ao ativá-lo com o Alt-Shift U, recebo um erro: extensionHost.ts: 293 [Host de extensão] {"message": "Não encontrado", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Erro de logon de erro no console (menu Ajuda> Alternar ferramentas do desenvolvedor). Você pode abrir um problema usando 'Sync: Open Issue' na configuração avançada command.e.doShow @ messageService.ts: 126
Robin Coe
4
Adoraria aceitar essa resposta, mas tentei a ferramenta e a achei não confiável e com erros. Cenário muito simples: o VS Code foi instalado em duas máquinas e eu estava tentando fazer o upload automático / download de configurações e alterações de extensões. Acabei desistindo depois de não conseguir fazê-lo funcionar. Então, ótima idéia, mas precisa de mais trabalho.
Mark Whitaker
2
Tenho sentimentos contraditórios postando minhas configurações em um Gist (semi) público. Algumas extensões armazenam dados confidenciais (como logons de banco de dados, logins SFTP) em suas configurações. Seria difícil redirecionar o armazenamento para um arquivo "local", sincronizado por uma ferramenta externa como Syncthing ou Resilio Sync?
Korkman
1
@korkman por lidar com essas situações, o Settings Sync permitirá sincronizar através de arquivos locais e repositórios git como o gist em futuras atualizações.
Shan Khan
21

Você pode criar um link físico do diretório que contém as configurações do usuário para o diretório de sincronização de aplicativos como o Dropbox ou o OneDrive.

Por exemplo, no Windows, as configurações do usuário estão localizadas %APPDATA%\Code\User, para que você possa digitar:

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

nos seus computadores com o Visual Studio Code para obter a sincronização.

Em outro computador, você pode excluir a %APPDATA%\Code\Userpasta e digitar:

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

para recuperar as configurações sincronizadas.

Mr. Ree
fonte
Oi ! Não entendo por que você precisaria criar um link do diretório de sincronização para a pasta% appdata%. Mover uma vez para todas as suas configurações de VS reais no Directory Sync (DropBox, onedrive, qualquer que seja ...), então em cada computador que você deseja sincronizar as configurações, excluir %APPDATA%\Code\Usere criar o link usandomklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla
2
Porque você não conseguirá criar um link se o nome já existir, enquanto o diretório de sincronização estará lá após o download das configurações.
Ree.
Isso falha nas unidades de rede com a mensagem"Local NTFS volumes are required to complete the operation."
Amit Beckenstein
11

Ah, você pode tentar minha extensão VSCode: Sincronizando .

Esperando que você goste. :)


Um Guia Rápido

  1. Instale a sincronização :

  2. Adquira o seu GitHub Personal Access Token:

    1. Entre na sua página do GitHub Settings .

      faça login na página de configurações

    2. Selecione a Personal access tokensguia e clique em Generate new token.

      gerar novo token

    3. Selecione giste clique Generate token.

      permitir essência

    4. Copie e faça backup do seu token.

      token de cópia e backup

  3. Sincronize suas configurações:

    Syncingsolicitará as informações necessárias for the first timee save for later use.

    1. Carregar :

      1. Digite uploadno VSCode Command Palette.

      2. Digite seu GitHub Personal Access Token.

      3. Digite seu Gist ID(ou leave it blankpara criar automaticamente).

      4. Feito!

      5. Após o upload, você pode encontrar suas configurações e o correspondente Gist IDno GistHub Gist .

        configurações e essência

    2. Baixar :

      1. Digite downloadno VSCode Command Palette.

      2. Digite seu GitHub Personal Access Token(ou leave it blankse você deseja fazer o download de um Gist público)

      3. Digite seu Gist ID(ou a public Gist ID).

      4. Feito!

Nonoroazoro
fonte
Hum. Isso não parece sincronizar as extensões que eu instalei na instalação do código VS de referência. Estou faltando alguma coisa ou essa funcionalidade está além do escopo desta ferramenta?
SeaDude
EDIT: Eu tive que executar Syncing: Download Settings2x para obter as extensões para baixar. Nada demais, apenas um aviso. Obrigado pela ferramenta assassina!
SeaDude
1
Tenho sentimentos contraditórios postando minhas configurações em um Gist (semi) público. Algumas extensões armazenam dados confidenciais (como logons de banco de dados, logins SFTP) em suas configurações. Seria difícil redirecionar o armazenamento para um arquivo "local", sincronizado por uma ferramenta externa como Syncthing ou Resilio Sync?
Korkman
@korkman A exportação para armazenamento local ainda não é suportada, mas seria melhor oferecer suporte à sincronização de arquivos.
Nonoroazoro
9

Na v1.45, parece que você poderá fazer login na Sincronização de configurações interna via github, consulte https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Suporte para logins do GitHub na sincronização de configurações ) E as notas de versão da v1.45 .


Na v1.43, como um recurso de visualização (apenas no Build dos insiders), as configurações são sincronizadas . Consulte https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Sincronização de configurações

Trabalhamos nos últimos dois meses para oferecer suporte à sincronização de configurações, extensões e atalhos de código do VS Code em máquinas (solicitação de recurso popular # 2743 ). Nesse marco, temos o prazer de anunciar que esse recurso está pronto para visualização no nosso próximo lançamento 1.44.0 . Agora você pode sincronizar suas personalizações em todas as suas instalações do VS Code em todas as suas máquinas. Você também pode inicializar o VS Code com suas personalizações pessoais em uma máquina nova com o mínimo de esforço. O vídeo a seguir demonstra isso:

Suporta a detecção de conflitos nas configurações e combinações de teclas durante a sincronização. Os conflitos são mostrados usando o editor de diferenças, com alterações de entrada (nuvem) no lado esquerdo e alterações locais no lado direito. Você pode resolver os conflitos editando no editor do lado direito e mesclar as alterações usando as ações fornecidas no editor.

Recursos suportados

Atualmente, as configurações, os atalhos de teclado, as extensões e o idioma de exibição estão sincronizados, mas planejamos adicionar mais. Você pode revisar nossa lista de recursos de Sincronização de configurações propostos .

As configurações da máquina (com escopos substituíveis pela máquina) não são sincronizadas por padrão. Você também pode adicionar ou remover as configurações desejadas dessa lista no editor de configurações ou usando a configuração sync.ignoredSettings.

Atalhos de teclado são sincronizados por plataforma por padrão. Se os atalhos do teclado não forem independentes de plataforma, você poderá sincronizá-los entre plataformas, desativando a configuração sync.keybindingsPerPlatform.

Todas as extensões internas e instaladas são sincronizadas, juntamente com seu estado de ativação global. Você pode pular a sincronização de uma extensão, na exibição de extensões ou usando a configuração sync.ignoredExtensions.

Configurações A atividade de sincronização pode ser monitorada na visualização de saída Log (Sync) . É feito backup de todas as personalizações locais nos últimos 30 dias (pelo menos 10) no disco sempre que forem alteradas durante a sincronização. Você pode usar o comando Sincronizar: Abrir pasta de backups locais para acessar o local dos backups e manter suas personalizações antigas.

(e alguns gifs no link da nota de versão)

Observe que está funcionando através da sua conta da Microsoft , não no github (até a v1.45 - veja o topo):

A sincronização de configurações usa uma conta da Microsoft para armazenar suas personalizações de código VS para sincronização e, portanto, você precisaria de uma conta para usá-lo. Consulte a documentação da sincronização de configurações para obter mais informações e ajuda.

Consulte também https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md para obter mais informações sobre como configurar settings sync.


E um link para informações da v1.44 sobre Configurações de sincronização: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync

Marca
fonte
Obrigado Mark. Eu vou tentar fazer isso quando chegar.
Mark Whitaker
1
A pergunta de um milhão de dólares é quando isso chegará estável. 1.46 já saiu, mas ainda é apenas um
insider
6

Fiz isso no meu Mac, copiando os VS Code settings.jsonpara a minha unidade iCloud para backup automático e, em seguida, criando um link simbólico.

  1. Copie settings.jsondo diretório de configurações de código VS $HOME/Library/Application Support/Code/User/settings.json para o seu local de backup
  2. Faça backup do antigo settings.jsonrenomeando parasettings-old.json
  3. No terminal, cdpara VS dir de configuração de código:cd ~/Library/Application\ Support/Code/User/
  4. Criar o link simbólico para o arquivo de backup usando o comando ln -sf path/to/backup/settings.json settings.json. Desde que eu fiz o backup para o iCloud e renomeei o arquivo para vscode.settings.json, meu comando ficou assim:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Verifique se você pode abrir as preferências do usuário no VS Code

Para usar o backup em um Mac diferente, basta repetir as etapas 2 a 5.

Também fiz isso para extensões ...

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
fonte
@frankhommers Parece que este pode ser replicado usando o comando link simbólico da janela: mklink. Você pode usar DropBox, onedrive, ou outro serviço de nuvem em vez de unidade iCloud
Chris Feist
4

Eu coloco a minha settings.jsonem um arquivo de configuração que eu sincronizar com o git (embora Dropbox também funcionaria) e usar um script Python para ligar simbolicamente lo para o local correto para cada plataforma para atualizá-lo no menu de configurações sincroniza toda minhas máquinas. Criar links simbólicos requer privilégios de administrador no 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
fonte
3

Configurações do Usuário

No momento, não há sincronização automática para configurações do usuário disponíveis no Código do Visual Studio. No Windows, as configurações do usuário estão localizadas em %APPDATA%\Code\User\settings.json. Você pode salvar uma cópia desse arquivo no OneDrive ou no Dropbox e movê-lo em todas as suas máquinas para a pasta de configurações do usuário. Mas isso ainda inclui etapas manuais em cada máquina toda vez que você altera a configuração.

Você pode sugerir uma sincronização automática de configurações aqui: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Configurações da área de trabalho

Adicione a .vscodepasta do seu espaço de trabalho ao sistema de controle de versão (Git / SVN etc.). Ao fazer o checkout do código no repositório, você obtém automaticamente as configurações da área de trabalho do VS Code.

Wosi
fonte
Obrigado por responder, mas você não entendeu a pergunta. Estou perguntando sobre as configurações do usuário, não as configurações do projeto. Eu adicionei alguns esclarecimentos à pergunta.
Mark Whitaker
1
Obrigado, eu melhorou a resposta
Wosi
3

Outra maneira de fazer isso seria vincular seus arquivos, que também podem ser armazenados em um repositório no GitHub. Por exemplo, no Mac OS, digamos que você tenha um diretório chamado ~/dev/dotfiles/vscode. Digamos que existem dois arquivos lá chamados settings.jsone keybindings.json. Você pode vincular esses arquivos com:

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 você estiver usando Windows ou Linux, o caminho para os diretórios de configurações respectivos pode ser encontrado em https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations

David
fonte
2

Este é finalmente um recurso interno: consulte Sincronização de configurações no código do Visual Studio .

Nota : A sincronização está atualmente em pré-visualização a partir da versão 1.46 de maio de 2020.

Mark Whitaker
fonte
2
Ainda em pré-visualização
Frank Fu
@FrankFu Bem, mas esse é um grande recurso, e eles estão progredindo: você pode sincronizar com a conta microsoft / github, e há uma API proposta para o login da conta etc. (que será útil para outras extensões como a github btw)
Chayim Friedman
@ChayimFriedman, oh 100%, de nenhuma maneira era minha intenção reclamar. Eu senti que precisava ser esclarecido para evitar dar falsas esperanças às pessoas, pois a resposta original não editada não dizia o contrário.
Frank Fu
@FrankFu Oh, bom. Desculpe.
Chayim Friedman
-7

Use as configurações da área de trabalho em vez das configurações do usuário.

ColacX
fonte
Não é uma sugestão construtiva, pois as configurações da área de trabalho não são sincronizadas no projeto ou nos sistemas.
Itanex
2
Dando @ColacX o benefício da dúvida, eu estou supondo que o que se pretendia era que se você usar espaço de trabalho configurações, você pode salvá-los em git / svn / etc, que faz , de facto, sincronizá-los em um sentido.
Joshua Sleeper