Manuel de l’utilisateur

Suggestions de commandes

Les suggestions de commandes affichent une liste de propositions tirées des définitions de complétion de votre shell pendant que vous tapez dans une session de terminal classique. La commande reste sur la ligne de saisie habituelle du terminal, et le choix d’une suggestion insère du texte sans l’exécuter. Cette fonction n’utilise aucun modèle d’IA.

Les suggestions sont disponibles sous macOS et Linux. Sous Windows, la fonction est actuellement désactivée (voir la section Windows ci-dessous).

Réglages et utilisation

Paramètres ▸ Terminal ▸ « Suggestions de commandes » propose trois modes :

  • Automatiques (par défaut) : VelaTerm recueille votre saisie pendant environ 25 ms, puis demande des suggestions au shell ; une saisie supplémentaire ne relance pas ce délai. Si vous continuez à taper pendant qu’une requête est en cours, seule votre dernière saisie est utilisée pour la requête suivante, et les résultats périmés sont ignorés. Une correspondance exacte reste dans la liste.
  • Avec Tab : les suggestions n’apparaissent que lorsque vous appuyez sur Tab.
  • Désactivées : aucune liste de suggestions n’est affichée, et Tab conserve le comportement natif du shell.

Une modification s’applique immédiatement aux terminaux ouverts, et le choix est partagé par tous les clients connectés au même serveur VelaTerm.

Clavier et souris :

  • Les touches Haut et Bas sélectionnent une proposition ; les touches Page précédente et Page suivante permettent de parcourir les listes plus longues.
  • Tab, ou un clic de souris, insère la proposition sélectionnée.
  • Entrée est toujours transmise au shell et exécute la commande actuelle telle qu’elle a été saisie, sans appliquer de suggestion.
  • Échap ferme la liste.
  • Ctrl+Espace demande des suggestions manuellement.
  • Lorsque la sélection ne peut plus se déplacer, les touches Haut et Bas sont transmises au shell. Un appui sur Haut depuis la première proposition rappelle donc la commande précédente de l’historique.

Les propositions sont classées dans l’ordre suivant : correspondances exactes, correspondances de préfixe, correspondances de sous-chaîne, puis autres correspondances fournies par le shell. Parmi les correspondances exactes et de préfixe, celles qui respectent la casse viennent en premier ; au sein de chaque groupe, les propositions les plus courtes viennent en premier, et les propositions de même longueur sont classées par ordre alphabétique.

La liste met en évidence la partie de chaque proposition qui correspond à votre saisie et affiche la description fournie par le shell lorsqu’elle existe ; survolez une proposition pour lire une description longue. La liste conserve sa position et sa sélection pendant l’actualisation des résultats. L’acceptation d’une suggestion ferme la liste, y compris lorsque la proposition est un répertoire se terminant par /. Appuyez de nouveau sur Tab pour afficher le niveau de répertoire suivant. Avec le mode « Automatiques », toute nouvelle saisie rouvre la liste.

Si vous modifiez la saisie alors qu’une insertion est en attente, VelaTerm attend un nouveau résultat du shell et n’insère la proposition que si elle figure toujours parmi les suggestions.

Shells pris en charge

ShellSuggestions
ZshWidgets de complétion natifs et compadd ; vos définitions de complétion existantes sont utilisées.
Bash 4 ou version ultérieureFonctions et spécifications de complétion enregistrées ; noms de commandes et de fichiers lorsque rien n’est enregistré.
FishPropositions et descriptions natives de complete -C.
PowerShell (pwsh) avec PSReadLineFonction native CommandCompletion.CompleteInput.
Bash 3.2 et autres shellsComportement natif de Tab uniquement ; aucune liste de suggestions.

La version de Bash fournie avec macOS est la 3.2. Pour utiliser les suggestions avec Bash sous macOS, définissez comme shell de connexion une version plus récente de Bash (par exemple installée avec Homebrew).

