Você quer que o GitHub Copilot sugira seus próprios snippets de código personalizados no Visual Studio Code. Por padrão, o Copilot gera código a partir de fontes públicas e do contexto do arquivo atual. Ele não lê automaticamente seus arquivos de snippet. Este artigo explica como configurar o VS Code para que o Copilot veja seus snippets personalizados e os utilize em suas sugestões. Você aprenderá as configurações exatas e os formatos de arquivo necessários.
Principais Conclusões: Como Fazer o GitHub Copilot Usar Seus Snippets Personalizados
- Configuração settings.json do VS Code > github.copilot.advanced: Controla se o Copilot indexa arquivos de snippet para contexto.
- Caminho do arquivo de snippet .json ou .code-snippets: Deve estar dentro da pasta do workspace para o Copilot lê-los.
- Campos prefix e body nas definições de snippet: Definem o texto de gatilho e o código exato que o Copilot sugerirá.
Como o GitHub Copilot Interage com Snippets Personalizados
O GitHub Copilot gera sugestões de código com base no conteúdo do seu editor ativo, abas abertas e na estrutura do workspace. Ele não possui uma biblioteca de snippets dedicada. Snippets de código personalizados no VS Code são armazenados em arquivos JSON com extensão .code-snippets ou em um arquivo snippets.json global. O Copilot pode tratar esses arquivos como contexto adicional se eles estiverem abertos ou referenciados no workspace. A chave é fazer com que o arquivo de snippet faça parte do contexto que o Copilot analisa quando você digita.
O VS Code armazena snippets em dois locais. Snippets de nível de usuário estão na pasta de dados do usuário, geralmente %APPDATA%\Code\User\snippets no Windows ou ~/.config/Code/User/snippets no Linux e macOS. Snippets de nível de workspace são armazenados em uma pasta .vscode dentro da raiz do projeto. O Copilot pode ler ambos os tipos, mas só lê o arquivo de snippet se o arquivo estiver aberto em uma aba do editor ou se fizer parte do índice do workspace.
Por padrão, o Copilot não indexa todos os arquivos JSON no workspace. A extensão do Copilot usa uma janela de contexto que inclui o arquivo atual, arquivos abertos recentemente e arquivos que estão simbolicamente relacionados. Para forçar o Copilot a ver seu arquivo de snippet, você deve mantê-lo aberto em uma aba enquanto programa. Alternativamente, você pode incorporar código semelhante a snippet diretamente em um arquivo usado com frequência para que o Copilot aprenda o padrão.
Passos para Configurar o VS Code e o Copilot para Snippets Personalizados
Método 1: Manter o Arquivo de Snippet Aberto Enquanto Programa
Este é o método mais simples. O Copilot usa o conteúdo de todos os editores abertos como contexto. Se o arquivo de snippet estiver aberto, o Copilot pode sugerir código dele.
- Crie ou localize seu arquivo de snippet personalizado
Abra o VS Code e pressione Ctrl+Shift+P. Digite Preferências: Configurar Snippets de Usuário e selecione. Escolha um idioma existente ou crie um novo arquivo de snippets global. O VS Code cria um arquivo .code-snippets na pasta apropriada. - Defina um snippet com um prefixo claro
No arquivo de snippet, escreva um snippet com um prefixo único. Por exemplo:{ "Console Log Variable": { "prefix": "clv", "body": ["console.log('$1', $1);"], "description": "Log nome e valor da variável" } }O prefixo clv é o que você digitará para acionar o snippet.
- Abra o arquivo de snippet em uma aba
Clique no arquivo de snippet no Explorer ou use Ctrl+P e digite o nome do arquivo. Mantenha esta aba aberta enquanto trabalha em outros arquivos. - Digite o prefixo no arquivo de destino
Em um arquivo JavaScript, digite clv. O Copilot sugerirá o corpo do snippet com base no arquivo de snippet aberto. Aceite a sugestão com Tab ou Enter.
Método 2: Adicionar Conteúdo do Snippet Diretamente em um Arquivo de Contexto
Se você não quiser manter o arquivo de snippet aberto, incorpore o código do snippet em um arquivo que faça parte do seu workspace. Por exemplo, adicione o código do snippet como um comentário ou uma função em um arquivo utilitário que você importa com frequência.
- Crie um arquivo utilitário
Na raiz do seu projeto, crie um arquivo chamado snippets.js ou snippets.py. Adicione o código do snippet como uma função ou um bloco de comentário. - Escreva o padrão do snippet como uma função
Exemplo para JavaScript:// Snippet: clv // console.log('variableName', variableName); function snippetConsoleLogVar(name, value) { console.log(name, value); } - Mantenha o arquivo utilitário aberto ou importe-o
Abra snippets.js em uma aba ou importe-o no seu arquivo principal. O Copilot verá o padrão e o sugerirá quando você digitar clv.
Método 3: Usar o Índice do Workspace para Incluir Arquivos de Snippet
O Copilot indexa arquivos no workspace para conclusão de código. Você pode aumentar a chance de o Copilot ver seu arquivo de snippet colocando-o na raiz do workspace e garantindo que ele não seja excluído da indexação.
- Coloque o arquivo de snippet na raiz do workspace
Mova seu arquivo .code-snippets para a pasta raiz do seu projeto. Não o coloque dentro de uma pasta .vscode se quiser máxima visibilidade. - Verifique files.exclude no settings.json
Abra as configurações do VS Code (Ctrl+,). Pesquise por files.exclude. Certifique-se de que o padrão /code-snippets não está listado. Se estiver, remova-o. - Reinicie o VS Code
Feche e reabra o VS Code. O Copilot reindexa o workspace. Abra um arquivo de código e digite o prefixo do snippet. O Copilot agora deve sugerir o corpo do snippet.
Problemas Comuns ao Usar o Copilot com Snippets Personalizados
O Copilot Não Sugere o Snippet
A causa mais comum é que o arquivo de snippet não está aberto ou não está indexado. Abra o arquivo de snippet em uma aba. Se a sugestão ainda não aparecer, verifique se o prefixo do snippet é curto e único. Um prefixo como log pode conflitar com snippets internos ou padrões de código comuns. Mude o prefixo para algo como mylog ou clv. Além disso, verifique se o Copilot está habilitado para o idioma que você está usando. O ícone de status do Copilot na barra de status deve mostrar uma marca de verificação verde.
O Copilot Sugere o Código Errado do Snippet
O Copilot pode misturar partes do seu snippet com outro contexto. Isso acontece quando o arquivo de snippet contém vários snippets que são semelhantes. Mantenha cada snippet focado em um padrão. Use prefixos distintos e comentários descritivos. Se o Copilot ainda sugerir código incorreto, feche outros arquivos que contenham padrões de código semelhantes para reduzir o ruído na janela de contexto.
O Copilot Ignora o Arquivo de Snippet Completamente
Se o Copilot nunca referenciar o arquivo de snippet, o arquivo pode estar excluído da indexação. Verifique as configurações do VS Code para search.exclude e files.watcherExclude. Remova quaisquer padrões que correspondam ao caminho do arquivo de snippet. Além disso, certifique-se de que o arquivo de snippet não tenha mais de 100 KB. O Copilot pode pular arquivos muito grandes. Divida grandes coleções de snippets em arquivos menores.
Sugestões do Copilot vs Snippets Internos do VS Code: Principais Diferenças
| Item | Sugestões do Copilot | Snippets Internos do VS Code |
|---|---|---|
| Método de ativação | Digitar qualquer código ou comentário que corresponda ao contexto | Digitar o prefixo exato definido no arquivo de snippet |
| Fonte de contexto | Arquivos abertos, índice do workspace e código público | Apenas o conteúdo do arquivo de snippet |
| Personalização | Requer arquivo de snippet aberto ou padrão incorporado | Definido diretamente em .code-snippets ou snippets.json |
| Velocidade da sugestão | Pode levar um momento para analisar o contexto | Instantânea quando o prefixo é digitado |
| Confiabilidade | Inconsistente se o contexto mudar | Sempre ativa no prefixo exato |
Agora você pode configurar o GitHub Copilot para usar seus snippets personalizados do VS Code mantendo o arquivo de snippet aberto, incorporando padrões em arquivos utilitários ou ajustando a indexação do workspace. Comece abrindo seu arquivo de snippet existente em uma aba enquanto programa. Para mais controle, crie um arquivo utilitário com seus padrões mais usados. Se o Copilot ainda não sugerir seus snippets, use o sistema de snippets interno do VS Code como alternativa, pois ele é acionado por prefixos exatos todas as vezes.