Cuando trabajamos con herramientas de terminal como OpenCode, escribir prompts largos o complejos directamente en la consola puede convertirse en una tortura. Para solucionar esto, OpenCode incluye el comando /editor, una utilidad diseñada para abrir un editor de texto externo donde redactar cómodamente antes de enviar el mensaje. Sin embargo, si al ejecutarlo no ocurre nada, lo más probable es que falte configurar la variable de entorno EDITOR en tu sistema.
1. ¿Cómo funciona realmente el comando /editor?
El flujo de trabajo de este comando es sencillo pero sumamente efectivo. Al escribir /editor en OpenCode, ocurre lo siguiente:
- OpenCode crea un archivo de texto temporal en tu sistema.
- Llama al editor configurado en tu variable de entorno
EDITOR, pasándole la ruta de ese archivo temporal. - Espera a que termines de escribir, guardes y cierres el editor.
- Lee el contenido guardado en el archivo temporal y lo envía como tu prompt a la IA.
Existe también un comando hermano, /export, que realiza el proceso inverso: exporta el historial de la conversación actual a un archivo Markdown y lo abre en tu editor predeterminado.
2. Configuración de la variable EDITOR en Windows (PowerShell y CMD)
Para que el sistema sepa qué editor abrir, debemos definir la variable de entorno de forma persistente. En Windows, la mejor manera de hacerlo es a nivel de usuario (User) utilizando PowerShell. Esto asegura que la configuración funcione tanto en PowerShell como en el clásico Símbolo del sistema (CMD) y sobreviva a los reinicios del sistema.
[Environment]::SetEnvironmentVariable("EDITOR", "notepad.exe", "User")
Una vez ejecutado el comando, es necesario **cerrar la terminal actual y abrir una nueva** para que los cambios surtan efecto. Puedes verificar que la variable se guardó correctamente ejecutando:
$env:EDITOR
Entendiendo los ámbitos (Scopes) en Windows
Al usar el método de .NET SetEnvironmentVariable, el tercer parámetro define el alcance de la variable:
- Process: La variable solo existirá en la sesión de terminal actual. Si cierras la ventana, se pierde.
- User: Se guarda en el registro de Windows de tu usuario. No requiere permisos de administrador y está disponible para todos tus terminales (PowerShell, CMD, Windows Terminal) y programas.
- Machine: Se aplica a todos los usuarios del equipo. Requiere ejecutar la terminal como Administrador.
[Environment]::SetEnvironmentVariable("EDITOR", $null, "User").
3. El problema de los editores modernos: La importancia del parámetro --wait
Si intentas configurar un editor gráfico como VS Code, Cursor o Sublime Text simplemente apuntando a su ejecutable (por ejemplo, subl.exe), te encontrarás con un comportamiento errático. Es común que el editor te pida una ubicación para guardar el archivo manualmente, o que OpenCode continúe su ejecución inmediatamente sin capturar tu texto.
Esto sucede porque los editores modernos se ejecutan de forma asíncrona: abren una ventana en segundo plano y devuelven el control a la terminal de inmediato. OpenCode asume que ya terminaste de editar y lee el archivo temporal vacío.
Para solucionar esto, debemos indicarle al editor que mantenga el proceso bloqueado hasta que cerremos la pestaña del archivo. Esto se logra con el parámetro --wait.
Configuración para VS Code:
[Environment]::SetEnvironmentVariable("EDITOR", "code --wait", "User")
Configuración para Sublime Text (subl.exe):
[Environment]::SetEnvironmentVariable("EDITOR", "subl.exe --wait", "User")
Get-Command subl.exe.
4. Cómo listar y verificar variables de entorno en PowerShell
Si necesitas auditar qué variables de entorno están cargadas en tu sesión actual o verificar si hay conflictos, puedes usar los siguientes comandos en PowerShell:
# Listar todas las variables de entorno ordenadas por nombre
Get-ChildItem Env: | Sort-Object Name
# Obtener específicamente las variables persistentes del usuario
[Environment]::GetEnvironmentVariables("User")
5. Bonus: Usando /editor en servidores remotos (Linux / SSH)
Si utilizas OpenCode en un servidor Linux remoto a través de SSH, no tienes una interfaz gráfica para abrir VS Code o Sublime. Sin embargo, puedes configurar un editor de terminal (TUI) como Neovim o Vim de manera muy eficiente.
export EDITOR=nvim
Habilitando el soporte de mouse por SSH
Trabajar en terminal no significa renunciar a la comodidad. Si tu cliente de terminal local soporta el reenvío de eventos de mouse (mouse reporting), puedes configurar tus editores TUI para usar el scroll, hacer clics y seleccionar texto directamente con el mouse.
En Neovim / Vim:
Añade la siguiente línea a tu archivo de configuración (~/.config/nvim/init.vim o ~/.vimrc):
set mouse=a
En tmux:
Si trabajas dentro de un multiplexor como tmux para mantener tus sesiones activas, también debes indicarle que capture los eventos del mouse. Añade esto a tu ~/.tmux.conf:
set -g mouse on
Con esta pila tecnológica (Windows Terminal/macOS Terminal → SSH → tmux → Neovim), tendrás una experiencia fluida donde el comando /editor de OpenCode abrirá instantáneamente un búfer de edición rápido, con soporte de scroll y mouse, y devolverá tu prompt estructurado al cerrar el archivo.
La historia detrás de la nota
Configurar correctamente el entorno local y remoto marca la diferencia entre una herramienta que se siente tosca y un flujo de trabajo donde las ideas fluyen sin fricciones desde tu editor favorito.