vscode visual studio font code change cambiar agregar abrir git bash ubuntu visual-studio-code windows-subsystem-for-linux

git - visual - vs code terminal font



¿Cómo uso Bash en Ubuntu en Windows(WSL) para mi terminal VS Code? (3)

Ahora puede usar la extensión WSL de Microsoft .

Mientras que otras preguntas tratan sobre cómo usar cosas como git-bash , darle un nuevo giro al WSL ya que el terminal para VS Code no es lo mismo: le da acceso a bash que se ejecuta en un subsistema Ubuntu Linux real, en lugar del git- bash terminal que se ejecuta en el subsistema de Windows.

Entonces, ¿cómo lo hacemos funcionar como terminal VS Code, y particularmente cómo lo hacemos funcionar como un terminal de entorno de desarrollo funcional?

A diferencia de git-bash, desafortunadamente esto no es tan simple, porque la configuración de Ubuntu Linux en WSL puede proporcionar algunas trampas, como que NPM intente (y falle) ejecutar desde el directorio de Archivos de Programa de Windows debido a la interacción entre WSL y Windows. términos de ruta y algunos paquetes, como el fallo de Compass por razones que no son necesariamente obvias para alguien que no está acostumbrado a desarrollar en Linux. ¿Cuál es una manera simple de tener un entorno de terminal WSL confiable para VS Code donde las herramientas utilizadas con mayor frecuencia se ejecutarán cuando se instalen a través de apt-get o npm ?


Esta respuesta busca ayudar a otros a evitar pasar 1-2 horas resolviendo problemas y encontrando lentamente soluciones dispares para problemas comunes al usar WSL para el terminal en VS Code. No cubre la instalación de paquetes específicos, sino más bien los comunes que pueden no instalarse correctamente como dependencias cuando se instalan elementos que dependen de su presencia y la fijación de configuraciones comunes relacionadas.

Resumen de pasos

  • WSL instalado
  • Código VS (u otro IDE) configurado para terminal
  • NPM instalado y corrección de ruta en .profile (puede ayudar con otras herramientas)
  • build-essential instalado (ayuda con cualquier herramienta que use make / gcc / etc)
  • Tareas de código VS usando WSL
  • Extras

Primeros pasos y requisitos

  • Debe tener instalado WSL . (Lo que significa que debe estar ejecutando Windows 10 de 64 bits , con las actualizaciones apropiadas) Siga la guía de instalación si aún no está instalado. Esto requerirá algunos reinicios.

Configuración de terminal de código VS

Ya sea CTRL + , método abreviado de teclado o FilePreferences Settings

En la esquina superior derecha de la ventana de edición, asegúrese de estar trabajando en el contexto correcto para usted: Configuración de usuario o Configuración del espacio de trabajo .

En la barra de búsqueda de configuraciones, escribe terminal.integrated.shell.windows (o lo que sea que te lleve el tiempo suficiente)

Busque la configuración en el archivo de configuración real, use Edit (pase el mouse sobre la línea, estará a la izquierda: en una pantalla táctil sin mouse, debería poder simplemente tocar a la izquierda de la línea) y seleccione Replace in Settings

En el panel derecho, modifique la entrada creada en el archivo json modificado: reemplace la configuración anterior con

"C://WINDOWS//Sysnative//bash.exe"

Otros IDEs: IntelliJ

Abra Configuración / Herramientas / Terminal y configure el campo "C:/Users/USERNAME/AppData/Local/Microsoft/WindowsApps/ubuntu.exe" del shell" en "C:/Users/USERNAME/AppData/Local/Microsoft/WindowsApps/ubuntu.exe"

Hacer que su Terminal WSL Ubuntu Bash sea funcional para desarrolladores

