Visual Studio Code (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Visual Studio Code. Data da última tradução: 2020-06-21. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Visual Studio Code é um editor de texto de plataforma cruzada, livre e de código aberto (licenciado sob a licença MIT) desenvolvido pela Microsoft e escrito em JavaScript e TypeScript. Ele é construído sobre a estrutura Electron e é extensível usando extensões, que podem ser navegadas na web ou de dentro do próprio editor de texto. Enquanto o projeto é de código aberto, uma compilação proprietária (licenciada sob um Contrato de Licença de Usuário Final) também é fornecida pela Microsoft. Para obter uma explicação do licenciamento misto, consulte este comentário no GitHub.

Instalação

Os seguintes pacotes fornecem VSCode:

Um servidor/módulo da Microsoft ptvsd (Python Tools for Visual Studio Debug) está disponível em python-ptvsdAUR.

Uso

Execute o code para iniciar o aplicativo (ou code-git ao usar o code-gitAUR).

Se, por qualquer motivo, você desejar iniciar várias instâncias do Visual Studio Code, o sinalizador -n poderá ser usado.

Configuração

code armazena configurações em ~/.config/Code - OSS/User/settings.json.

visual-studio-code-binAUR armazena configurações em ~/.config/Code/User/settings.json.

Terminal Integrado

View > Integrated Terminal ou Ctrl + ` abre um terminal integrado. Por padrão, Bash é usado sem argumentos adicionais, embora isso possa ser alterado. terminal.integrated.shell.linux define o shell padrão a ser usado e terminal.integrated.shellArgs.linux define os argumentos a serem passados para o shell.

Exemplo:

~/.config/Code/User/settings.json
"terminal.integrated.shell.linux": "/usr/bin/fish",
"terminal.integrated.shellArgs.linux": ["-l","-d 3"]

Você pode enfrentar solicitações estranhas depois de definir os argumentos do shell integrado com terminal externo, remover a linha para resolver o problema ou usar um terminal externo.

Terminal externo

Se você estiver usando Terminator como terminal padrão para o Arch e tiver um erro no Código do Visual Studio: Não é possível iniciar o processo do depurador (vsdbg) através do terminal. spawn truecolor ENOENT, você pode alterar o terminal que será usado pelo Visual Studio para outro terminal (por exemplo,gnome-terminal).

"terminal.external.linuxExec": "Your alternative terminal" define o terminal padrão a ser usado para depuração da execução.

Exemplo:

~/.config/Code/User/settings.json
"terminal.external.linuxExec": "gnome-terminal"

Solução de problemas

O menu global não funciona no KDE/Plasma

O Visual Studio Code usa o DBus para passar o menu para o plasma, tente instalar libdbusmenu-glib

Não foi possível mover itens para a lixeira

Por padrão, Electron os aplicativos usam gio para excluir arquivos. Diferentes implementações de lixo podem ser usadas configurando a variável de ambiente ELECTRON_TRASH.

Por exemplo, para excluir arquivos no Plasma:

$ ELECTRON_TRASH=kioclient5 code

No momento da redação deste artigo, o Electron possui suporte a kioclient5, kioclient, trash-cli, gio (padrão) e gvfs-trash (descontinuado). Mais informações estão disponíveis nesta página de documentação.

Falha ao depurar C#

Se você deseja depurar o C#.NET (usando a extensão OmniSharp), será necessário instalar o lançamento com a marca da Microsoft (do AUR). Aparentemente, isso ocorre porque o depurador do .NET Core é licenciado apenas para ser usado com os produtos oficiais da Microsoft - consulte esta discussão no GitHub

Ao usar o pacote de código aberto, a depuração falha bastante silenciosamente. O console de depuração mostrará apenas a mensagem inicial:

You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.

Para depurar com o pacote de código aberto, netcoredbgAUR pode ser usado. Para executá-lo no VS Code, adicione esta configuração à configuração de inicialização do .NET Core do projeto:

./.vscode/launch.json
"configurations": [
    {
...
    "pipeTransport": {
        "pipeCwd": "${workspaceFolder}",
        "pipeProgram": "/usr/bin/bash",
        "pipeArgs": ["-c"],
        "debuggerPath": "/usr/bin/netcoredbg"
    }
...

Falha ao abrir .csproj com servidor OmniSharp, local inválido de Microsoft.Common.props

É necessário alternar dos adereços da versão mono para os adequados da versão SDK:

/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props

Modifique a importação para ficar assim:

/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
/opt/dotnet/sdk/{VERSION}/Current/Microsoft.Common.props

Erro do OmniSharp que "MSBuild cannot be located"

Notou-se na introdução do OmniSharp que os usuários do Arch Linux devem instalar o pacote mono-msbuild. Sem ele, você pode receber um erro como:

OmniSharp Log
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 15.0 - "~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin"
            MSBuildExtensionsPath = /usr/lib/mono/xbuild
            BypassFrameworkInstallChecks = true
            CscToolPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin/Roslyn
            CscToolExe = csc.exe
            MSBuildToolsPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin
            TargetFrameworkRootPath = /usr/lib/mono/xbuild-frameworks
System.TypeLoadException: Could not load type of field 'OmniSharp.MSBuild.ProjectManager:_queue' (13) due to: Could not load file or assembly 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
...

Você pode construir de qualquer maneira (possivelmente dependendo se você tem o mono instalado)

Não é possível salvar com "Retry as Sudo"

Esse recurso não funciona no pacote code, porque a Microsoft não suporta a maneira como o pacote Arch é empacotado (nativo em vez do Electron incluído). Veja FS#61516 e o relatório de erro do upstream para obter mais informações.

O lançamento binário visual-studio-code-binAUR não possui esse problema, e o recurso funciona lá.

Variantes de teclado ou mapeamentos de teclas não funcionam

Conforme a wiki no GitHub:

A mudança de layouts de teclado em alguns gerenciadores de janelas Linux não resulta em uma alteração nas APIs de janelas X de baixo nível que o VS Code usa para ler o layout atual do teclado. Isso significa que o VS Code acaba lendo um dos outros layouts de teclado configurados e não o ativo atual. PR são bem-vindas...

Conforme a wiki, há duas soluções possíveis:

  1. certifique-se que setxkbmap -query como o primeiro layout de teclado aquele que você deseha usar no VS Code.
  2. use "keyboard.dispatch": "keyCode" em suas configurações e reinicie o VS Code. Isso é para impedir o VS Code de tentar determinar seu layout de teclado.

Comando 'remote-containers.openFolder' não encontrado

Abra VS Code ativando a API de contêineres remotos conforme comentado em FS#63374

$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers

Faltando a API do VS Live Share

Instalar o pacote de código aberto code pode carecer de APIs propostas necessárias habilitadas por padrão, as quais permitiriam suporte à extrensão VS Live Share, resultando no erro

[VS Code] [ms-vsliveshare.vsliveshare]: Proposed API is only available when running out of dev or with the following command line switch: --enable-proposed-api ms-vsliveshare.vsliveshare

Conforme a documentação da Microsoft, há algumas poucas soluções possíveis:

  1. Instalar os pacotes com a marca da Microsoft: visual-studio-code-binAUR, visual-studio-code-insiders-binAUR
  2. Adicionar as seguintes entradas à seção extensionAllowedProposedApi no arquivo product.json (code o instala usr/lib/code/product.json)
"extensionAllowedProposedApi": [
    "ms-vsliveshare.vsliveshare",
    "ms-vscode.node-debug",
    "ms-vscode.node-debug2"
]