作为 Ubuntu 20.04 上的非根超级用户,我无法从集成的 VSCode 终端打开新的 VSCode 实例
I cannot open a new VSCode instance from the integrated VSCode terminal while being a non-root superuser on Ubuntu 20.04
我使用 VSCode 通过 ssh 连接到远程服务器。
目前VSCode只显示根文件夹中的文件。
我有一个超级用户 dacomis,其中包含一个名为 cardano-v 的文件夹。
我希望能够使用 code .
或 code -n cardano-v
创建 VSCode 的新实例。新实例应该显示文件夹的内容,如第一张图片中我是 root 用户。
当我作为文件夹 cardano-v 的超级用户 dacomis 执行与上述相同的步骤时,没有任何反应。 (第二张图)
我使用 snap 在用户上安装了 VSCode。
我能做什么?
谢谢!
正如@wxz 所指出的,远程 VS 代码和“普通”VS 代码是不一样的。
TL;DR:通过 snap 安装代码后,命令 code
不再适合打开远程实例,而是尝试打开远程计算机上的 GUI 软件。
当通过 SSH 连接到远程系统时,本地系统的 vs 代码会在您的远程系统上安装所谓的 visual studio 代码服务器 。这会生成应该显示的信息并处理终端 IO 等。本地 vs 代码实例然后从远程 (ubuntu) 服务器接收所有这些信息并将其呈现为外观正常的 VS-代码实例。
在远程系统上安装代码(例如从 snap)会在您的远程系统上安装完整的 vs-code 环境。在远程系统上安装 VS-code 后,您可以将鼠标、显示器和键盘插入 Ubuntu-系统,并将 VS-code 用作 GUI 程序。这不是你想要的。遗憾的是,安装完整的 VS 代码会覆盖 code
-命令以指向新软件。
(希望)解决您的问题的可能步骤:
- 完全卸载 snap VS-code(在远程 ubuntu 机器上)
- 在本地机器上打开一个空的 vs-code 实例
- 在本地VS-code实例中打开终端,输入
code <path to open it in>
。
- 这应该根据您的本地实例版本安装 vs-code-server 版本
- 现在再次尝试从现有实例打开一个新的 vs 代码实例
编辑:如果你不想卸载 snap VS-code
您可以尝试在您的遥控器上安装 vs-code-server 并且不使用 code
-命令启动它(因为它被 GUI-VS-code 占用)。
我想我解决了我的问题。
在我用来连接到远程服务器的 Windows 机器上的 .ssh/config 文件中,我有 2 个实例试图连接到同一台服务器:
Host -serverIP-
HostName -serverIP-
User root
Host -serverIP-
HostName -serverIP-
User dacomis
我删除了这个文件的内容,我使用远程服务器扩展和命令 ssh dacomis@-serverIP-
从 VSCode 建立了与远程服务器的新连接。其中 dacomis 是我想要连接的超级用户。
现在 .ssh/config 文件只包含这个用户:
Host -serverIP-
HostName -serverIP-
User root
现在我可以连接到远程服务器并使用著名的命令 code testFolder
创建一个带有文件夹的新 VSCode 实例,默认情况下我的集成 bash 终端是打开的在 dacomis 超级用户上,而不是 root。
我使用 VSCode 通过 ssh 连接到远程服务器。
目前VSCode只显示根文件夹中的文件。
我有一个超级用户 dacomis,其中包含一个名为 cardano-v 的文件夹。
我希望能够使用 code .
或 code -n cardano-v
创建 VSCode 的新实例。新实例应该显示文件夹的内容,如第一张图片中我是 root 用户。
当我作为文件夹 cardano-v 的超级用户 dacomis 执行与上述相同的步骤时,没有任何反应。 (第二张图) 我使用 snap 在用户上安装了 VSCode。
我能做什么? 谢谢!
正如@wxz 所指出的,远程 VS 代码和“普通”VS 代码是不一样的。
TL;DR:通过 snap 安装代码后,命令 code
不再适合打开远程实例,而是尝试打开远程计算机上的 GUI 软件。
当通过 SSH 连接到远程系统时,本地系统的 vs 代码会在您的远程系统上安装所谓的 visual studio 代码服务器 。这会生成应该显示的信息并处理终端 IO 等。本地 vs 代码实例然后从远程 (ubuntu) 服务器接收所有这些信息并将其呈现为外观正常的 VS-代码实例。
在远程系统上安装代码(例如从 snap)会在您的远程系统上安装完整的 vs-code 环境。在远程系统上安装 VS-code 后,您可以将鼠标、显示器和键盘插入 Ubuntu-系统,并将 VS-code 用作 GUI 程序。这不是你想要的。遗憾的是,安装完整的 VS 代码会覆盖 code
-命令以指向新软件。
(希望)解决您的问题的可能步骤:
- 完全卸载 snap VS-code(在远程 ubuntu 机器上)
- 在本地机器上打开一个空的 vs-code 实例
- 在本地VS-code实例中打开终端,输入
code <path to open it in>
。- 这应该根据您的本地实例版本安装 vs-code-server 版本
- 现在再次尝试从现有实例打开一个新的 vs 代码实例
编辑:如果你不想卸载 snap VS-code
您可以尝试在您的遥控器上安装 vs-code-server 并且不使用 code
-命令启动它(因为它被 GUI-VS-code 占用)。
我想我解决了我的问题。 在我用来连接到远程服务器的 Windows 机器上的 .ssh/config 文件中,我有 2 个实例试图连接到同一台服务器:
Host -serverIP-
HostName -serverIP-
User root
Host -serverIP-
HostName -serverIP-
User dacomis
我删除了这个文件的内容,我使用远程服务器扩展和命令 ssh dacomis@-serverIP-
从 VSCode 建立了与远程服务器的新连接。其中 dacomis 是我想要连接的超级用户。
现在 .ssh/config 文件只包含这个用户:
Host -serverIP-
HostName -serverIP-
User root
现在我可以连接到远程服务器并使用著名的命令 code testFolder
创建一个带有文件夹的新 VSCode 实例,默认情况下我的集成 bash 终端是打开的在 dacomis 超级用户上,而不是 root。