JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo mantener sincronizados los ajustes de Visual Studio Code entre todos nuestros equipos

VSCode_logoHe de reconocer que cuando Microsoft presentó Visual Studio Code hace ya casi dos años mi primera reacción fue de escepticismo: "¿Otro editor más, por mucho que sea multi-plataforma, para competir consigo mismo y Visual Studio? ¿tratar de robar mercado a Atom y editores similares? Decididamente han perdido el Norte...".

La realidad es que con el tiempo he tenido que dejar de lado mis reservas y hoy en día es el editor que más utilizo con diferencia. Se ha convertido en una herramienta imprescindible para mi, y lo tengo instalado en todos mis ordenadores. Encima, como es multiplataforma, lo puedes usar de la misma manera en Windows, Linux y Mac. Me gusta lo ágil que es, lo bien que funciona especialmente para desarrollo web (HTML, CSS, javaScript), NodeJS y no menos importante, Markdown. Y si lo aderezas con unos cuantos complementos, entonces es mucho mejor. Desde que lo lanzaron, todos los meses sacan actualizaciones que lo hacen cada vez un poco mejor.

Una de las carencias que presenta, sin embargo, es que no ofrece ninguna manera de sincronizar tus ajustes y extensiones entre todos los equipos en los que lo usas. Por ello, si por ejemplo trabajas en casa con el portátil y en la oficina con un ordenador de sobremesa, cuando haces un cambio o instalas un plugin en uno de ellos, tienes que acordarte de hacer lo mismo en el otro. Esto es algo verdaderamente tedioso y además propenso a errores.

Por suerte, existen formas de hackearlo para conseguir que todo esto deje de preocuparte. A continuación te cuento la que me he inventado yo.

Cómo sincronizar los ajustes de VSCode - Paso a paso

VSCode

Para poder sincronizar los ajustes debemos utilizar alguno de los sistemas de archivos en la nube que nos guste y tengamos instalado en todos los sistemas. Me estoy refiriendo a sistemas del estilo de OneDrive, Google Drive, Dropbox y similares. Yo los utilizo todos, pero mi favorito sin lugar a dudas es Dropbox, fundamentalmente porque no falla nunca y es rapidísimo. Soy un orgulloso usuario "Premium" del servicio desde casi sus comienzos.

Lo que voy a explicar, no obstante, es válido para cualquier servicio de este tipo que utilices. de hecho lo que se explica es útil para poder sincronizar en la nube cualquier otra carpeta, de cualquier otra aplicación, por lo que se le puede sacar mucho partido.

1.- Localizar las carpetas que se deben sincronizar

Lo primero y más importante es localizar en dónde se almacenan los datos de Visual Studio Code.

En concreto lo que nos interesa se encuentra en estas dos carpetas (En Windows):

  • %APPDATA%\Code\User: esta carpeta contiene los ajustes propios de tu usuario. Estos incluyen:
    • Toda la configuración personalizad
    • Las teclas rápidas que hayas re-definido
    • Ajustes de plugins
    • El estado de cada una de las carpetas que uses en VSCode
    • Los snippets de código que hayas definido y que reutilices entre aplicaciones para ahorrar tiempo
  • %USERPROFILE%\.vscode\extensions: en esta carpeta se almacenan los diferentes plugins y extensiones que tengas instalados en VSCode.

En Mac las carpetas serían respectivamente $HOME/Library/Application Support/Code/user y ~/.vscode/extensions. Adapta las instrucciones posteriores a estas rutas si estás en este sistema.

En Linux las carpetas anteriores serían respectivamente $HOME/.config/Code/User y ~/.vscode/extensions. Adapta las instrucciones posteriores a estas rutas si estás en este sistema.

2.- Copiar las carpetas a la nube

En el primero de los equipos vamos a copiar esas carpetas a la nube par que se sincronicen.

