¿Hay alguna forma de sincronizar mi configuración de Visual Studio Code entre instancias?


123

Me gustaría poder sincronizar mi configuración de usuario de VS Code (Archivo> Preferencias> Configuración de usuario) a la nube de alguna manera para poder compartirla fácilmente entre múltiples instalaciones, como en Windows 10 y Visual Studio.

¿Existe una forma compatible de hacer esto? El soporte directo en Code sería excelente, pero de lo contrario, poder mover mi ubicación settings.json a una carpeta de Dropbox o OneDrive también funcionaría.

Estoy buscando específicamente una forma de hacer esto de forma automática y silenciosa. Exportar / importar manualmente es demasiado engorroso y no es lo que estoy buscando.


Actualización: hay una solicitud de función para esto aquí . Si quieres esta función, dale un pulgar hacia arriba.


2
Una forma muy sencilla sería si utiliza el programa de copia de seguridad y sincronización de Google y simplemente agrega una copia de seguridad a su carpeta C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User.
vinsa

Respuestas:


126

He desarrollado una extensión que sincronizará todas sus configuraciones de código de Visual Studio en múltiples instancias.

Características clave

  1. Usa el token de tu cuenta de GitHub.
  2. Fácil de cargar y descargar con un solo clic.
  3. Guarda todos los archivos de configuración y fragmentos.
  4. Tecla de carga: Mayús + Alt + u
  5. Tecla de descarga: Shift + Alt + d
  6. Escriba Sync para ver todas las opciones de sincronización

Se sincroniza

  • Archivo de configuración
  • Archivo de combinación de teclas
  • Iniciar archivo
  • Carpeta de fragmentos
  • Extensiones de VSCode

Fuente de documentación detallada

VSCode: publicación de blog de sincronización de configuraciones

Descargar aquí: VS Code - Configuración de sincronización - Extensión


1
Gracias Shan Khan, esta extensión es bastante útil, tengo un conjunto de servidores virtuales donde necesito sincronizar la configuración de VS Code y las combinaciones de teclas entre instancias y esta extensión funciona exactamente como se anuncia.
Bill_Stewart

Lo intenté pero no tuve éxito. Cuando lo activo con Alt-Shift U, aparece un error: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "documentation_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126 Error al iniciar sesión en la consola (menú Ayuda> Alternar herramientas de desarrollo). Puede abrir un problema usando 'Sync: Open Issue' desde el comando de configuración avanzada.edoShow @ messageService.ts: 126
Robin Coe

4
Me encantaría aceptar esta respuesta, pero probé la herramienta y la encontré poco confiable y con errores. Escenario muy simple: VS Code instalado en dos máquinas, y estaba tratando de obtener tanto la configuración de carga / descarga automática como los cambios de extensiones. Finalmente me di por vencido después de no lograr que funcionara. Entonces, gran idea pero necesita más trabajo.
Mark Whitaker

2
Tengo sentimientos encontrados al publicar mi configuración en un Gist (semi) público. Algunas extensiones almacenan datos confidenciales (como inicios de sesión en bases de datos, inicios de sesión SFTP) en su configuración. ¿Sería difícil redirigir el almacenamiento a un archivo "local", sincronizado por una herramienta externa como Syncthing o Resilio Sync?
korkman

1
@korkman para manejar estas situaciones, Settings Sync permitirá sincronizar a través de archivos locales y repositorios de git como gist en futuras actualizaciones.
Shan Khan

21

Puede crear un vínculo físico desde el directorio que contiene la configuración del usuario a su directorio de sincronización de aplicaciones como Dropbox o OneDrive.

Por ejemplo, en Windows, la configuración del usuario se encuentra en %APPDATA%\Code\User, por lo que podría escribir:

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

en sus computadoras con Visual Studio Code para lograr la sincronización.

Luego, en otra computadora, puede eliminar la %APPDATA%\Code\Usercarpeta y escribir:

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

para recuperar la configuración sincronizada.


Hola ! No entiendo por qué necesitaría hacer un enlace DESDE el directorio de sincronización A la carpeta% appdata%. Mueva una vez para todas sus configuraciones VS reales en el directorio de sincronización (DropBox, OneDrive, lo que sea ...), luego en cada computadora que desee sincronizar la configuración, elimine %APPDATA%\Code\Usery cree el enlace usandomklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla

2
Porque no podrá crear un enlace si el nombre de pila ya existe, mientras que el directorio de sincronización estará allí una vez que se hayan descargado las configuraciones.
Mr. Ree

Esto falla para las unidades de red con el mensaje"Local NTFS volumes are required to complete the operation."
Amit Beckenstein

11

Ajá, puedes probar mi extensión VSCode: Sincronizando .

Esperando que te guste. :)


