「Visual Studio Code」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎設定: 同期)
36行目: 36行目:
 
何らかの理由で Visual Studio Code の複数のインスタンスを起動した場合、{{ic|-n}} フラグを使用できます。
 
何らかの理由で Visual Studio Code の複数のインスタンスを起動した場合、{{ic|-n}} フラグを使用できます。
   
==設定==
+
== 設定 ==
   
{{Pkg|code}} 設定 {{ic|~/.config/Code - OSS/User/settings.json}} に保存されます。
+
{{Pkg|code}} 設定 {{ic|~/.config/Code - OSS/User/settings.json}} に保存ます。
   
{{AUR|visual-studio-code-bin}} 設定 {{ic|~/.config/Code/User/settings.json}} に保存されます。
+
{{AUR|visual-studio-code-bin}} 設定 {{ic|~/.config/Code/User/settings.json}} に保存ます。
   
{{AUR|vscodium}} 及びその他 Codium の設定 {{ic|~/.config/VSCodium/User/settings.json}} に保存されます。
+
{{AUR|vscodium}} や関連するパッケージは設定 {{ic|~/.config/VSCodium/User/settings.json}} に保存ます。
   
Code から Codium (またはその逆) へ設定を移行する場合、設定ディレクトリはコピーまたは移動できます。殆どのコードベースを共有しているため設定には互換性があります。
+
Code から Codium (またはその逆) 移行する場合、設定ディレクトリはコピー/移動することができます。設定はコードベースの殆どを共有しているので、互換性があります。
   
===統合ターミナル===
+
=== 統合ターミナル ===
   
{{ic|View > Integrated Terminal}} や {{ic|Ctrl + `}} で統合されたターミナルが開きます。デフォルトでは、何も引数が指定されないと [[Bash]] が使われますが、使用されるシェルは変更できます。{{ic|terminal.integrated.shell.linux}} は使用するデフォルトシェルを設定し、{{ic|terminal.integrated.shellArgs.linux}} はシェルに渡される引数を設定します。
+
''View > Integrated Terminal'' や {{ic|Ctrl + `}} で統合ターミナルが開きます。
  +
デフォルトでは追加の引数がない場合に [[Bash]] が使用されますが、この挙動は変更できます。
  +
{{ic|terminal.integrated.shell.linux}} はデフォルトのシェルを設定し、{{ic|terminal.integrated.shellArgs.linux}} はそのシェルに渡される引数を設定します。
   
 
例:
 
例:
57行目: 59行目:
 
}}
 
}}
   
  +
外部ターミナルで統合シェルの引数を設定するとプロンプトがおかしくなる場合があります。その行を削除してこの問題を解決するか、外部ターミナルを使用してください。
===外部ターミナル===
 
  +
  +
=== 外部ターミナル ===
   
 
Arch のデフォルトターミナルとして [[Terminator]] を使っている場合、Visual Studio Code で次のようなエラーが発生します: {{ic|Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT}}。Visual Studio で使用するターミナルを別のターミナルに変更することで解決します (例: {{Pkg|gnome-terminal}})。
 
Arch のデフォルトターミナルとして [[Terminator]] を使っている場合、Visual Studio Code で次のようなエラーが発生します: {{ic|Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT}}。Visual Studio で使用するターミナルを別のターミナルに変更することで解決します (例: {{Pkg|gnome-terminal}})。
   
{{ic|"terminal.external.linuxExec": "Yours alternative terminal"}} で実行デバッグのときに使用するデフォルトのターミナルを設定します。
+
{{ic|"terminal.external.linuxExec": "Your alternative terminal"}} で実行デバッグのときに使用するデフォルトのターミナルを設定します。
   
 
例:
 
例:
69行目: 73行目:
 
}}
 
}}
   
=== Wayland でネイティブ実行 ===
+
=== Wayland でネイティブ実行する ===
{{Accuracy|The flags in standard electron-flags.conf are ignored|section=Enabling wayland through electron-flags.conf}}
 
 
[[Wayland]] ベースの WM や DE を使用している場合、コマンドラインオプションに、{{ic|1=--enable-features=UseOzonePlatform --ozone-platform=wayland}} を追加することで、Visual Studio Code を XWayland ではなく、Wayland でネイティブに実行させることができます。例えば、次のようにして、VSCode を起動してみてください。
 
   
  +
