Възможно ли е да се използва командата за код в SSH'ed терминал за отваряне на VS Code на локална машина с SSH разширение?

Нещо, което харесвам във VS Code е, че когато използвам терминал в WSL, мога да стартирам code file.txt и той ще отвори този файл с VS Code на моя локален, използвайки отдалеченото WSL разширение.

Възможно ли е да се направи подобно нещо с SSH? Т.е., ако съм свързан с SSH към отдалечен хост, възможно ли е да настроя нещата така, че стартирането на code file.txt да отваря VS код на моята локална машина, свързана чрез отдалеченото 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-сървър код? - 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