# Snippets
Para se criar snippets no vscode temos duas formas:
- Criar um snippet global que vai funcionar independenta da linguagem escolhida
- Criar um snippet especifico de uma linguagem
O global tem seu nome de arquivo mais a extensão .code-snippets e o especifico tem o nome da linguagem mais a extensão .json.
Os arquivos ficam localizados dentro do diretorio do vscode, sendo mais especifico Code > User > snippets
.
O conteudo basico seria:
{
"Nome do Snippet": {
"prefix": "acaoParaChamar",
"body": [
"console.log(",
"$1",
");"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
10
11
Em prefixo podemos declarar um array de palavras acionadoras ou uma conforme o exemplo anterior:
{
"Nome do Snippet": {
"prefix": ["acaoParaChamarX", "acao", "acaoPara", "X", "x"],
"body": [
"console.log(",
"$1",
");"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
10
11
Em body definomos o conteudo do snippet em array, cada item do array corresponde a uma nova linha. Logo, console.log(
ficara em uma linha, $1
em outra e );
em outra, imprimindo ao ser usado:
console.log(
// O ponteiro vai parar aqui por causa do espaco reservado
);
2
3
O body possui três espacos reservados, sendo eles $1, $2 e $0 listados na ordem transversal.
Os espacos reservados podem ser declarados assim:
{
"Nome do Snippet": {
"prefix": ["acaoParaChamarX", "acao", "acaoPara", "X", "x"],
"body": [
"console.log(`${1:elemento} alguma outra palavra ${2:elemento} alguma outra palavra ${0:elemento}`);"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
ou assim :
{
"Nome do Snippet": {
"prefix": ["acaoParaChamarX", "acao", "acaoPara", "X", "x"],
"body": [
"console.log(`$1 alguma outra palavra $2 alguma outra palavra $0`);"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
No primeiro exemplo podemos passar dentro de {} o numedo seguido por uma palavra identificando o que vai no local.
Por exemplo, se tivermos uma funcão que faz um calculo recebendo dois valores e um operador:
{
"Nome do Snippet": {
"prefix": ["acaoParaChamarX", "acao", "acaoPara", "X", "x"],
"body": [
"function(let x = ${1:valorUm}, let y = ${2:valorDois}, let r = ${0:operadorMatematico}) {"`,
"return x r y;",
"}"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
10
11
Teriamos este resultado ao usar o snippet:
function(let x = valorUm, let y = valorDois, let r = operadorMatematico) {
return x r y;
}
2
3
Obs.: Funcão de exemplo, nem sei se este retorno vai funcionar
Ao ser impresso podemos navegar pelos espacos reservados por meio da tecla TAB no teclado.
Outra coisa que podemos fazer é setar valores possiveis para que o usuario saiba o que inserir no espaco reservado.
{
"Nome do Snippet": {
"prefix": ["acaoParaChamarX", "acao", "acaoPara", "X", "x"],
"body": [
"function(let x = ${1:valorUm}, let y = ${2:valorDois}, let r = ${0|+,-,*,/,%|}) {",
"return x r y;",
"}"
],
"description": "Descricao do snippet que aparece na pesquisa."
}
}
2
3
4
5
6
7
8
9
10
11
Sera impresso:
function(let x = valorUm, let y = valorDois, let r = ${0|+,-,*,/,%|}) {
return x r y;
}
2
3
Podemos inserir algumas variaveis dentro do body, onde estas imprimem valores definios.
Para usar uma variaveis da lista podemos declarar $nome ou ${nome:valor}, se a variavel nao esta definida seu padrão ou sequencia vazia é inserida, se ela é desconhecida um espaco reservado é criado.
Lista de variaveis possiveis:
- TM_SELECTED_TEXT: O texto atualmente selecionado ou a sequência vazia
- TM_CURRENT_LINE: O conteúdo da linha atual
- TM_CURRENT_WORD: O conteúdo da palavra sob o cursor ou a sequência vazia
- TM_LINE_INDEX: O número da linha baseada no índice zero
- TM_LINE_NUMBER: O número da linha com base em um índice
- TM_FILENAME: O nome do arquivo do documento atual
- TM_FILENAME_BASE: O nome do arquivo do documento atual sem suas extensões
- TM_DIRECTORY: O diretório do documento atual
- TM_FILEPATH: O caminho completo do arquivo do documento atual
- CLIPBOARD: O conteúdo da sua área de transferência
- WORKSPACE_NAME: O nome do espaço de trabalho ou da pasta aberta
- CURRENT_YEAR: O ano atual
- CURRENT_YEAR_SHORT: Os dois últimos dígitos do ano atual
- CURRENT_MONTH: O mês como dois dígitos
'02'
- CURRENT_MONTH_NAME: O nome completo do mês
'julho'
- CURRENT_MONTH_NAME_SHORT: O nome abreviado do mês
'Jul'
- CURRENT_DATE: O dia do mês
- CURRENT_DAY_NAME: O nome do dia
'segunda-feira'
- CURRENT_DAY_NAME_SHORT: O nome abreviado do dia
'Seg'
- CURRENT_HOUR: A hora atual no formato de relógio de 24 horas
- CURRENT_MINUTE: O minuto atual
- CURRENT_SECOND: O segundo atual
- CURRENT_SECONDS_UNIX: O número de segundos desde a época do Unix
- BLOCK_COMMENT_START: Exemplo de saída: em PHP
/*
ou HTML<!--
- BLOCK_COMMENT_END: Exemplo de saída: em PHP
*/
ou HTML-->
- LINE_COMMENT: Exemplo de saída: em PHP
//
ou HTML<!-- -->
Este exemplo imprime <!-- Olá Devs -->
{
"hello": {
"prefix": "devs",
"body": "$BLOCK_COMMENT_START Olá Devs $BLOCK_COMMENT_END"
}
}
2
3
4
5
6
Caso tenhamos criado um snippet global ainda sim conseguimos delimitar para quais idiomas ele estara disponivel por meio do scope
.
{
"hello": {
"scope": "javascript,php,html",
"prefix": "devs",
"body": "$BLOCK_COMMENT_START Olá Devs $BLOCK_COMMENT_END"
}
}
2
3
4
5
6
7
O exemplos anterior só estara disponivel em arquivos js, php e html.
Isso é só o basico.
← Introducao Introducao →