Cuando usa CTRL + ` para abrir el terminal, ahora debería tener un terminal bash.

Si es la primera vez que ejecuta bash.exe, es posible que se le pregunte sobre la instalación de Ubuntu. Hazlo Una vez que se complete la instalación, elija su nombre de usuario y contraseña para usar en WSL Ubuntu. Estos no tienen que coincidir con su cuenta actual de Windows, y es importante tener en cuenta que no cambiarán en función de los cambios en la contraseña de su cuenta de Windows.

Una vez que haya terminado, tendrá un símbolo del sistema bash en su terminal.

Tenga en cuenta que, a diferencia de git-bash en Windows, este es un entorno separado. Si bien se puede usar para iniciar el software de Windows fuera de sí mismo, necesitará los paquetes de Ubuntu apropiados para ejecutarlos dentro del terminal real.

Actualmente, WSL no viene cargado con todo lo que podría esperar o estar acostumbrado a tener, y algunas cosas pueden entrar en conflicto con el software que ha cargado en Windows, según la configuración de perfil predeterminada.

Actualizaciones y git

Nota: voy a documentar esto como sudo para las personas que simplemente necesitan piezas individuales de esto, pero una opción al principio es sudo su y simplemente ejecutar los siguientes comandos sin sudo.

Asegúrese de que sus paquetes de Ubuntu estén actualizados:

sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade sudo apt autoremove

Instalar git:

sudo apt-get install git

Node.js y NPM

Si ya tiene Nodo o NPM cargados en Windows, ejecutarlos en Ubuntu puede ser problemático debido a problemas de ruta. Por lo tanto, debe instalar las versiones nativas de Ubuntu y asegurarse de que se usen en su lugar.

Primero, instale node.js con NPM . (alternativa: instale NVM y úselo para instalar node.js)

Después de la instalación, la ejecución de los comandos npm probablemente fallará: por ejemplo, npm -v probablemente le dará:

: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm: : not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm: /mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

Esto se debe a un problema de ruta con una solución bastante sencilla . Usando su editor de CLI favorito (como nano , vim , emacs , cat y sed ... etc.), abra su ~/.profile

nano ~/.profile

Nota: NO intente editar archivos Linux usando las herramientas de Windows . (Gracias al comentario de @ david-c-rankin para el enlace oficial con el texto en negrita rojo que explica esto) Si no desea utilizar un editor de CLI para esto en la terminal, consulte la parte inferior de esta publicación para obtener un enlace sobre cómo para ejecutar una GUI.

Actualmente, la variable PATH bash predeterminada en WSL es

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

Que está inyectando la ruta de Windows después de los dos primeros directorios binarios. Desafortunadamente, esto no da como resultado que / usr / bin se use antes de que Windows instale npm, así que agrégalo antes del $ PATH final:

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

Ahorre y luego vuelva a cargar el terminal o simplemente obtenga el archivo de ruta

source ~/.profile

Construir-esencial

Si está utilizando algo que requiere compilación o de otra manera utiliza make, es casi seguro que los necesitará instalados; así que si no los instaló mientras instalaba node.js, hágalo. Es mucho más fácil usar el paquete build-essential en lugar de intentar instalar todo por separado.

Tenga en cuenta que los paquetes como Compass que dependen de Ruby FFI fallarán sin estos. Si tiene problemas para instalar y ejecutar correctamente una herramienta, asegurarse de tener gcc y make instalado puede ser un buen lugar para comenzar.

sudo apt-get install -y build-essential

Ejecución de tareas con Ubuntu

Tenga en cuenta que si usa las tareas.json de VS Code para ejecutar tareas de compilación, de forma predeterminada las ejecutará utilizando el subsistema de Windows en lugar del de Ubuntu. A veces esto puede ser lo que quieres, pero si acabas de terminar de instalar grunt-cli en Ubuntu y no en Windows, probablemente no lo sea.

VS Code recientemente tuvo la actualización de mayo de 2017 sobre cómo funcionan las tareas que le permite configurar el corredor de tareas como terminal . Esta es, con mucho, la forma más fácil de migrar tareas.

Simplemente configurar

"runner": "terminal",

en su tasks.json y listo (suponiendo que tenga todas las herramientas apropiadas que está intentando ejecutar ahora instaladas en WSL Ubuntu).

Esto es muy portátil, idealmente no requiere cambios entre sistemas que tienen o no WSL, u otros sistemas operativos, y es el método que recomendaría.

En este momento, este método genera otra instancia de pestaña TERMINAL (se accede desde el menú desplegable). Todavía puede configurar los observadores apropiados, pero eso significa que ya no está en la pestaña OUTPUT .

El antiguo método es capaz de invocar el shell WSL Ubunutu Bash y hacer que aparezca en OUTPUT , e implica llamar a bash.exe con el argumento -c o usar un script de shell. Desafortunadamente, no es tan semántico, ya que estamos haciendo bash nuestro comando y pasándole lo que queremos ejecutar como argumento. Esto también significa que no es tan rápido portátil a otros sistemas.

Puede usar la misma ubicación que le dio a VS Code anteriormente para el terminal en sí, C://WINDOWS//Sysnative//bash.exe como el valor para el command

Establezca el primer elemento de la matriz de args como -c y el segundo como el comando que desea ejecutar ( crédito a la segunda mitad de esta respuesta ).

Alternativamente, puede ejecutar un script de shell como se ve aquí .

Más bits útiles

¿Desea iniciar VSCode en Windows desde la línea de comando WSL Bash ?

¿Quiere tener una interfaz gráfica para su Ubuntu WSL ? (esto le permitirá hacer cosas como usar un editor de GUI de Linux para archivos dentro del sistema Ubuntu: no los edite con las herramientas de edición de Windows, vea los comentarios / notas en la sección de npm)

¿Desea compilar (consulte la parte anterior sobre cómo configurar las tareas de código VS correctamente para WSL) y depurar completamente dentro de WSL Ubuntu ? (esto muestra cómo hacerlo usando gdb, pero el concepto pipeTransport podría usarse con otros depuradores) (crédito a esta respuesta , pero la anterior también proporciona un método que usa loopback local que podría resultar útil)


si desea usar zsh, busque la ruta de ubuntu1804.exe o ubuntu1604.exe.

en mi caso

"terminal.external.windowsExec": "C://Users//asdf//AppData//Local//Microsoft//WindowsApps//CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc//ubuntu1804.exe", "terminal.integrated.shell.windows": "C://Users//asdf//AppData//Local//Microsoft//WindowsApps//CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc//ubuntu1804.exe",