genie与 vs code集成
上一级页面:index-wsl
前言
在瓶子中找不到VScode遥控器的命令“code”?这是一个解决方案
在genie bottle内运行用于 WSL 的 VS code服务器
从 WSL 运行code
时,VS Code 服务器始终在瓶子外部启动,即使在瓶子内调用命令code
也是如此。在某些情况下,这可能会很不方便,例如无法在 VS Code 控制台中执行命令systemctl
。
这是我目前用来在瓶子内运行VS Code服务器的hack
。
转到%USERPROFILE%\.vscode\extensions\
(在 Windows 上)并找到名称ms-vscode-remote.remote-wsl-*
的文件夹。(*
通常为版本号)
这里可以存储多个版本的remote-wsl扩展。选择对应最新版本的文件夹。
然后导航到scripts
文件夹。该文件夹下应该有三个文件,分别名为 wslServer.sh
、wslCode.sh
和 wslDownload.sh
。
在 wslServer.sh
中,文件前部(第8行)加上以下行:
# Check if inside bottle
if command -v genie > /dev/null && ! genie -b > /dev/null; then
# Rerun current script inside bottle
exec genie -c "$0" "$@"
fi
然后执行wsl --shutdown
并重新启动 VS Code,
下次启动VS Code服务器时,VS Code服务器将运行在瓶子内,并且systemd
的PID 变更为PID 1
。
pgrep -l systemd
现在有一个自动化的脚本,自动修补 wslServer.sh
进入wsl
cd ~/src
git clonegit@gist.github.com:c28e6405fbd9cc1f853bc99465773f59.git
这个脚本应当在shell层启动,因为它依赖于bash
sudo chmod -R +rwx c28e6405fbd9cc1f853bc99465773f59
sudo mkdir /opt/scripts
sudo mv c28e6405fbd9cc1f853bc99465773f59 fix-vscode-script
sudo mv fix-vscode-script /opt/scripts
然后将这个脚本添加到启动脚本(/etc/zsh/zprofile
或者/etc/profile
)
# 自动patch
. /opt/scripts/fix-vscode-script/fix-vscode.sh
在瓶子中找不到VS code的命令“code”?这是一个解决方案
如果类似或zsh: command not found: code
Command 'code' not found, but can be installed with:
在系统化的瓶子中出现,而在瓶子外面,该命令code
完美地打开VScode,
那么您可以将此代码附加到您的.zprofile
或.profile
中。
code() {
/mnt/c/Users/<YOUR USERNAME>/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code "$@"
}
YOUR USERNAME
替换为您拥有的用户名。
VScode在设备之间可能有不同的路径,所以自己检查一下你的vs code路径
在此之后,VScode应该没有问题了!
参考、引用、致谢
在精灵瓶内运行用于 WSL 的 VS 代码服务器 ·arkane-systems/genie Wiki (github.com)
在瓶子中找不到VScode遥控器的命令“代码”?这是一个解决方案 ·arkane-systems/genie Wiki (github.com)