Una guía rápida

  1. Instalar sincronización :

  2. Consiga el suyo propio GitHub Personal Access Token:

    1. Inicie sesión en su página de GitHub Settings .

      iniciar sesión en la página de configuración

    2. Seleccione la Personal access tokenspestaña y haga clic en Generate new token.

      generar nuevo token

    3. Seleccione gisty haga clic Generate token.

      permitir la esencia

    4. Copie y haga una copia de seguridad de su token.

      token de copia y respaldo

  3. Sincroniza tu configuración:

    Syncingle pedirá la información necesaria for the first timey save for later use.

    1. Subir :

      1. Escribir uploaden VSCode Command Palette.

      2. Ingrese su GitHub Personal Access Token.

      3. Ingrese su Gist ID(o leave it blankpara crear automáticamente).

      4. ¡Hecho!

      5. Después de cargar, puede encontrar su configuración y la correspondiente Gist IDen su Gist de GitHub .

        configuración y esencia

    2. Descarga :

      1. Escribir downloaden VSCode Command Palette.

      2. Ingrese su GitHub Personal Access Token(o leave it blanksi desea descargar desde un Gist público)

      3. Ingrese su Gist ID(o a public Gist ID).

      4. ¡Hecho!


Hm. Esto no parece sincronizar las extensiones que instalé en la instalación de VS Code de referencia. ¿Me falta algo o esta funcionalidad está más allá del alcance de esta herramienta?
SeaDude

EDITAR: Tuve que ejecutar Syncing: Download Settings2x para descargar las Extensiones. No es gran cosa, solo un aviso. ¡Gracias por la herramienta asesina!
SeaDude

1
Tengo sentimientos encontrados al publicar mi configuración en un Gist (semi) público. Algunas extensiones almacenan datos confidenciales (como inicios de sesión en bases de datos, inicios de sesión SFTP) en su configuración. ¿Sería difícil redirigir el almacenamiento a un archivo "local", sincronizado por una herramienta externa como Syncthing o Resilio Sync?
korkman

@korkman Aún no se admite la exportación a almacenamiento local, pero podría ser mejor admitir la sincronización de archivos.
Nonoroazoro

9

En v1.45, parece que podrá iniciar sesión en la sincronización de configuración incorporada a través de github, consulte https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Admite inicios de sesión de GitHub en la sincronización de configuración ). Y las Notas de la versión v1.45 .