Visual Studio Code は Electron を使います。VSCode を Wayland 上でネイティブに動かす方法についての詳細は [[Wayland#Electron]] を見てください。
$ code --enable-features=UseOzonePlatform --ozone-platform=wayland
 
   
  +
{{Note|ユーザごとの設定を使用してる場合、{{AUR|visual-studio-code-bin}} と {{Pkg|code}} は両方 {{ic|.config/code-flags.conf}} を読み込みますが、{{Pkg|code}} は歴史的には {{ic|.config/electron18-flags.conf}} を読み込んでいました。}}
これらのオプションは、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} ファイルに追加することで、Visual Studio Code が起動するたびに自動的に適用されます。現在の vscode バイナリがビルドされている electron のバージョンによっては正確な electron バージョン用の別の設定ファイル (例: {{ic|${XDG_CONFIG_HOME}/electron13-flags.conf}}) が必要になることがあります。([[Wayland#Electron]] を参照)。
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==

2022年10月25日 (火) 21:40時点における版

Code とは、Microsoft によって開発されているクロスプラットフォームのテキストエディタで、Electron フレームワーク上でビルドされています。Visual Studio Code は、MIT ライセンス Code - OSS リポジトリの1つのバイナリディストリビューションで、Microsoft 特有のカスタマイズがなされており、プロプライエタリライセンスのもとでリリースされています。この混合ライセンスに関する詳細は、この GitHub コメントを見てください。また、MIT ライセンスの VSCodium というバイナリリリースもあり、これはコミュニティで運営されていて、テレメトリ がデフォルトで無効化されています。

インストール

Visual Studio Code は以下のフレーバが提供されています:

  • Code - OSS — 公式の Arch Linux オープンソースリリース。Open VSX を有効化する設定が同梱されています。
https://github.com/microsoft/vscode || code, code-gitAUR
  • Visual Studio Code — プロプライエタリな Microsoft ブランドのリリース。
https://code.visualstudio.com/ || visual-studio-code-binAUR, visual-studio-code-insiders-binAUR
  • VSCodium — コミュニティのオープンソースリリース。ソースコード内でテレメトリが無効化されており [1]、Open VSX の設定も同梱されています。
https://vscodium.com/ || vscodiumAUR, vscodium-binAUR, vscodium-gitAUR, vscodium-electronAUR

これらの異なるフレーバはすべて Code - OSS リポジトリからビルドされていますが、ライセンスとデフォルトの設定が異なっています。特に、プロプライエタリなビルドだけが、Microsoft の marketplace 使用と (OmniSharp C# Debugger などの) Microsoft のプロプライエタリな拡張機能の使用を許可されています。後者はハンドシェイク機構によって強制されており、迂回することはできません。"Visual Studio Code" ブランドのオープンソースビルドとプロプライエタリビルドの違いに関する詳細は、Code - OSS GitHub wiki を見てください。

拡張機能のサポート

Code の主な強みの1つとして、柔軟な API と Visual Studio Marketplace 上でホストされていますリッチな拡張エコシステムがあります。しかし、marketpace の利用規約は Microsoft ブランドのリリースのみでの使用を許可しています。そのため、Code - OSS source には、設定済みの marketplace が含まれていません。上記のオープンソースのリリースは、Open VSIX 拡張レジストリを追加しますが、拡張機能の数は劣ります。この制限を回避することは可能です。

警告: Microsoft はこの問題に直接コメントしてはいませんが、ノンブランドの Code ビルドは、利用規約で定められている "In-Scope Products and Services" (「対象の製品とサービス」)に含まれないと合理的に結論づけることができます。つまり、この行為は marketplace によって許可されていません。FS#67780 も参照してください。

既知の回避策は:

これらのパッケージは、パッケージ更新のたびにこの Github コメントにあるように product.json ファイルにパッチを適用する Pacman フックをインストールします。

ヒント: product.json の変更を実験する際にIDE をリロードするキーボードショートカットを有効化すると便利です。

使用方法

code を実行して、アプリケーションを起動します (または、他のリリースを使用している場合、code-gitAURcode-git を、vscodium-binAUR/vscodiumAUR/vscodium-gitAURcodium を実行します)。

何らかの理由で Visual Studio Code の複数のインスタンスを起動した場合、-n フラグを使用できます。

設定

code は設定を ~/.config/Code - OSS/User/settings.json に保存します。

visual-studio-code-binAUR は設定を ~/.config/Code/User/settings.json に保存します。

vscodiumAUR や関連するパッケージは設定を ~/.config/VSCodium/User/settings.json に保存します。

Code から Codium に (またはその逆) 移行する場合、設定ディレクトリはコピー/移動することができます。設定はコードベースの殆どを共有しているので、互換性があります。

統合ターミナル

View > Integrated TerminalCtrl + ` で統合ターミナルが開きます。 デフォルトでは追加の引数がない場合に Bash が使用されますが、この挙動は変更できます。 terminal.integrated.shell.linux はデフォルトのシェルを設定し、terminal.integrated.shellArgs.linux はそのシェルに渡される引数を設定します。

例:

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

外部ターミナルで統合シェルの引数を設定するとプロンプトがおかしくなる場合があります。その行を削除してこの問題を解決するか、外部ターミナルを使用してください。

外部ターミナル

Arch のデフォルトターミナルとして Terminator を使っている場合、Visual Studio Code で次のようなエラーが発生します: Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT。Visual Studio で使用するターミナルを別のターミナルに変更することで解決します (例: gnome-terminal)。

"terminal.external.linuxExec": "Your alternative terminal" で実行デバッグのときに使用するデフォルトのターミナルを設定します。

例:

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

Wayland でネイティブに実行する

Visual Studio Code は Electron を使います。VSCode を Wayland 上でネイティブに動かす方法についての詳細は Wayland#Electron を見てください。

ノート: ユーザごとの設定を使用してる場合、visual-studio-code-binAURcode は両方 .config/code-flags.conf を読み込みますが、code は歴史的には .config/electron18-flags.conf を読み込んでいました。

トラブルシューティング

KDE/Plasma でグローバルメニューが機能しない

Visual Studio Code は DBus を使用してメニューを Plasma に渡します。libdbusmenu-glib をインストールしてみてください。

アイテムをゴミ箱に移動できない

Electron アプリはデフォルトでは gio を使用してファイルを削除します。Plasma が検出されると、代わりに kioclient5 が自動的に選択されます。環境変数 ELECTRON_TRASH を設定することにより、さまざまなゴミ箱の実装を使用できます。

例えば、trash-cli を使ったファイル削除の場合。

$ ELECTRON_TRASH=trash-cli code

本稿執筆時点で、Electron は kioclient5, kioclient, trash-cli, gio (デフォルト) および gvfs-trash(非推奨)をサポートしています。詳細はこちらの documentation page で確認できます。

Unable to debug C#

If you want to debug C#.NET (using the OmniSharp extension) then you need to install the Microsoft branded release (from the AUR). This is apparently because the .NET Core debugger is only licensed to be used with official Microsoft products - see this github discussion.

When using the open-source package, debugging fails fairly quietly. The debug console will just show the initial message:

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.

For debugging with the open-source package netcoredbgAUR can be used. To run it in VS Code, add this configuration to .NET Core launch configuration of the project:

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

Unable to open .csproj with OmniSharp server, invalid Microsoft.Common.props location

mono から適切な SDK バージョンの props に変更する必要があります。

/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

Error from OmniSharp that MSBuild cannot be located

It is noted in the OmniSharp introduction that Arch Linux users should install the mono-msbuild package. Without it, you might get an error like:

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.
...

You might be able to build anyway (possibly depending whether you have mono installed too).

Omnisharp ships with its own mono version, so, if it is unable to locate the installed one, if you want to tell omnisharp to look for a "global" mono installed in your machine, put this in your settings.json:

settings.json
"omnisharp.useGlobalMono:"always"

"Retry as Sudo" での保存がうまくいかない

Microsoft は Arch パッケージのパッケージ方法 (バンドルされた Electron ではなくネイティブ) をサポートしていないため、この機能は code パッケージでは動きません。詳しくは FS#61516アップストリームのバグレポートをご確認ください。

バイナリリリースの visual-studio-code-binAUR にはこの問題はなく、この機能は動作します。

キーボードのバリアントやキーマッピングがマッピングされない

GitHub の wiki によると、

一部の Linux ウィンドウマネージャでキーボードレイアウトを切り替えても、VS Code が現在のキーボードレイアウトを読み取るために使用する低レベルの X ウィンドウ API に変更が生じません。このため、VS Code は、現在アクティブなキーボードレイアウトではなく、他の設定されたキーボードレイアウトの 1 つを読み取ることになる場合があることを意味します。PR 歓迎...

wiki によると、2 つの可能な解決策があります。

  1. setxkbmap -query が最初のキーボードレイアウトとして、VS Codeで作業したいものを返すことを確認する。
  2. "keyboard.dispatch": "keyCode" を使用し、VS Codeを再起動します。これで、VS Code がキーボードレイアウトを決定しようとするのを防ぐことができます。

Command "..." not found

In the official build of VS Code, a product.json file lists the extensions that are allowed to use certain proposed APIs accessed by extensions. However, the product.json is absent in the OSS build code. [2]

In the related issues below, some flags may be required to enable certain APIs. [3] You may either run code with these flags, or you can add the relevant entries to the extensionAllowedProposedApi section in the product.json file (code installs this to /usr/lib/code/product.json).

"extensionAllowedProposedApi": [
    "ms-vsliveshare.vsliveshare",
    "ms-vscode.node-debug",
    "ms-vscode.node-debug2"
]

This can also be resolved by installing the code-featuresAUR package, which installs a pacman hook that patches the file on every package update. Alternatively, you may also consider installing the Microsoft branded packages: visual-studio-code-binAUR, visual-studio-code-insiders-binAUR.

VS Live Share missing API

Use either the solution above by editing the product.json, or open VS Code with:

$ code --enable-proposed-api ms-vsliveshare.vsliveshare

Command 'remote-containers.openFolder' not found

Open VS Code enabling remote-containers API as commented in 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-key が暗号化されているために発生するもので、 SSH 鍵#x11-ssh-askpass のようなダイアログプロバイダや、KDE 用の ksshaskpass などの代替品をインストールすることで解決します。

注意点としては、例えば ksshaskpass の場合、VSCode に見つけてもらうために、/usr/lib/ssh/ssh-askpass からリンクする必要があることです。

# ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass

統合端末のカットオフ文字

幅が広すぎる文字は、クリッピングしてしまうことがあります。例えば、Deno のスタックトレースのイタリック体の太字など。

"terminal.integrated.rendererType" を "experimentalWebgl" に設定することで、これを回避することができます。

Waylandでの文字化け

Visual Studio Code はデフォルトで XWayland で実行されるため、HiDPI スクリーンを使用している場合、文字がぼやけてしまうことがあります。この問題を解決するには、Electron を強制的に Wayland で実行するようにしてください(#Wayland でのネイティブ実行 を参照)。

No such interface“org.freedesktop.Secret.Collection”

settings-sync#_troubleshooting-keychain-issues を参照してください。

VSCodium 使用時に Github との認証に失敗する

Github アカウントに接続する場合、このコメントにあるように URLの 「vscodium」を「vscode」に変更します。その後、識別トークンを VSCodium にコピーします。それでも失敗する場合は、Visual Studio Code docsGithub にあるように、gnome-keyring のようなキーリングをインストールするか、新しいキーリングを作成します。

一貫性のないファイルダイアログ

現在、vscodium は kde でも gtk ファイルダイアログを開きます。詳細については、Qt と GTK アプリケーションの外観の統合#Consistent file dialog を参照してください。