
![]()

Después de resistirme durante un buen rato a usar un IDE, finalmente cedí.
Contenido
- Presentación
- Instalación y Desinstalación
- Extensiones
- Jupyter Notebooks
- Codespaces
- Troubleshooting
- Copilot
Presentación
Estos apuntes comenzaron como notas sin mucho orden. Tan sólo un conjunto de apuntes sobre cosas que podrían ser útiles para recordarlas en caso de tener que volver a hacerlas. Con el tiempo crecieron y abarcaron el entorno de Windows, además del de macOS, donde surgieron, y actualmente se encuentran siendo reorganizadas.
Inicialmente, la organización de estas notas, como podrá suponerse, estuvo orientada a los sistemas operativos en los que se instaló y probó el producto, pero conforme fueron creciendo, dicha organización ya no funcionó. Así que se ha buscado separar todo aquello referente a la instalación y desinstalación para encapsular las particularidades de cada sistema operativo y dejar en un único documento lo común a todos ellos. Sin embargo, la práctica ha demostrado que algunas particularidades de uso o dependencias del sistema operativo terminarán apareciendo, por lo que ciertas duplicidades (de tema, mas no de contenido) se encontrarán en las descripciones de uso. Todo aquello que pueda considerarse genérico y que, en esencia, es igual en los distintos sistemas operativos en los que puede instalarse este editor se encontrará aquí.
Instalación y Desinstalación
Haga clic en el logo correspondiente.
Extensiones
Un aspecto positivo de VS Code es que cuenta con extensiones (los famosos plug-ins) que amplían la funcionalidad del editor. Lo siguiente son notas de aquellas que han sido probadas.
Mermaid
Si bien VS Code soporta de forma nativa Markdown, hay extensiones a esta especificación de marcado que requieren de algo de ayuda (vía un plug-in) para poder hacer el rendering adecuadamente. Algunas de estas extensiones para Markdown son las de Mermaid. Hay varios plug-ins que permiten visualizar los diagramas descritos con Mermaid. Aparecen nuevas, se actualizan y cambian algunas, y desaparecen otras. Seguirles el ritmo a todas es imposible. Aquí describo las que he probado.
Markdown Preview Mermaid Support
El plug-in Markdown Preview Mermaid Support es una de las extensiones más maduras y con más descargas que llegué a encontrar en su momento. Una vez instalada, bastaba solicitar la vista previa del archivo (con un clic derecho en su pestaña) para que a la par se abriera otra que mostraba el rendering del diagrama. Una de las ventajas de esta extensión es que permite ver de inmediato cualquier actualización en el archivo fuente.
Mermaid Chart
Mermaid Chart es otra extensión muy buena. Según dice su descripción, esta es la «oficial». Su funcionamiento es ligeramente distinto a Markdown Preview Mermaid Support (por ejemplo, en ésta, uno debe hacer clic derecho sobre el diagrama para poder acceder a la opción de preview).
Vim (vscodevim)
Fanático del vi, no podía dejar de tener esta extensión. Algunas cosas con las que me he encontrado de ella son:
- Al menos en el caso de la versión para Windows de VS Code, la búsqueda de la cadena bajo el cursos debe ser habilitada: File > Preferences > Settings. Buscar por
vim.visualstary dar clic en el resultado (debe ser el único) para activarlo.

