作为 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-命令以指向新软件。

(希望)解决您的问题的可能步骤:

  1. 完全卸载 snap VS-code(在远程 ubuntu 机器上)
  2. 在本地机器上打开一个空的 vs-code 实例
  3. 在本地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。