Wla*_*lad 7 windows ubuntu atom-editor visual-studio-code windows-subsystem-for-linux
我已经通过下载运行安装程序在 Windows 10 上本地安装了 Atom 编辑器。现在我启动 WSL Ubuntu 发行版,并希望从那里使用命令atom .
或 VSCode(visual-studio-code)从那里启动 Atom(原子编辑器)与命令code .
Atom 启动,但不在执行命令的目录中,而是显示来自C:\\Windows
. 此外,Ubuntu WSL 终端显示以下错误消息:
atom .
grep: /etc/wsl.conf: No such file or directory
"\\wsl$\Ubuntu-18.04\home\wlad\projects\udemy\flask-bootcamp\Flask-Bootcamp-master"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Run Code Online (Sandbox Code Playgroud)
对不起,它是德语本地化的,但它说的是 UNC-paths are not supported
(还没有测试过 VSCode)
那么如何从 WSL 中使用安装在 Windows 10 上的 Atom 或 VSCode 编辑器?
**更新** 截至今天(2020 年 4 月),有一种更好的方法可以在带有 WSL、虚拟机 (VM) 甚至容器的 Windows 上使用 VSCode。查看VSCode 的远程开发插件。
在“已知问题”部分在博客文章@Wlad 提到的
\n\n\n\n\n访问 Linux 文件被视为与访问网络资源相同,并且任何访问网络资源的规则仍然适用,例如:使用 CMD 时,cd \\\\wsl$\\Ubuntu\\home 将不起作用(因为 CMD 不起作用)支持 UNC 路径作为当前目录),但是复制 \\\\wsl$\\Ubuntu\\home\\somefile.txt C:\\dev\\ 将起作用
\n
因此,Atom 可能会使用cmd.exe
命令行(可能是某个批处理文件)来启动自身,并且考虑到以下事实:cmd.exe
无法将网络资源作为当前目录(WSL 目录被视为)打开,因此当您尝试启动 Atom 时会出现失败来自 WSL 外壳。
实际上,在 VS Code 中,有一个更好的解决方案可以直接从 WSL shell 启动 VS Code:VS Code Remote
。
您可以采取以下步骤使 VS Code 能够直接从 WSL shell\xef\xbc\x9a 启动
\n\nRemote - WSL
在 Windows 端安装 VS Code 的扩展;code .
WSL shell 时,将自动安装 VS Code 远程服务器,并且 VS Code 将很快启动。通过使用VS Code Remote
,您不仅可以在 VS Code 中打开目录,还可以在许多其他方面受益:例如,您可以使用 WSL shell 作为 VS Code 中的集成 shell,直接从 VS Code 运行 WSL 中的程序。
这是 的官方文档VS Code Remote - WSL
。
我创建了一个简短的脚本来处理我最常用的三个 atom 命令(我将 Ubuntu 与 WSL 一起使用):
atom
atom .
atom RELATIVE_PATH_FILE
这个脚本没有优化,我相信很多人会发现边缘情况,但它为我完成了工作。要使用它,只需将它放入~/.local/bin/atom
并通过运行chmod +x ~/.local/bin/atom
. 您可能需要重新启动 shell 才能~/.local/bin
将其添加到您的路径中。为了稍微简化一些事情,我将 ubuntu 安装的 WSL 网络驱动器映射到U:
.
#!/bin/bash
if [ -z $1 ]; then
pushd /mnt/c > /dev/null
/mnt/c/Windows/System32/cmd.exe /c "atom"
else
[[ $1 = "." ]] && path=$(pwd) || path=$(realpath $1)
winPath=$(echo "U:$path" | sed -e 's/\//\\/g')
pushd /mnt/c > /dev/null
/mnt/c/Windows/System32/cmd.exe /c "atom $winPath"
fi
popd > /dev/null
Run Code Online (Sandbox Code Playgroud)
该脚本执行几个简单的步骤。首先,如果没有命令行参数,它会简单地调用 atom usingcmd.exe
不带参数。如果命令行参数是.
,则获取当前目录的路径,否则,它使用 获取给定文件的绝对路径realpath
。路径从 POSIX 转换为 Windows 格式,使用sed
before 调用 atom using cmd.exe
,但使用 path 参数。
该pushd
和popd
命令只是为了摆脱不支持有关UNC路径恼人的警告信息:
...
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5740 次 |
最近记录: |