Можно ли использовать команду code в терминале SSH, чтобы открыть VS Code на локальном компьютере с расширением SSH?

Что мне нравится в VS Code, так это то, что когда я использую терминал в WSL, я могу запустить code file.txt, и он откроет этот файл с VS Code на моем локальном компьютере, используя удаленное расширение WSL.

Можно ли сделать то же самое с SSH? То есть, если я подключился к удаленному хосту по SSH, можно ли настроить так, чтобы запуск code file.txt открывал VS Code на моем локальном компьютере, подключенном через удаленное расширение SSH, чтобы открыть этот файл?


person jediahkatz    schedule 04.06.2020    source источник
comment
Возможно, это не совсем то, что вы ищете, но есть расширение Visual Studio Code, которое позволяет вам редактировать файлы с удаленного сервера внутри Visual Studio Code локально. marketplace.visualstudio.com/   -  person Jonathan Wang    schedule 07.06.2020


Ответы (4)


Да вроде как. С терминала VSCode выполните команду env | grep VSCODE_IPC_HOOK_CLI, затем скопируйте и вставьте эту строку с экспортом в свой терминал 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

(Могут быть более элегантные способы. И вам все равно нужно запустить хотя бы 1 терминал в вашем удаленном сеансе VSCode.)

person Daniel    schedule 30.04.2021
comment
Меняется ли VSCODE_IPC_HOOK_CLI? Мне нужно добавить env | grep в bashrc? И я должен использовать псевдоним этого кода .vscode-server? - person Fred Guth; 30.04.2021

Я нашел намного лучший и простой ответ благодаря этому сообщению.

Просто создайте новый файл сценария с именем 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} $@
person Lazy Ren    schedule 10.06.2021

Тебе не нужно ничего делать. VSCode автоматически устанавливает путь / PATH к code в переменной среды path / PATH в зависимости от вашей оболочки. См. этот ответ. Возможно, вы перезаписываете свой путь / PATH, как и я. Я случайно перезаписал path в ~/.cshrc и PATH в ~/.bashrc и столкнулся с той же проблемой. После исправления я могу запустить code в командной строке. which code возвращает расположение команды.

Пока я не потратил время, чтобы понять это, я использовал два метода, упомянутых ниже. Оба из них работали для меня в bash; вы можете изменить его для своей оболочки по своему усмотрению. Но на самом деле исправьте свой путь / PATH, а не используйте эти методы.

  1. Добавление местоположения code в PATH в ~/.bashrc

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

OR

  1. Установка псевдонима code в ~/.bashrc

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


Подробнее о path и PATH здесь и здесь

person Praveen Lobo    schedule 22.06.2021

Используйте приведенные ниже команды, чтобы открыть папку или файл на удаленном терминале. Примечание: 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
person Bharath    schedule 07.06.2020