Una de las limitaciones que imponen la mayor parte de estos servicios es que, en aras de la sencillez de uso, solo permiten sincronizar una única carpeta, en la que están todos tus archivos de la nube. Así en Dropbox hay una carpeta llamada por defecto MyDropboxen la que están todos los archivos. Lo mismo ocurre con los demás que he mencionado. Luego nos ocuparemos de ver cómo superar esta limitación. De momento vamos a hacer lo siguiente (con Visual Studio Code cerrado):

  1. Crea en tu Dropbox una carpeta llamada, por ejemplo, AppsSettings o similar. Yo es el nombre que le doy y luego la uso para albergar dentro de ella ajustes que quiero sincronizar de varias aplicaciones, no solo de VSCode. Dentro de ésta crea otra subcarpeta para los ajustes que nos ocupan, por ejemplo VSCode.
  2. Vete a la carpeta %APPDATA%\Code\ y mueve la subcarpeta User a la carpeta anterior. Ahora se sicronizará con la nube.
  3. Vete a la carpeta %USERPROFILE%\.vscode\ y mueve la subcarpeta extensions a la carpeta del paso 1. Así se sincronizarán las extensiones también. Ojo, porque puede llegar a ocupar bastante, así que si tienes poco espacio en tu sistema de arcivos en la nube, deberás comprobar si te cabe bien o no antes de sincronizarlo.

Todos los sistemas de archivos relativamente modernos (como NTFS en Windows y HFS en Mac y Ext2 en Linux) disponen de la capacidad de crear lo que se conocen como Junctions y también links simbólicos. No es el objeto de este artículo explicar a fondo en qué consisten estas características, pero para entendernos, baste decir que estos se comportan como agujeros de gusano en el sistema de archivos. Es decir, nos permiten tener una serie de archivos ubicados en un sitio pero que aparezcan instantáneamente en otro lugar.

De este modo, y a efectos de lo que nos interesa, podemos hacer que las carpetas que acabamos de copiar en Dropbox le aparezcan al sistema operativo como si estuvieran ubicadas en varios lugares al mismo tiempo. En este caso la ubicación inicial será dentro de Dropbox, pero al mismo tiempo estarán también a todos los efectos en el mismo sitio que estaban al principio, antes de moverlas :-O

¿Cómo lo conseguimos?

Bueno, yo en Windows utilizo un software Open Source que facilita muchísimo el trabajo con este tipo de artefactos, llamado Link Shell Extension. Pero no es necesario ya que el propio sistema operativo ofrece nativamente la capacidad de crear este tipo de "carpetas especiales" (por denominarlas de algún modo).

En Windows lo que debemos hacer es abrir una línea de comandos (busca CMD en el menú de inicio y listo) y ejecutar el siguiente código:

mklink /J %APPDATA%\Code\User C:\Dropbox\AppsSettings\VSCode\user

y

mklink /J %USERPROFILE%\.vscode\extensions C:\Dropbox\AppsSettings\VSCode\extensions

Esto lo que hará es crear Juntions en donde estaban las carpetas originales. A todos los efectos el sistema operativo las verá como si fueran las que había inicialmente, pero lo bueno es que ahora están en Dropbox. Gracias a esto, cuando cambies cualqueir ajuste o añadas o quites una extensión, los cambios se están realizando en la carpeta de Dropbox, por lo que se sincronizarán a todos tus equipos.

Si repites este tercer paso únicamente en todos los demás ordenadores en los que tengas Visual Studio Code (elimina primero las carpetas Usery extensions, claro), tendrás todos tus ajustes y extensiones sincronizados en todos los equipos :-)

¡Espero que te resulte útil!

Nota 1: he utilizado Juntions y no links simbólicos (que también valdrían) porque para crearlos no es necesario elevación de privilegios y te funcionarán con una línea de comandos de usuario normal.

Nota 2: se deben crear de este modo y no al revés (es decir, las originales en donde están y las Juntions en Dropbox) porque Dropbox y compañía no son capaces de sicnronizar carpetas que sean Juntions o links simbólicos. Además la idea es tener una sola copa compartida entre todos, y esta es la manera de hacerlo.

Nota 3: para crear las Juntions en Mac y Linux deberás utilizar el comando ls, cuya sintaxis es: ln -s Ruta-A-Carpeta-Dropbox Ruta-VSCode.

Nota 4: lo explicado aquí se puede usar para sincromnizar cualquier carpeta de tu disco duro, aunque yo lo he utilizado con VSCode. De hecho yo tengo diversas aplicaciones que no ofrecen sincronización nativa, sincronizadas de esta manera entre todos mis equipos.

Nota 5: si utilizas habitualmente Link Shell Extension que es un proyecto buenísimo (yo lo instalo en todos mis equipos) dónale al autor al menos 5€ para agradecerle el esfuerzo. Es una práctica recomendada que todos debiéramos seguir con los proyectos Open Source a los que le sacamos partido.

José Manuel Alarcón José Manuel Alarcón
Fundador y director de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Agregar comentario