Visual Studio Code (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Visual Studio Code
. Дата последней синхронизации: 18 апреля 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Code
— кроссплатформенный текстовый редактор, разрабатываемый Microsoft, основанный на фреймворке
Electron
.
Visual Studio Code
— бинарный дистрибутив, основанный на коде из репозитория
Code - OSS
, имеющий дополнительные изменения от Microsoft и распространяемый на условиях
проприеатрной лицензии
(подробнее о лицензировании написано в
этом комментарии на GitHub
).
Также есть поддерживаемый сообществом и распространяемый по лицензии MIT форк
VSCodium
с отключенной по умолчанию
телеметрией
.
Установка
Редактор VSCode доступен для установки с помощью следующих пакетов:
Code - OSS
— Свободная сборка из официального репозитория code-oss.
https://github.com/microsoft/vscode
||
code
,
code-git
AUR
Visual Studio Code
— Проприетарная сборка от Microsoft.
https://code.visualstudio.com/
||
visual-studio-code-bin
AUR
,
visual-studio-code-insiders-bin
AUR
VSCodium
— Поддерживаемый сообщством форк с лицензией MIT.
https://vscodium.com/
||
vscodium
AUR
,
vscodium-bin
AUR
,
vscodium-git
AUR
Разница между "Code - OSS" (open-source) и "Visual Studio Code" (сборка от Microsoft без исходного кода) описана
здесь
.
Поддержка расширений
Использование
Microsoft marketplace
для расширений ограничено продуктами семейства Visual Studio Code. Следовательно, он не может быть использован в Code-OSS (смотрите
FS#67780
).
Пакеты
code
и
vscodium-bin
AUR
/
vscodium
AUR
/
vscodium-git
AUR
настроены на использование
Open VSX registry
, поддерживаемого Eclipse Foundation. Это объясняет, почему Code-OSS не может найти некоторые расширения.
Известные способы решения проблемы следующие:
вручную установить расширение из его файла
.vsix
, который можно получить в
Microsoft Visual Studio Code Marketplace
;
попросить сопровождающего загрузить расширение в
Open VSX registry
;
добавить Microsoft Visual Studio Code Marketplace с помощью одного из следующих пакетов, относящихся к используемой вами сборке:
code-marketplace
AUR
/
vscodium-bin-marketplace
AUR
/
vscodium-marketplace
AUR
. Эти пакеты устанавливают
хук pacman
, который патчит файл
product.json
, как показано в
этом комментарии на GitHub
, после каждого обновления пакета. Обратите внимание, что использование Microsoft Marketplace таким образом не соответствует его
условиям использования
.
Использование
Запустите командой
code
(
code-git
для пакета
code-git
AUR
или
codium
для
vscodium-bin
AUR
/
vscodium
AUR
/
vscodium-git
AUR
).
Если требуется запустить несколько экземпляров приложения, добавьте ключ
-n
без параметров.
Настройка
Пакет
code
хранит конфигурацию в файле
~/.config/Code - OSS/User/settings.json
.
Пакет
visual-studio-code-bin
AUR
хранит конфигурацию в файле
~/.config/Code/User/settings.json
.
vscodium
AUR
и связанные пакеты хранят конфигурацию в файле
~/.config/VSCodium/User/settings.json
.
При миграции с Code на Codium (или наоборот) каталог настроек может быть скопирован или перемещён, поскольку они имеют общую кодовую базу и настройки совместимы.
Встроенный терминал
Меню
Вид > Терминал
или
Ctrl + `
открывает встроенный терминал.
По умолчанию используется
Bash
без каких-либо параметров, но настройки, указанные далее позволяют изменить данное взаимодействие.
terminal.integrated.shell.linux
устанавливает терминал по умолчанию
terminal.integrated.shellArgs.linux
устанавливает передаваемые в терминал аргументы
Например, установить по умолчанию
fish
с параметрами.
~/.config/Code/User/settings.json
"terminal.integrated.shell.linux": "/usr/bin/fish",
"terminal.integrated.shellArgs.linux": ["--login","--debug-level 3"]
Вы можете столкнуться со странными запросами при установке встроенного терминала, удалением некоторых строк, поэтому рекомендуется либо не использовать аргументы, либо использовать внешний терминал.
Внешний терминал
Если вы используете
Terminator
как терминал по умолчанию, у вас могут возникнуть проблемы в VS Code с ошибками вида:
Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT
, поэтому следует сменить терминал на другой, например,
gnome-terminal
.
Строка настроек
"terminal.external.linuxExec": "имя терминала"
установит терминал на требуемый. Пример установки
gnome-terminal
:
~/.config/Code/User/settings.json
"terminal.external.linuxExec": "gnome-terminal"
Решение проблем
Глобальное меню не работает в KDE Plasma
Visual Studio Code использует
D-Bus
для меню, поэтому для него следует установить пакет
libdbusmenu-glib
.
Невозможно переместить объект в корзину
По умолчанию все приложения, использующие
Electron
, используют
gio
для удаления. В
Plasma
используется
kioclient5
. Другой инструмент удаления можно выбрать с помощью
переменной окружения
ELECTRON_TRASH
.
Например, для удаления с помощью
trash-cli
:
$ ELECTRON_TRASH=trash-cli code
Однако, в новых версиях Electron поддерживает и
kioclient5
, и
kioclient
, и
trash-cli
, и
gio
(по умолчанию), и
gvfs-trash
(отмечен устаревшим). Смотрите также страницу
environment-variables
в GitHub репозитории Electron.
Невозможно отладить C#
Для отладки приложений на
C#
(платформа .NET) испольуется расширение
OmniSharp
, которое требует проприетарный компонент
.NET Core Debugger
(смотри пакеты в разделе
установка
). Смотри также
объяснение
в репозитории GitHub.
Если вы используете свободный пакет, отладка упадёт почти незаметно, лишь оставив в консоли сообщение:
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.
Для отладки в свободном пакете можно использовать пакет
netcoredbg
AUR
. Чтобы использовать его для отладки проектов, требуется в настройке проекта указать соответствующую конфигурацию, например:
./.vscode/launch.json
"configurations": [
    {
...
    "pipeTransport": {
        "pipeCwd": "${workspaceFolder}",
        "pipeProgram": "/usr/bin/bash",
        "pipeArgs": ["-c"],
        "debuggerPath": "/usr/bin/netcoredbg"
    }
...
Невозможно открыть .csproj с сервером OmniSharp, ошибка расположения Microsoft.Common.props
Требуется сменить путь к SDK. Вот, как выглядит файл до изменений.
/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props
Вот, как выглядит файл после изменения.
/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
/opt/dotnet/sdk/{VERSION}/Current/Microsoft.Common.props
OmniSharp не может обнаружить MSBuild
На странице
OmniSharp introduction
в GitHub написано, что пользователям Arch Linux требуется установить
mono-msbuild
. Ошибка, которая появляется при отсутствии пакета:
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.
...
Возможно, потребуется собрать пакет самостоятельно.
Omnisharp поставляется со своей собственной версией mono, поэтому, если он не может найти установленную версию, если вы хотите сказать omnisharp искать «глобальный» mono, установленный на вашей машине, поместите это в ваш settings.json:
settings.json
"omnisharp.useGlobalMono:"always"
«Повторить попытку в режиме Sudo» не работает
К сожалению, пакет
code
не поддерживает эту функцию в полной мере, так как официально Microsoft не поддерживает пакет для Arch Linux. Смотри также
FS#61516
или
тикет
на GitHub.
Пакет
visual-studio-code-bin
AUR
не имеет данной проблемы.
Проблемы с сопоставлением клавиш
Как сказано в
wiki на GitHub
:
Переключение раскладок клавиатуры в некоторых оконных менеджерах Linux не приводит к обновлению низкоуровневых оконных API X, которые VS Code использует для получения текущей раскладки клавиатуры. Это означает, что VS Code иногда считывает одну из других настроенных раскладок клавиатуры, а не текущую активную.
Согласно вики, есть два возможных решения:
убедитесь, что
setxkbmap -query
возвращает в качестве первой раскладки клавиатуры ту, с которой вы хотите работать в VS Code.
укажите
"keyboard.dispatch": "keyCode"
в настройках и перезапустите VS Code. Это предотвратит попытки VS Code определить раскладку клавиатуры.
Команда "..." не найдена
В официальной сборке VS Code есть файл
product.json
со списком расширений, которым разрешено использовать определённые API. Однако этого файла нет в OSS-сборке
code
[1]
Для включения определённых API могут потребоваться некоторые флаги.
[2]
Вы можете либо запустить
code
с этими флагами, либо добавить соответствующие записи в раздел
extensionAllowedProposedApi
в файле
product.json
(пакет
code
устанавливает его в
/usr/lib/code/product.json
).
"extensionAllowedProposedApi": [
    "ms-vsliveshare.vsliveshare",
    "ms-vscode.node-debug",
    "ms-vscode.node-debug2"
]
Также можно установить пакет
code-features
AUR
, который устанавливает хук pacman, исправляющий этот файл при каждом обновлении пакета. В качестве альтернативы вы можете установить проприетарные сборки от Microsoft:
visual-studio-code-bin
AUR
,
visual-studio-code-insiders-bin
AUR
.
VS Live Share missing API
Отредактируйте
product.json
, или запустите VS Code с опцией:
$ code --enable-proposed-api ms-vsliveshare.vsliveshare
Команда 'remote-containers.openFolder' не найдена
Для решения проблемы требуется открыть VS Code со включённым API
remote-containers
(см. баг
FS#63374
)
$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers
Command 'GitHub Pull Requests: Configure Remotes...' resulted in an error (command 'pr.configureRemotes' not found)
Запустите VS Code с опцией:
$ code --enable-proposed-api GitHub.vscode-pull-request-github
Git: ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory
Эта ошибка возникает из-за зашифрованного ssh-ключа, и её можно решить, установив какой-нибудь провайдер диалога, например
SSH keys#x11-ssh-askpass
или альтернативы, перечисленные там, например
ksshaskpass
для KDE.
Следует отметить, что для ksshaskpass, например, вам потребуется сделать ссылку на него из
/usr/lib/ssh/ssh-askpass
, чтобы VSCode нашёл его:
# ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
Обрезанные символы во встроенном терминале
Слишком широкие символы могут обрезаться. Например, курсивный полужирный текст в стек-трейсах Deno.
Этого можно избежать, установив для параметра "terminal.integrated.rendererType" значение "experimentalWebgl".
No such interface“org.freedesktop.Secret.Collection”
Смотрите
settings-sync#_troubleshooting-keychain-issues
Аутентификация на Github через VSCodium не работает
При подключении аккаунта Github измените "vscodium" на "vscode" в URL, как показано в
этом комментарии
. Затем скопируйте идентификационный токен в VSCodium.
Внешний вид диалога выбора файла не согласован с внешним видом системы
На данный момент vscodium использует диалог gtk даже в kde. Смотрите
Единый вид приложений Qt и GTK#Согласованный диалог выбора файлов
для более подробной информации.