Python y Pylance
Intérprete
Para seleccionar un interprete de Python en particular (ya sea alguno de varios instalados o que corresponda a un administrador de ambientes como venv o conda7):
- vía la paleta de comandos:
- Mac: ⌘ + Shift + P
- PC: Ctrl + Shift + P
- Buscar por Python: select Interpreter (escribir parte de esta cadena o buscar en la lista).
- De los resultados que se muestren, seleccionar al intérprete deseado.
Run and Debug
La depuración de programas8 se puede llevar a cabo tanto en el código como en las unidades de prueba, aunque estas últimas se llevan a cabo en forma separada, es decir, a través de la opción Testing.
La ejecución y depuración de programas dentro del entorno de VSCode parte de la definición de una configuración.
Testing
Para poder llevar a cabo sesiones de depuración en la sección de pruebas, es primero necesario definir el framework que se usará.
La versión o adición de Microsoft de Python (por aquello de «no buscarle los tres pies al gato«; es decir tomar lo que esta empresa produce para no entrar en conflictos).
C/C++
Para habilitar un «mínimamente viable entorno de desarrollo de C/C++» es recomendable seguir los tutoriales elaborados por Microsoft para tal efecto2-4. Al término de estos, se habrán instalado dos extensiones y las «Herramientas de compilación para Visual Studio«3.
C/C++
Esta extensión proporciona el soporte necesario para el lenguaje en labores de edición y depuración en el editor.
C/C++ Extension Pack
Esta extensión agrega elementos en el editor para facilitar la compilación y acceso al entorno de ejecución de programas.
Makefile Tools
This extension provides IntelliSense configurations to the VS Code C/C++ Extension for Makefile projects. It also provides convenient commands to build, debug, and run your targets.
GitGraph
La extensión GitGraph es muy útil para el seguimiento de un proyecto «versionado» con git.
Remote – WSL
El manejo de los archivos en el subsistema linux proporcionado por Windows es de cuidado (es decir, con WSL 1 hay el riesgo de batir cosas si se trabaja con archivos de este subsistema desde afuera, desde el entorno de Windows o viceversa).
Sync Scroll
Una extensión muy útil para cuando se está editando un archivo tomando de referencia algún otro es Sync Scroll, que como el nombre sugiere permite hacer un scroll simultáneo de dos secciones de edición.
SynthWave ’84
La extensión SynthWave ’84 es en realidad un «tema» (un esquema de coloración) que busca rememorar esos «neon dreams» que caracterizó la música y moda de la década de 1980.
Material Icon Theme
Para presentar ícenos en el explorador de archivos. En lugar de los íconos conceptuales permite identificar los archivos por otros comercial y tecnológicamente más ubícuos.
Amethyst Themes
Temas de coloración de tonos morados. Bueno para trabajar con baja iluminación.
Jupyter notebooks
VS Code permite ejecutar libretas de Jupyter2.
Work in progress….
GitHub Codespaces
Permite habilitar la interacción con un entorno de trabajo en un contenedor Docker hospedado en GitHub.
Un codespace es un entorno de desarrollo alojado en la nube que se puede establecer con archivos de configuración en el repositorio (acción que se llama «configuración como código» y es parte de esta tendencia de virtualizar todo). Esto crea un codespace replicable para todos los usuarios del repositorio (proyecto). Para más información, consultar la documentación de GitHub al respecto.
Esto también permite contar con un entorno de trabajo que, en un navegador, reproduce la experiencia de uso de la aplicación de escritorio de VS Code, incluida una terminal.
Troubleshooting
Algunas soluciones a problemas y dificultades experimentadas.
DLL
El siguiente mensaje de error aparece en la «DEBUG CONSOLE» al tratar de ejecutar una sesión de depuración sobre una unidad de prueba. Para este caso en Windows 10 con miniconda instalado y sobre SQLite3 (el cual ya estaba instalado). Los pasos seguidos consistieron en descargar la versión de SQLLite apropiada para el sistema operativo y arquitectura del procesador del sitio del proyecto de SQLite, y copiar los archivos sqlite3.dll y sqlite3.def del paquete de distribucion en el entorno creado por conda, en su folder de DLLs. No fue necesario reiniciar VSCode.
Traceback (most recent call last):
File «C:UsersWH895NTMiniconda3envscanvaslibrunpy.py», line 193, in run_module_as_main «main«, mod_spec) File «C:UsersWH895NTMiniconda3envscanvaslibrunpy.py», line 85, in _run_code exec(code, run_globals) File «c:UsersWH895NT.vscodeextensionsms-python.python-2021.9.1218897484pythonFileslibpythondebugpy__main_.py», line 45, in
cli.main()
File «c:UsersWH895NT.vscodeextensionsms-python.python-2021.9.1218897484pythonFileslibpythondebugpy/..debugpyservercli.py», line 444, in main
run()
File «c:UsersWH895NT.vscodeextensionsms-python.python-2021.9.1218897484pythonFileslibpythondebugpy/..debugpyservercli.py», line 285, in run_file
runpy.run_path(target_as_str, run_name=compat.force_str(«main«))
File «C:UsersWH895NTMiniconda3envscanvaslibrunpy.py», line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File «C:UsersWH895NTMiniconda3envscanvaslibrunpy.py», line 96, in run_module_code mod_name, mod_spec, pkg_name, script_name) File «C:UsersWH895NTMiniconda3envscanvaslibrunpy.py», line 85, in _run_code exec(code, run_globals) File «c:UsersWH895NT.vscodeextensionsms-python.python-2021.9.1218897484pythonFilestestlauncher.py», line 44, in run(cwd, testRunner, args) File «c:UsersWH895NT.vscodeextensionsms-python.python-2021.9.1218897484pythonFilestestlauncher.py», line 36, in run pytest.main(args) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestconfig__init_.py», line 143, in main
config = prepareconfig(args, plugins) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestconfig__init_.py», line 319, in prepareconfig pluginmanager=pluginmanager, args=args File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggyhooks.py», line 286, in call return self._hookexec(self, self.get_hookimpls(), kwargs) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggymanager.py», line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggymanager.py», line 87, in firstresult=hook.spec.opts.get(«firstresult») if hook.spec else False, File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggycallers.py», line 203, in _multicall gen.send(outcome) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytesthelpconfig.py», line 100, in pytest_cmdline_parse config: Config = outcome.get_result() File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggycallers.py», line 80, in get_result raise ex[1].with_traceback(ex[2]) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggycallers.py», line 187, in _multicall res = hook_impl.function(*args) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestconfig__init_.py», line 1003, in pytest_cmdline_parse
self.parse(args)
File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestconfig__init__.py», line 1283, in parse
self.preparse(args, addopts=addopts) File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestconfig__init_.py», line 1172, in preparse self.pluginmanager.load_setuptools_entrypoints(«pytest11») File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagespluggymanager.py», line 299, in load_setuptools_entrypoints plugin = ep.load() File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagesimportlib_metadata__init_.py», line 100, in load
module = import_module(match.group(‘module’))
File «C:UsersWH895NTMiniconda3envscanvaslibimportlib__init__.py», line 127, in import_module
return bootstrap._gcd_import(name[level:], package, level) File «», line 1006, in _gcd_import File «», line 983, in _find_and_load File «», line 967, in _find_and_load_unlocked File «», line 677, in _load_unlocked File «C:UsersWH895NTMiniconda3envscanvaslibsite-packages_pytestassertionrewrite.py», line 170, in exec_module exec(co, module.dict) File «c:userswh895ntminiconda3envscanvaslibsite-packagespytest_covplugin.py», line 6, in import coverage File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagescoverage__init_.py», line 15, in
from coverage.control import Coverage, process_startup
File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagescoveragecontrol.py», line 21, in
from coverage.data import CoverageData, combine_parallel_data
File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagescoveragedata.py», line 17, in
from coverage.sqldata import CoverageData
File «C:UsersWH895NTMiniconda3envscanvaslibsite-packagescoveragesqldata.py», line 15, in
import sqlite3
File «C:UsersWH895NTMiniconda3envscanvaslibsqlite3__init__.py», line 23, in
from sqlite3.dbapi2 import *
File «C:UsersWH895NTMiniconda3envscanvaslibsqlite3dbapi2.py», line 27, in
from _sqlite3 import *
ImportError: DLL load failed: The specified module could not be found.
…
En lo que se refiere a la utilización del producto, hay varias notas aún en la página dedicada a VSCode en Mac que deben ser extraídas, revisadas y acomodadas (algunas quizás deben ser duplicadas). Así que por el momento, considere además revisar la página de Mac. La idea es que aquí se pueda encontrar todo aquello que es común para cualquier sistema operativo y lo que sea propio de cada uno en la respectiva página.
GitHub Copilot
La habilitación de Copilot puede realizarse de varias formas.
Cualquiera que sea la opción, se requiere estar firmado con una cuenta de GitHub.
Clic en el ícono de la barra lateral para acceder a las cuentas de GitHub que permiten sincronizar la configuración y hacer uso de varios servicios.
Una vez que VSCode obtenga acceso a la cuenta de sincronización, se estará en posibilidad de usar Copilot.
Para ligar una cuenta ya existente en GitHub, usando el ícono de Copilot en el menú principal (la respuesta puede tardar un poco).
Esto deberá activar en el browser por defecto (al firmarse en la cuenta de GitHub, de estar configuradas opciones adicionales de seguridad) podrían preguntarse por códigos de acceso o la interacción con la app del celular:
En el área de edición, se mostrará un checklist con actividades de orientación y algunas guías de introducción.
Al final, deberemos poder validar el enlace con la cuenta:
Referencias
- «Debug code with Visual Studio Code«, visualstudio.com, web. Visited: 2025.08.28. URL: https://code.visualstudio.com/docs/debugtest/debugging.
- «C/C++ for Visual Studio Code«, visualstudio.com, web. Visited: 2026.04.10. URL: https://code.visualstudio.com/docs/languages/cpp.
- «Descargas«, microsoft.com, web. Visitado: 2026.04.10. URL: https://visualstudio.microsoft.com/es/downloads/
- «Configure VS Code for Microsoft C++«, visualstudio.com, web. Visited: 2026.04.10. URL: https://code.visualstudio.com/docs/cpp/config-msvc.
![]()

![]()
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Ávila
Creación: 2020.01.25
Última actualización: 2026.04.10
El contenido de este sitio puede ser copiado y reproducido libremente, siempre que no se altere y se cite su origen. Marcas y productos registrados se citan por referencia, sin fines de lucro ni dolo. Todas las opiniones son a título personal del o de los autores de estas y, salvo que se exprese de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello de lo que se trata. Para conocer más sobre la posición de privacidad y responsabilidad respecto de lo que se presenta en este sitio web y de cómo se ha obtenido, consulte la declaración correspondiente.

















