Quanto a temas amigo, o pessoal geralmente gosta bastante do Dracula. Tem também o Nord, Monokai Pro, Spotify Theme, One Dark Pro e assim por diante. Se você pesquisar por temas nas extensões do vscode, vai achar bastante.
O problema é que as vezes a gente até gosta de algum tema, mas alguns aspectos dele podem não nos agradar ou até cansar a vista. Nesse caso, se você quiser, é possível pegar um tema como base e modificar partes dele. Para isso, você pode acessar o arquivo settings.json
(um jeito fácil de fazer isso é usando a paleta de comandos com Ctrl + Shift + P
e digitar user settings) e adicionar algumas configurações.
Seguem abaixo alguns links que podem ajudar a saber que configurações colocar:
- https://code.visualstudio.com/api/extension-guides/color-theme
- https://code.visualstudio.com/api/references/theme-color
- https://code.visualstudio.com/docs/getstarted/themes#_customizing-a-color-theme
- https://code.visualstudio.com/docs/getstarted/settings
Mas resumidamente, você consegue editar um tema através de duas chaves nesse arquivo json. workbench.colorCustomizations
e editor.tokenColorCustomizations
. Você pode especificar qual tema quer customizar e que cores e estilos deseja mudar. Seguem abaixo alguns exemplos para ficar mais claro.
workbench.colorCustomizations
"workbench.colorCustomizations": {
"[Dracula]": {
"editor.background": "#ff0000",
"editorGutter.background": "#00ff00",
"sideBar.background": "#0000ff",
"activityBar.border": "#ffffff"
}
},
workbench.colorCustomizations
é usado para mudar as cores de coisas do próprio editor, como a cor de fundo, a cor do terminal, as bordas, etc. No exemplo acima, estamos mudando as cores do tema Dracula
, fazendo com que o fundo do vscode fique vermelho, o fundo do gutter (coluna que mostra os números das linhas) fique verde, a barra lateral fique azul e a borda da barrinha que fica na parte debaixo fique branca.
Existem muitas outras coisas que dá para customizar. Na documentação mostra o que é cada coisa, mas é bem grande e pode ser bem chatinho de encontrar. Então se você assim desejar, pode usar Ctrl + Espaço
e ir vendo quais são as opções.
editor.tokenColorCustomizations
"editor.tokenColorCustomizations": {
"[Dracula]": {
"textMateRules": [
{
"scope": [
"entity.name.tag",
"entity.name.tag.js.jsx",
"entity.name.tag.js",
"entity.name.tag.html",
"keyword",
"keyword.operator.assignment",
"keyword.control",
"keyword.operator.logical",
"keyword.operator",
"keyword.other.unit",
"keyword.other.special-method.dockerfile",
"punctuation.separator.slice",
"punctuation.separator.key-value",
"punctuation.definition.keyword",
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end",
"punctuation.definition.entity.css",
"punctuation.separator.annotation",
"punctuation.separator.inheritance",
"storage.type",
"storage.modifier",
"constant.character.escape",
"meta.at-rule",
],
"settings": {
"foreground": "#5500aa"
}
}
{
"scope": [
"variable.parameter",
"meta.type.parameters entity.name.type"
],
"settings": {
"foreground": "#ffff00",
"fontStyle": "italic"
}
}
]
},
editor.tokenColorCustomizations
já serve para mudar os highlights dos textos, palavras chave e símbolos. No exemplo acima estamos mmodificando algumas configurações do tema Dracula
. Note que foi aberta uma outra chave, chamada textMateRules
. O valor dela deve ser um array de objetos, cada um com scope
(o que vai ser modificado) e settings
(qual é a cor e o estilo de fonte que vai ser aplicado).
Agora um detalhe, como saber quais valores esse scope
deve receber? De onde vem essas strings
"entity.name.tag"
, "punctuation.definition.template-expression.begin"
e assim por diante? Até certo ponto, com Ctrl + Espaço
dá para descobrir muita coisa. Mas muitas vezes não.
Nesses casos, para descobrir isso, basta abrir algum arquivo qualquer com código. Em seguida abrir a paleta de comandos (Ctrl + Shift + P
) e procurar por Editor Tokens and Scopes. Daí é só ir clicando nos trechos do código que você quiser, e vai aparecee um pop up mostrando vários detalhes, entre eles, quais são os text mate scopes
daqueles trechos.
Espero ter ajudado.