Created: 2021-09-16 13:07 Updated: 2023-12-11 11:41

Introdução

A Microsoft disponibiliza gratuitamente (e na forma de código aberto), o Visual Studio code, que é um editor de código bastante interessante, com inúmeras extensões que facilitam o trabalho do programador.

O problema dele, na minha opinião, é que ele utiliza recursos de telemetria que enviam várias informações para a Microsoft. Mesmo quando a telemetria é desabilitada, ainda assim, alguns dados são enviados (a Microsoft não te deixa nunca).

O projeto VSCodium usa o código licenciado pela Microsoft, compilado sem a telemetria. É uma questão de preferência de privacidade.

Para maiores detalhes, dê uma olhada em https://vscodium.com.

Como instalar no Debian

No site do projeto (https://vscodium.com) o processo é bem detalhado, mas o resumo é o seguinte:

wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \
| gpg --dearmor \
| sudo dd of=/usr/share/keyrings/vscodium-archive-keyring.gpg

echo 'deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main' \
| sudo tee /etc/apt/sources.list.d/vscodium.list

sudo apt update
sudo apt install codium

Extensões

As extensões podem ser instaladas pela linha de comando, ou através dos menus de configuração no próprio editor. As extensões que costumo usar são as seguintes:

aaron-bond.better-comments
bierner.markdown-mermaid
charliermarsh.ruff
Equinusocio.vsc-community-material-theme
Equinusocio.vsc-material-theme
equinusocio.vsc-material-theme-icons
franneck94.c-cpp-runner
lextudio.restructuredtext
ms-pyright.pyright
ms-python.black-formatter
ms-python.flake8
ms-python.isort
ms-python.mypy-type-checker
ms-python.pylint
ms-python.python
ms-toolsai.jupyter
ms-toolsai.jupyter-keymap
ms-toolsai.jupyter-renderers
ms-toolsai.vscode-jupyter-cell-tags
ms-toolsai.vscode-jupyter-slideshow
njpwerner.autodocstring
samuelcolvin.jinjahtml
shd101wyy.markdown-preview-enhanced
streetsidesoftware.code-spell-checker
streetsidesoftware.code-spell-checker-portuguese-brazilian
torn4dom4n.latex-support
trond-snekvik.simple-rst
vadimcn.vscode-lldb
wesbos.theme-cobalt2
zhuangtongfa.material-theme

Com estas extensões, tenho bom suporte à Python, RestructuredText, LaTeX, Jinja2 e Markdown.

Para instalar manualmente, pela linha de comando, feche o editor e execute os seguintes comandos:

codium --install-extension aaron-bond.better-comments
codium --install-extension bierner.markdown-mermaid
codium --install-extension charliermarsh.ruff
codium --install-extension Equinusocio.vsc-community-material-theme
codium --install-extension Equinusocio.vsc-material-theme
codium --install-extension equinusocio.vsc-material-theme-icons
codium --install-extension franneck94.c-cpp-runner
codium --install-extension lextudio.restructuredtext
codium --install-extension ms-pyright.pyright
codium --install-extension ms-python.black-formatter
codium --install-extension ms-python.flake8
codium --install-extension ms-python.isort
codium --install-extension ms-python.mypy-type-checker
codium --install-extension ms-python.pylint
codium --install-extension ms-python.python
codium --install-extension ms-toolsai.jupyter
codium --install-extension ms-toolsai.jupyter-keymap
codium --install-extension ms-toolsai.jupyter-renderers
codium --install-extension ms-toolsai.vscode-jupyter-cell-tags
codium --install-extension ms-toolsai.vscode-jupyter-slideshow
codium --install-extension njpwerner.autodocstring
codium --install-extension samuelcolvin.jinjahtml
codium --install-extension shd101wyy.markdown-preview-enhanced
codium --install-extension streetsidesoftware.code-spell-checker
codium --install-extension streetsidesoftware.code-spell-checker-portuguese-brazilian
codium --install-extension torn4dom4n.latex-support
codium --install-extension trond-snekvik.simple-rst
codium --install-extension vadimcn.vscode-lldb
codium --install-extension wesbos.theme-cobalt2
codium --install-extension zhuangtongfa.material-theme

A extensão Markdown Preview Mermaid oferece suporte à criação básica de diagramas UML.

A extensão Markdown Preview Enhanced (shd101wyy.markdown-preview-enhanced) permite a visualização (preview) de arquivos Markdown e conta com suporte ao Mermaid (diagramas UML).

Atalhos de teclado

Eu costumo utilizar alguns atalhos de teclado, principalmente para uso com o LaTeX, com a finalidade de reduzir um pouco a digitação. Este tipo de configuração deve ser realizada no arquivo HOME/.config/VSCodium/User/keybindings.json.

Veja o exemplo de atalhos que criei para usar com LaTeX:

// Place your key bindings in this file to override the defaults
// Put this file in $HOME/.config/VSCodium/User/keybindings.json
[
    {
        "key": "ctrl+shift+B",
        "command": "editor.action.insertSnippet",
        "when": "editorLangId == latex && editorTextFocus",
        "args": {
            "snippet": "\\textbf{${TM_SELECTED_TEXT}$0}"
        }
    },
    {
        "key": "ctrl+shift+I",
        "command": "editor.action.insertSnippet",
        "when": "editorLangId == latex && editorTextFocus",  // chained clause
        "args": {
            "snippet": "\\textit{${TM_SELECTED_TEXT}$0}"
        }
    },
    {
        "key": "ctrl+shift+P",
        "command": "editor.action.insertSnippet",
        "when": "editorLangId == latex && editorTextFocus",  // chained clause
        "args": {
            "snippet": "\\path{${TM_SELECTED_TEXT}$0}"
        }
    },
    {
        "key": "ctrl+shift+T",
        "command": "editor.action.insertSnippet",
        "when": "editorLangId == latex && editorTextFocus",  // chained clause
        "args": {
            "snippet": "\\texttt{${TM_SELECTED_TEXT}$0}"
        }
    },
    {
        "key": "ctrl+shift+L",
        "command": "editor.action.insertSnippet",
        "when": "editorLangId == latex && editorTextFocus",  // chained clause
        "args": {
            "snippet": "\\begin{lstlisting}\n\t${TM_SELECTED_TEXT}$0\n\\end{lstlisting}"
        }
    }
]

Configurações gerais

Também é possível adicionar algumas configurações gerais do editor no arquivo HOME/.config/VSCodium/User/settings.json. Como exemplo, seguem as configurações que costumo usar:

{
"security.workspace.trust.untrustedFiles": "open",
"security.workspace.trust.enabled": false,
"editor.minimap.enabled": false,
"editor.formatOnSaveMode": "file",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
    "source.organizeImports": "explicit"
},
"editor.rulers": [
    80
],
"files.hotExit": "off",
"files.trimTrailingWhitespace": true,
"editor.tabCompletion": "on",
"cSpell.language": "en,pt,pt-BR",
"window.restoreWindows": "none",
"python.languageServer": "Default",
"python.analysis.typeCheckingMode": "strict",

"editor.fontSize": 28,
"[latex]": {
    "editor.tabSize": 4,
    "editor.insertSpaces": true,
    "editor.useTabStops": false,
},
"python.defaultInterpreterPath": "/home/mario/python-venv/vectora",
"[python]": {
    "diffEditor.ignoreTrimWhitespace": false,
    "editor.codeActionsOnSave": {
        "source.organizeImports": "explicit",
        "source.fixAll": "explicit"
    },
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true,
},
"git.openRepositoryInParentFolders": "never",
"cSpell.userWords": [
    "indentação"
],
"window.zoomLevel": -2,
"workbench.startupEditor": "none",
"workbench.preferredDarkColorTheme": "Default Dark+",
"workbench.colorTheme": "Default Dark+",
//"editor.cursorStyle": "block-outline",
//"editor.cursorBlinking": "smooth"

}

