Visual Studio Code
Visual Studio Code是一個跨平台,免費,開源 (使用MIT協議)的文本編輯器,由微軟使用JavaScript和TypeScript開發。它構建於Electron框架之上,並且極具擴展性。可以在編輯器自帶的應用商店,或者從 https://marketplace.visualstudio.com/VSCode 中安裝擴展。儘管Visual Studio Code是開源軟件,但是微軟提供一個專有版本(使用最終用戶許可協議授權),被用作visual-studio-code-binAURAUR軟件包的基礎(有關混合授權的說明,請參閱此 GitHub評論)。
安裝[編輯 | 編輯原始碼]
下列安裝包提供 VSCode:
- code包(通過官方源碼編譯的開源版本)
- code-gitAUR(開發中的最新開源版本)
- visual-studio-code-binAUR(微軟官方版本,專有軟件)
- visual-studio-code-insiders-binAUR(微軟官方版本,每日更新)
- vscodium-binAUR(社區驅動的完全開源的 VSCode 版本,不帶微軟附屬和遙測功能,二進制包)
- vscodiumAUR (社區驅動的完全開源的 VSCode 版本,不帶微軟附屬和遙測功能,最新發行版)
- vscodium-gitAUR (社區驅動的完全開源的 VSCode 版本,不帶微軟附屬和遙測功能,最新的開發版)
微軟ptvsd (Python Tools for Visual Studio Debug) 伺服器/模塊可用於python-ptvsdAUR。
使用[編輯 | 編輯原始碼]
對於以下版本,運行code
即可啟動:
對於以下版本,運行code-git
即可啟動:
- code-gitAUR
對於以下版本,運行codium
即可啟動:
- vscodium-binAUR
如果你想打開多個實例,可以使用-n
選項。
配置[編輯 | 編輯原始碼]
code包 的配置文件保存在 ~/.config/Code - OSS/User/settings.json
。
visual-studio-code-binAUR 的配置文件保存在 ~/.config/Code/User/settings.json
。
集成終端[編輯 | 編輯原始碼]
點擊查看 > 集成終端 或使用快捷鍵 Ctrl + `
打開集成終端。
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"]
您可能會收到奇怪的提示,這是由於將集成終端參數設置成了外部終端。要解決此問題,請移除該句,或換用外部終端。
外部終端[編輯 | 編輯原始碼]
如果你使用Terminator作為Arch的默認終端,而且在Visual Studio Code中遇到一個錯誤Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT
,可以換另一個終端(比如,gnome-terminal包)供Visual Studio Code使用。
"terminal.external.linuxExec": "Yours alternative terminal"
用於設置調試默認終端。
例子:
~/.config/Code/User/settings.json
"terminal.external.linuxExec": "gnome-terminal"
故障排除[編輯 | 編輯原始碼]
KDE/Plasma 全局菜單失效[編輯 | 編輯原始碼]
Visual Studio Code使用DBus傳遞菜單,嘗試安裝 libdbusmenu-glib包
無法將內容移至回收站[編輯 | 編輯原始碼]
默認狀態下,Electron使用gio
刪除文件。不同的回收站實現可以通過設置ELECTRON_TRASH
環境變量來使用。
例如,要在Plasma下刪除文件:
$ ELECTRON_TRASH=kioclient5 code
這樣一來,Electron就支持了kioclient5
,kioclient
,trash-cli
,gio
(默認)和gvfs-trash
(不推薦)。詳情可在此查看documentation page。
C#無法調試[編輯 | 編輯原始碼]
您若想調試C#.NET(使用OmniSharp擴展),則需要通過AUR安裝微軟專版。原因是.NET Core調試器僅授權官方微軟產品使用,參見this github discussion。
若使用開源軟件包,調試器失效時不會有太多信息。調試台僅會提示初始信息:
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.
要使用開源軟件包進行調試,可以選擇netcoredbgAUR。要在VS Code中運行,請在項目的.NET Core啟動配置中添加這個配置:
./.vscode/launch.json
"configurations": [ { ... "pipeTransport": { "pipeCwd": "${workspaceFolder}", "pipeProgram": "/usr/bin/bash", "pipeArgs": ["-c"], "debuggerPath": "/usr/bin/netcoredbg" } ...
無法使用OmniSharp server打開.csproj,Microsoft.Common.props位置無效[編輯 | 編輯原始碼]
您必須從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
OmniSharp錯誤,MSBuild無法定位[編輯 | 編輯原始碼]
OmniSharp introduction提到了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. ...
不過您依然有可能成功組建——則很可能取決於您是否也安裝了mono包。
使用「Retry as Sudo」保存無效[編輯 | 編輯原始碼]
這個特性在code包軟件包中無效,因為微軟不支持Arch軟件包的打包方式(原生的而非捆綁的Electron)。詳情參見FS#61516和upstream bug report。
二進制發行版visual-studio-code-binAUR沒有這個問題,該特性在此版本中有效。
鍵盤變體與鍵位映射不相符[編輯 | 編輯原始碼]
- Switching keyboard layouts under some Linux window managers does not result in a change in the low level X window APIs VS Code uses to read the current keyboard layout. This means that VS Code ends up sometimes reading one of the other configured keyboard layouts and not the current active one. PR welcome...
根據wiki頁面,有兩種解決方案:
- 確保
setxkbmap -query
返回的第一個鍵盤佈局是你想在VS Code中使用的。 - 在設置中使用
"keyboard.dispatch": "keyCode"
,並重啟VS Code。這將徹底阻止VS Code確定您的鍵盤佈局。
指令「...」未找到[編輯 | 編輯原始碼]
在VS Coded官方編譯版本中,product.json
文件列出了所有能夠使用某些特定API的擴展。然而,product.json
在OSS版code包中是缺失的。 [1]
在下列相關問題中,需要開啟某些開關(flags)來啟用某些API:[2]。您也可以附上這些開關來運行code包,或將相關入口添加至product.json
文件的extensionAllowedProposedApi
部分(code包將其安裝在了/usr/lib/code/product.json
)。
"extensionAllowedProposedApi": [ "ms-vsliveshare.vsliveshare", "ms-vscode.node-debug", "ms-vscode.node-debug2" ]
再或者,您也可以考慮安裝微軟專版軟件包visual-studio-code-binAUR或visual-studio-code-insiders-binAUR.
[編輯 | 編輯原始碼]
要麼使用上述解決方案編輯product.json
,要麼使用如下命令打開VS Code:
$ code --enable-proposed-api ms-vsliveshare.vsliveshare
指令'remote-containers.openFolder'未找到[編輯 | 編輯原始碼]
如FS#63374所述,打開VS Code時啟用remote-containers API:
$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers
指令'GitHub Pull Requests: Configure Remotes...'導致錯誤(指令'pr.configureRemotes'未找到)[編輯 | 編輯原始碼]
使用如下命令打開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導致的,可以通過安裝對話提供器(dialogue provider)解決,例如SSH keys#x11-ssh-askpass,或列出的替代品如KDE的ksshaskpass包。
有一點需要注意,您需要將其從/usr/lib/ssh/ssh-askpass
連接,以使VS Code能夠找到它。以ksshaskpass為例:
# ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass