Manual do usuário

Sugestões de Comandos

As sugestões de comandos mostram, enquanto você digita em uma sessão de terminal comum, uma lista de opções obtidas das definições de preenchimento do seu próprio shell. O comando continua na linha de entrada normal do terminal, e escolher uma sugestão insere o texto sem executá-lo. Este recurso não usa nenhum modelo de IA.

As sugestões estão disponíveis no macOS e no Linux. No Windows, o recurso está desativado no momento (consulte a seção Windows abaixo).

Configurações e controles

Configurações ▸ Terminal ▸ "Sugestões de comandos" oferece três modos:

  • Automáticas (padrão): o VelaTerm reúne o que você digita por cerca de 25 ms e depois pede sugestões ao shell; continuar digitando não reinicia essa espera. Se você continuar digitando enquanto uma solicitação está em andamento, apenas a entrada mais recente é usada na próxima solicitação, e os resultados desatualizados são descartados. Uma correspondência exata permanece na lista.
  • Com Tab: as sugestões aparecem somente quando você pressiona Tab.
  • Desativadas: nenhuma lista de sugestões é exibida, e o Tab mantém o comportamento nativo do shell.

A alteração vale imediatamente para os terminais abertos, e a escolha é compartilhada por todos os clientes conectados ao mesmo backend do VelaTerm.

Teclas e mouse:

  • As setas para cima e para baixo selecionam uma opção; Page Up e Page Down percorrem listas mais longas.
  • Tab, ou um clique do mouse, insere a opção selecionada.
  • Enter sempre vai para o shell e executa o comando atual como foi digitado, sem aplicar nenhuma sugestão.
  • Esc fecha a lista.
  • Ctrl+Espaço solicita sugestões manualmente.
  • Quando a seleção não pode avançar mais, as setas para cima e para baixo voltam a atuar no shell. Por isso, pressionar a seta para cima na primeira opção recupera o comando anterior do histórico.

As opções são ordenadas assim: correspondências exatas, correspondências de prefixo, correspondências de trecho e, por fim, as demais correspondências do shell. Entre as correspondências exatas e de prefixo, as que coincidem também em maiúsculas e minúsculas vêm primeiro; dentro de cada grupo, as opções mais curtas vêm primeiro, e os empates são ordenados alfabeticamente.

A lista destaca a parte de cada opção que corresponde ao que você digitou e mostra a descrição do shell, quando houver; passe o mouse sobre uma opção para ler uma descrição longa. A lista mantém a posição e a seleção enquanto os resultados são atualizados. Aceitar uma sugestão fecha a lista, inclusive quando a opção é um diretório terminado em /. Pressione Tab novamente para ver o próximo nível do diretório. No modo "Automáticas", continuar digitando abre a lista de novo.

Se você alterar a entrada enquanto uma inserção está pendente, o VelaTerm aguarda um novo resultado do shell e só insere a opção se ela ainda for oferecida.

Compatibilidade com shells

ShellSugestões
ZshWidgets de preenchimento nativos e compadd; as definições de preenchimento que você já tem são usadas.
Bash 4 ou posteriorFunções e especificações de preenchimento registradas; nomes de comandos e de arquivos quando nada está registrado.
FishOpções e descrições nativas de complete -C.
PowerShell (pwsh) com PSReadLineCommandCompletion.CompleteInput nativo.
Bash 3.2 e outros shellsApenas o comportamento nativo do Tab, sem lista de sugestões.

O Bash que acompanha o macOS está na versão 3.2. Para usar as sugestões com o Bash no macOS, defina um Bash mais recente (por exemplo, um instalado com o Homebrew) como shell de login.

As sugestões estão disponíveis apenas em sessões de terminal comuns. As sessões de agente não são alteradas.

Como a integração é carregada

O VelaTerm carrega a integração com o shell quando um terminal é iniciado. Seus arquivos de inicialização do shell nunca são modificados, e um comando de inicialização personalizado continua sendo executado depois que a integração é carregada. Os terminais que já estavam em execução antes da instalação de uma versão com este recurso precisam ser reiniciados.

  • O Zsh carrega a integração por meio de arquivos de inicialização temporários, depois dos seus próprios arquivos de login, e em seguida restaura ZDOTDIR. Nada é digitado no terminal.
  • O Bash é iniciado com um --rcfile temporário que primeiro lê seus arquivos de login na ordem habitual do Bash (/etc/profile e, em seguida, o primeiro encontrado entre ~/.bash_profile, ~/.bash_login e ~/.profile) e depois carrega a integração. Nada é digitado no terminal. Restam duas diferenças em relação a um shell de login normal: shopt -q login_shell retorna falso, e ~/.bash_logout não é executado quando o shell é encerrado.
  • O Fish e o PowerShell não oferecem um mecanismo equivalente para executar código na inicialização; por isso, o VelaTerm envia um comando que carrega a integração quando o shell é iniciado, e essa linha aparece no topo do novo terminal.

A política de execução do PowerShell continua valendo para o script de integração; o VelaTerm não a contorna.

As sugestões ficam suspensas enquanto um comando está em execução, enquanto um programa em tela cheia está aberto, durante a composição com um método de entrada (IME) e durante a navegação no histórico (Ctrl+R, Ctrl+S e as setas). As setas nunca iniciam uma solicitação automática; assim, pressionar a seta para cima várias vezes continua percorrendo os comandos anteriores. Quando nenhuma integração está ativa ou nenhuma opção é encontrada, o Tab mantém o comportamento nativo.

Iniciar o SSH ou outro shell aninhado dentro do terminal não instala a integração nesse ambiente.

Windows

No Windows, nenhuma integração é carregada, independentemente da configuração, e a opção "Sugestões de comandos" fica oculta. Os terminais cmd, Windows PowerShell, pwsh, Git Bash e WSL mantêm o comportamento nativo do Tab. O recurso continua desativado porque, nessa plataforma, carregá-lo exigiria digitar um comando em cada novo terminal, e cada solicitação iniciaria processos auxiliares, o que deixaria a digitação mais lenta.

Limitações

  • As opções dependem das definições de preenchimento instaladas para o seu shell. O VelaTerm não oferece um catálogo próprio de comandos nem previsões baseadas no histórico.
  • Alguns scripts de preenchimento complexos do Bash dependem de detalhes internos do Readline que a integração não consegue reproduzir com exatidão.
  • As funções de preenchimento podem executar programas externos e ser lentas. A lista para de esperar após dois segundos, mas uma função do shell que ainda esteja em execução não é encerrada; pressione Ctrl+C para interrompê-la, como de costume.
  • A integração reserva Ctrl+F12 para coletar as opções e Ctrl+F11 para inserir uma seleção. Uma configuração do shell que reatribua essas teclas depois que o terminal é iniciado pode desativar as sugestões. No Bash 4.0 a 4.3, a integração também intercepta Enter e Ctrl+J.
  • As descrições vêm do shell. Muitas definições de preenchimento do Bash não fornecem descrições, então as opções correspondentes aparecem sem descrição.

Testes

O recurso foi testado no macOS com Zsh e Bash 5.2 e no Linux com Bash, Zsh, Fish e PowerShell 7.4.