En v1.43, como función de vista previa (por lo tanto, solo en Insiders 'Build) está la sincronización de configuraciones . Consulte https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Sincronización de configuración

Hemos estado trabajando los últimos meses para admitir la sincronización de la configuración, las extensiones y los atajos de teclado de VS Code en todas las máquinas (solicitud de función popular # 2743 ). En este hito, nos complace anunciar que esta función está lista para la vista previa de nuestra próxima versión de información privilegiada 1.44.0 . Ahora puede sincronizar sus personalizaciones en todas sus instalaciones de VS Code en todas sus máquinas. También puede iniciar VS Code con sus personalizaciones personales en una máquina nueva con un mínimo esfuerzo. El siguiente video demuestra esto:

Admite la detección de conflictos en la configuración y combinaciones de teclas durante la sincronización. Los conflictos se muestran usando el editor de diferencias con los cambios entrantes (nube) en el lado izquierdo y los cambios locales en el lado derecho. Puede resolver los conflictos editando en el editor del lado derecho y fusionar los cambios utilizando las acciones proporcionadas en el editor.

Funciones compatibles

Actualmente, la configuración, los atajos de teclado, las extensiones y el idioma de visualización están sincronizados, pero estamos planeando agregar más. Puede revisar nuestra lista de funciones de sincronización de configuración propuestas .

La configuración de la máquina (con visores de máquina o anulables por máquina) no se sincroniza de forma predeterminada. También puede agregar o eliminar las configuraciones que desee a esta lista desde el editor de configuraciones o usando la configuración sync.ignoredSettings.

Los atajos de teclado se sincronizan por plataforma de forma predeterminada. Si sus atajos de teclado son independientes de la plataforma, puede sincronizarlos entre plataformas desactivando la configuración sync.keybindingsPerPlatform.

Todas las extensiones integradas e instaladas se sincronizan junto con su estado de habilitación global. Puede omitir la sincronización de una extensión, desde la vista de extensiones o usando la configuración sync.ignoredExtensions.

Configuración La actividad de sincronización se puede monitorear en la vista de salida de Registro (Sincronización) . Todas las personalizaciones locales se respaldan durante los últimos 30 días (al menos 10) en el disco siempre que se modifican durante la sincronización. Puede usar el comando Sincronizar: Abrir carpeta de copias de seguridad locales para ir a la ubicación de las copias de seguridad y conservar sus antiguas personalizaciones.

(y algunos gifs en el enlace de la nota de lanzamiento)

Tenga en cuenta que está funcionando a través de su cuenta de Microsoft , no de github (hasta la v1.45, consulte la parte superior):

Settings Sync usa una cuenta de Microsoft para almacenar sus personalizaciones de VS Code para la sincronización y, por lo tanto, necesitaría una cuenta para usar esto. Consulte la documentación de Sincronización de configuración para obtener más información y ayuda.

También consulte https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md para obtener más información sobre cómo configurar settings sync.


Y un enlace a la información v1.44 sobre la sincronización de la configuración: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


Gracias Mark. Estaré ansioso por probar esto cuando llegue.
Mark Whitaker

1
La pregunta del millón de dólares es cuándo se estabilizará esto. 1.46 está disponible, pero sigue siendo solo para iniciados :(
bviktor

6

Hice esto en mi Mac copiando VS Code settings.jsonen mi unidad iCloud para una copia de seguridad automática, y luego creando un enlace simbólico.

  1. Copie settings.jsondesde el directorio de configuración del código VS $HOME/Library/Application Support/Code/User/settings.json a su ubicación de respaldo
  2. Copia de seguridad de lo antiguo settings.jsoncambiando el nombre asettings-old.json
  3. En el terminal, cdal directorio de configuración del código VS:cd ~/Library/Application\ Support/Code/User/
  4. Cree el enlace simbólico a su archivo respaldado usando el comando ln -sf path/to/backup/settings.json settings.json. Desde que hice una copia de seguridad del mío en iCloud y cambié el nombre del archivo a vscode.settings.json, mi comando se veía así:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Compruebe que puede abrir las preferencias de usuario en VS Code

Para usar la copia de seguridad en una Mac diferente, simplemente repita los pasos 2-5.

También hice esto para las extensiones ...

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 Parece que este puede ser replicado con el comando de enlace simbólico de la ventana: mklink. Puede usar DropBox, OneDrive u otro servicio en la nube en lugar de iCloud Drive
Chris Feist

4

Coloco mi settings.jsonen un archivo de configuración que sincronizo con git (aunque Dropbox también funcionaría) y uso un script de Python para vincularlo simbólicamente a la ubicación correcta para cada plataforma, por lo que actualizarlo desde el menú de configuración se sincroniza en mis máquinas. La creación de enlaces simbólicos requiere privilegios de administrador en 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

Ajustes de usuario

Actualmente, no hay sincronización automática para la configuración de usuario disponible en Visual Studio Code. En Windows, la configuración del usuario se encuentra en %APPDATA%\Code\User\settings.json. Puede guardar una copia de ese archivo en OneDrive o Dropbox y moverlo en todas sus máquinas a la carpeta de configuración del usuario. Pero esto aún incluye pasos manuales en cada máquina cada vez que cambia la configuración.

Puede sugerir una sincronización automática de la configuración aquí: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Configuración del espacio de trabajo

Agregue la .vscodecarpeta de su espacio de trabajo al sistema de control de versiones (Git / SVN, etc.). Cuando compruebe el código del repositorio, obtendrá automáticamente la configuración del espacio de trabajo de VS Code.


Gracias por responder, pero no entendiste la pregunta. Estoy preguntando por la configuración del usuario, no por la configuración del proyecto. Agregué algunas aclaraciones a la pregunta.
Mark Whitaker

1
Gracias, mejoré la respuesta
Wosi

3

Otra forma de hacerlo sería vincular suavemente sus archivos, que también se pueden almacenar en un repositorio en GitHub. Por ejemplo, en Mac OS, digamos que tiene un directorio llamado ~/dev/dotfiles/vscode. Digamos que hay dos archivos allí llamados settings.jsony keybindings.json. Puede vincular estos archivos 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

Si está utilizando Windows o Linux, la ruta a los directorios de configuración respectivos se puede encontrar en https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations


2

Esta es finalmente una función incorporada: consulte Sincronización de configuración en Visual Studio Code .

Nota : La sincronización se encuentra actualmente en versión preliminar a partir de la versión 1.46 de mayo de 2020.


2
Aunque todavía en vista previa
Frank Fu

@FrankFu Bueno, pero esta es una gran característica, y están progresando: puedes sincronizar con la cuenta de microsoft / github, y hay una api propuesta para el inicio de sesión de la cuenta, etc. (que será útil para otras extensiones como nosotros github por cierto)
Chayim Friedman

@ChayimFriedman, oh 100%, de ninguna manera era mi intención quejarme. Sentí que era necesario aclararlo para evitar dar falsas esperanzas a las personas, ya que la respuesta original sin editar no decía lo contrario.
Frank Fu

@FrankFu Oh, bien. Lo siento.
Chayim Friedman

-7

Utilice la configuración del espacio de trabajo en lugar de la configuración del usuario.


No es una sugerencia constructiva ya que la configuración del espacio de trabajo no se sincroniza entre proyectos o sistemas.
Itanex

2
Dando @ColacX el beneficio de la duda, estoy asumiendo lo que quería decir era que si se utiliza la configuración del espacio de trabajo-, puede guardarlos en git / SVN / etc, lo que hace , de hecho, sincronización en un sentido.
Joshua Sleeper
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.