【问题标题】:Is it possible to use the "code" command in SSH'ed terminal to open VS Code on local machine with SSH extension?是否可以在 SSH 终端中使用“code”命令在具有 SSH 扩展名的本地计算机上打开 VS Code?
【发布时间】:2020-09-23 19:38:36
【问题描述】:

我喜欢 VS Code 的一点是,当我在 WSL 中使用终端时,我可以运行 code file.txt,它会使用 WSL 远程扩展在我的本地使用 VS Code 打开该文件。

是否可以使用 SSH 做类似的事情?即,如果我通过 SSH 连接到远程主机,是否可以进行设置以便运行 code file.txt 将在我的本地计算机上打开 VS Code,通过远程 SSH 扩展连接以打开该文件?

【问题讨论】:

标签: ssh visual-studio-code vscode-remote


【解决方案1】:

你不应该做任何事情。 VSCode 会根据你的 shell 自动将 path/PATH 设置为 path/PATH 环境变量中的code。见this response。你可能会像我一样覆盖你的路径/路径。我不小心覆盖了~/.cshrc 中的path~/.bashrc 中的PATH,并且遇到了同样的问题。修复后,我可以在命令行上运行codewhich code 返回命令的位置。

在我花时间弄清楚之前,我一直在使用下面提到的两种方法。两者都在bash 中为我工作;您可以根据需要为您的外壳修改它。但要真正修复你的路径/PATH,而不是使用这些方法。

  1. code的位置添加到~/.bashrc中的PATH

    export PATH=${VSCODE_GIT_ASKPASS_NODE%/*}/bin:$PATH

  1. ~/.bashrc中将别名设置为code

    alias code="${VSCODE_GIT_ASKPASS_NODE%/*}/bin/code"


更多关于 pathPATH herehere 的信息

【讨论】:

  • 在我的机器中,alias 将是 alias code="${VSCODE_GIT_ASKPASS_NODE%/*}/bin/remove-cli/code"
【解决方案2】:

感谢this post,我找到了更好更简单的答案。

只需使用以下内容创建名为code 的新脚本文件并将文件放在$PATH 的任何文件夹下。 (echo $PATH 看看你可以使用哪些文件夹)

#! /usr/bin/env zsh

local script=$(echo ~/.vscode-server/bin/*/bin/code(*oc[1]N))
if [[ -z ${script} ]]
then
    echo "VSCode remote script not found"
    exit 1
fi
local socket=$(echo /run/user/$UID/vscode-ipc-*.sock(=oc[1]N))
if [[ -z ${socket} ]]
then
    echo "VSCode IPC socket not found"
    exit 1
fi
export VSCODE_IPC_HOOK_CLI=${socket}
echo $script $@
${script} $@

【讨论】:

  • 非常有用!
【解决方案3】:

是的,有点。 从 VSCode 终端运行命令 环境 | grep VSCODE_IPC_HOOK_CLI 然后将该行与 export 复制并粘贴到您的 ssh 终端中。 之后,您应该可以从 ~/.vscode-server/bin/XXX/bin 目录运行代码了。

VSCode 终端

SSH 终端

更新:

您可以使用 .bashrc 和 .profile 自动执行此操作,将 IPC 代码放入临时文件中,并在您进行 ssh 登录时获取该文件。

例如,这对我有用...

将此附加到 ~/.bashrc

#
if [ "$VSCODE_IPC_HOOK_CLI" != "" ]; then
cat >$HOME/.vscode_env.sh <<EOF
#
if [ "\$VSCODE_IPC_HOOK_CLI" = "" ]; then
export VSCODE_IPC_HOOK_CLI="$VSCODE_IPC_HOOK_CLI"
alias code="${VSCODE_GIT_ASKPASS_NODE%/*}/bin/code"
fi
EOF
fi

并将其附加到您的 ~/.profile

[ -f $HOME/.vscode_env.sh ] && . $HOME/.vscode_env.sh

(可能有更优雅的方法。您仍然必须在远程 VSCode 会话中启动至少 1 个终端。)

【讨论】:

  • VSCODE_IPC_HOOK_CLI 有变化吗?我需要在 bashrc 中添加 'env|grep' 吗?我应该给这个 .vscode-server 代码加上别名吗?
【解决方案4】:

使用以下命令在远程终端上打开文件夹或文件。 注意:vscode-server 必须已经安装在远程主机上(如果您已经连接到它,那就是这样)。此外,必须为文件或文件夹指定绝对路径。使用-n 在新窗口中启动,-r 重复使用同一窗口。

code --folder-uri <absolute-path>
code --file-uri <absolute-path-file-name>

例子:

code -r --folder-uri /home/myscripts/src           
code -n --file-uri /home/myscripts/src/math/sample.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2022-01-09
    • 2022-10-14
    相关资源
    最近更新 更多