Para que tudo isso funcione bem, é preciso instalar alguns pacotes no ambiente virtual Python (ou na instalação padrão, caso você não use ambientes virtuais):

pip install black
pip install pylint
pip install pyright
pip install mypy

É importante observar que a extensão PyLance, que é um ótimo analisador estático de Python, infelizmente, é proprietário e não funciona em versões alternativas do VSCode, como é o caso do Codium (ou VSCodium, como queira). Isso se deve ao fato que a Microsoft, apesar de toda a sua propaganda nos últimos anos vendendo sua aproximação e "amizade" ao código livre, me dá uma dessa: criou um editor, liberou o código-fonte mas, criou extensões proprietárias. O problema não está em algumas das extensões serem proprietárias, é um direito dela. O que eu acho uma falta de coerência é embutir no código da extensão mecanismos que bloqueiam seu funcionamento em versões alteradas do editor, que é open source.

Para mim não faz o menor sentido, porque o VSCode é gratuito. A diferença é que nas versões derivadas, como o Codium, a principal alteração foi a remoção de todos (ou quase todos) os mecanismos de telemetria, que enviam informações do editor para a Microsoft.

Por fim, uma opção de IDE para Python, é o PyCharm, que me parece ser muito bom e que dizem que é a melhor IDE para Python. Existe a versão paga e uma versão comunitária. Eu só acabei indo para o Codium porque, além de ser mais leve, também possui plugins para outras linguagens, como Markdowm, que costumo usar. Mas, sem dúvida, pelo fato de ter ênfase no Python, é de se esperar que o PyCharm tenha melhores recursos para a linguagem em questão.

Fui.