Les suggestions ne sont disponibles que dans les sessions de terminal classiques. Les sessions d’agent ne sont pas modifiées.

Chargement de l’intégration

VelaTerm charge son intégration au shell au démarrage d’un terminal. Vos fichiers de démarrage du shell ne sont jamais modifiés, et une commande de démarrage personnalisée s’exécute toujours après le chargement de l’intégration. Les terminaux déjà ouverts avant l’installation d’une version comportant cette fonction doivent être redémarrés.

  • Zsh charge l’intégration au moyen de fichiers de démarrage temporaires, après vos propres fichiers de connexion, puis rétablit ZDOTDIR. Rien n’est saisi dans le terminal.
  • Bash démarre avec un --rcfile temporaire qui lit d’abord vos fichiers de connexion dans l’ordre habituel de Bash (/etc/profile, puis le premier fichier trouvé parmi ~/.bash_profile, ~/.bash_login et ~/.profile), puis charge l’intégration. Rien n’est saisi dans le terminal. Deux différences subsistent par rapport à un shell de connexion normal : shopt -q login_shell renvoie faux, et ~/.bash_logout ne s’exécute pas à la sortie du shell.
  • Fish et PowerShell ne disposent pas d’un mécanisme de démarrage comparable ; VelaTerm envoie donc une commande qui charge l’intégration au démarrage du shell, et cette ligne apparaît en haut du nouveau terminal.

La stratégie d’exécution de PowerShell s’applique toujours au script d’intégration ; VelaTerm ne la contourne pas.

Les suggestions sont suspendues pendant l’exécution d’une commande, lorsqu’un programme plein écran est ouvert, pendant une composition avec une méthode de saisie (IME) et pendant la navigation dans l’historique (Ctrl+R, Ctrl+S et les touches fléchées). Les touches fléchées ne déclenchent jamais de requête automatique ; des appuis répétés sur Haut continuent donc de parcourir les commandes précédentes. Lorsqu’aucune intégration n’est active ou qu’aucune proposition n’a été trouvée, Tab conserve son comportement natif.

Le lancement de SSH ou d’un autre shell imbriqué dans le terminal n’installe pas l’intégration dans cet environnement.

Windows

Sous Windows, aucune intégration n’est chargée, quel que soit le réglage, et le réglage « Suggestions de commandes » est masqué. Les terminaux cmd, Windows PowerShell, pwsh, Git Bash et WSL conservent le comportement natif de Tab. La fonction reste désactivée, car son chargement exigerait de saisir une commande dans chaque nouveau terminal et chaque requête démarrerait des processus auxiliaires, ce qui ralentirait la saisie.

Limites

  • Les propositions dépendent des définitions de complétion installées pour votre shell. VelaTerm ne fournit ni catalogue de commandes propre ni prédictions fondées sur l’historique.
  • Certains scripts de complétion Bash complexes s’appuient sur des mécanismes internes de Readline que l’intégration ne peut pas reproduire exactement.
  • Les fonctions de complétion peuvent exécuter des programmes externes et se révéler lentes. La liste cesse d’attendre au bout de deux secondes, mais une fonction du shell encore en cours d’exécution n’est pas arrêtée ; appuyez sur Ctrl+C pour l’interrompre comme d’habitude.
  • L’intégration réserve Ctrl+F12 à la collecte des propositions et Ctrl+F11 à l’insertion d’une sélection. Une configuration du shell qui réaffecte ces touches après le démarrage du terminal peut désactiver les suggestions. Avec Bash 4.0 à 4.3, l’intégration intercepte également Entrée et Ctrl+J.
  • Les descriptions proviennent du shell. De nombreuses définitions de complétion Bash n’en fournissent pas ; leurs propositions s’affichent alors sans description.

Tests

La fonction a été testée sous macOS avec Zsh et Bash 5.2, et sous Linux avec Bash, Zsh, Fish et PowerShell 7.4.