Manual del usuario

Sugerencias de comandos

Las sugerencias de comandos muestran, mientras escribe en una sesión de terminal normal, una lista de opciones tomadas de las definiciones de autocompletado de su propia shell. El comando permanece en la línea de entrada habitual del terminal, y al elegir una sugerencia se inserta el texto sin ejecutarlo. Esta función no utiliza ningún modelo de IA.

Las sugerencias están disponibles en macOS y Linux. En Windows, la función está desactivada por ahora (consulte la sección Windows más abajo).

Ajustes y controles

Ajustes ▸ Terminal ▸ «Sugerencias de comandos» ofrece tres modos:

  • Automáticas (predeterminado): VelaTerm recopila lo que usted escribe durante unos 25 ms y después solicita sugerencias a la shell; seguir escribiendo no reinicia esa espera. Si sigue escribiendo mientras hay una solicitud en curso, la siguiente solicitud usa solo lo último que haya escrito, y los resultados obsoletos se descartan. Una coincidencia exacta permanece en la lista.
  • Con Tab: las sugerencias solo aparecen al pulsar Tab.
  • Desactivadas: no se muestra ninguna lista de sugerencias, y Tab conserva el comportamiento nativo de la shell.

Los cambios se aplican de inmediato en los terminales abiertos, y la elección es común a todos los clientes conectados al mismo servidor de VelaTerm.

Teclas y ratón:

  • ↑ y ↓ seleccionan una opción; Re Pág y Av Pág permiten desplazarse por las listas más largas.
  • Tab, o un clic del ratón, inserta la opción seleccionada.
  • Enter siempre pasa a la shell y ejecuta el comando actual tal como se ha escrito, sin aplicar ninguna sugerencia.
  • Esc cierra la lista.
  • Ctrl+Espacio solicita sugerencias manualmente.
  • Cuando la selección no puede avanzar más, ↑ y ↓ vuelven a la shell. Por eso, al pulsar ↑ en la primera opción se recupera el comando anterior del historial.

Las opciones se ordenan así: coincidencias exactas, coincidencias de prefijo, coincidencias de subcadena y, por último, las demás coincidencias de la shell. Dentro de las coincidencias exactas y de prefijo, van primero las que coinciden también en mayúsculas y minúsculas; dentro de cada grupo, las opciones más cortas van primero y, en caso de empate, se ordenan alfabéticamente.

La lista resalta la parte de cada opción que coincide con lo que ha escrito y muestra la descripción de la shell cuando existe; sitúe el puntero sobre una opción para leer una descripción larga. La lista conserva su posición y su selección mientras se actualizan los resultados. Al aceptar una sugerencia, la lista se cierra, también cuando la opción es un directorio terminado en /. Pulse Tab de nuevo para ver el siguiente nivel del directorio. En el modo Automáticas, la lista vuelve a abrirse en cuanto sigue escribiendo.

Si cambia la entrada mientras hay una inserción pendiente, VelaTerm espera un resultado nuevo de la shell y solo inserta la opción si esta se sigue ofreciendo.

Compatibilidad con shells

ShellSugerencias
ZshWidgets de autocompletado nativos y compadd; se usan las definiciones de autocompletado que ya tenga.
Bash 4 o posteriorFunciones y especificaciones de autocompletado registradas; nombres de comandos y de archivos cuando no hay nada registrado.
FishOpciones y descripciones nativas de complete -C.
PowerShell (pwsh) con PSReadLineCommandCompletion.CompleteInput nativo.
Bash 3.2 y otras shellsSolo el comportamiento nativo de Tab; sin lista de sugerencias.

La versión de Bash incluida en macOS es la 3.2. Para usar las sugerencias con Bash en macOS, establezca como shell de inicio de sesión una versión más reciente de Bash (por ejemplo, una instalada con Homebrew).

Las sugerencias solo están disponibles en las sesiones de terminal normales. Las sesiones de agente no se modifican.

Cómo se carga la integración

VelaTerm carga su integración con la shell al iniciarse un terminal. Sus archivos de inicio de la shell nunca se modifican, y un comando de inicio personalizado se sigue ejecutando después de cargar la integración. Los terminales que ya estaban en ejecución antes de instalar una versión con esta función deben reiniciarse.

  • Zsh carga la integración mediante archivos de inicio temporales después de sus propios archivos de inicio de sesión y, a continuación, restaura ZDOTDIR. No se escribe nada en el terminal.
  • Bash se inicia con un --rcfile temporal que primero lee sus archivos de inicio de sesión en el orden habitual de Bash (/etc/profile y, después, el primero que exista de ~/.bash_profile, ~/.bash_login y ~/.profile) y luego carga la integración. No se escribe nada en el terminal. Quedan dos diferencias respecto a una shell de inicio de sesión normal: shopt -q login_shell devuelve falso y ~/.bash_logout no se ejecuta al salir de la shell.
  • Fish y PowerShell no tienen un mecanismo de inicio comparable, por lo que VelaTerm envía un comando que carga la integración al iniciarse la shell; esa línea aparece al principio del nuevo terminal.

La directiva de ejecución de PowerShell se sigue aplicando al script de integración; VelaTerm no la elude.

Las sugerencias se suspenden mientras se ejecuta un comando, mientras hay un programa a pantalla completa abierto, durante la composición con un método de entrada (IME) y durante la navegación por el historial (Ctrl+R, Ctrl+S y las teclas de flecha). Las teclas de flecha nunca inician una solicitud automática, de modo que al pulsar ↑ varias veces se sigue retrocediendo por los comandos anteriores. Cuando no hay ninguna integración activa o no se encuentran opciones, Tab conserva su comportamiento nativo.

Si inicia SSH u otra shell anidada dentro del terminal, la integración no se instala en ese entorno.

Windows

En Windows no se carga ninguna integración, sea cual sea el valor del ajuste, y el ajuste «Sugerencias de comandos» permanece oculto. Los terminales de cmd, Windows PowerShell, pwsh, Git Bash y WSL conservan el comportamiento nativo de Tab. La función sigue desactivada porque cargarla allí exigiría escribir un comando en cada terminal nuevo y cada solicitud iniciaría procesos auxiliares, lo que ralentiza la escritura.

Limitaciones

  • Las opciones dependen de las definiciones de autocompletado instaladas para su shell. VelaTerm no proporciona un catálogo de comandos propio ni predicciones basadas en el historial.
  • Algunos scripts complejos de autocompletado de Bash dependen de mecanismos internos de Readline que la integración no puede reproducir con exactitud.
  • Las funciones de autocompletado pueden ejecutar programas externos y ser lentas. La lista deja de esperar al cabo de dos segundos, pero una función de la shell que siga en ejecución no se termina; pulse Ctrl+C para interrumpirla como de costumbre.
  • La integración reserva Ctrl+F12 para recopilar opciones y Ctrl+F11 para insertar una selección. Una configuración de la shell que reasigne estas teclas después de iniciarse el terminal puede desactivar las sugerencias. Con Bash 4.0 a 4.3, la integración también intercepta Enter y Ctrl+J.
  • Las descripciones proceden de la shell. Muchas definiciones de autocompletado de Bash no proporcionan ninguna, por lo que sus opciones se muestran sin descripción.

Pruebas

La función se ha probado en macOS con Zsh y Bash 5.2, y en Linux con Bash, Zsh, Fish y PowerShell 7.4.