我正在使用来自我的笔记本电脑(Linux)的VSCode远程SSH,以便在Linux主机上处理项目。
如果我在VSCode中打开内部终端,我可以通过执行code some_file.txt
来从主机中打开文件。 我经常希望能够从未起源于VSCode的终端中执行相同操作。
是否有任何方式可以在连接到标准(非VSCode内部)终端时打开VSCode服务器中的文件?
我正在使用来自我的笔记本电脑(Linux)的VSCode远程SSH,以便在Linux主机上处理项目。
如果我在VSCode中打开内部终端,我可以通过执行code some_file.txt
来从主机中打开文件。 我经常希望能够从未起源于VSCode的终端中执行相同操作。
是否有任何方式可以在连接到标准(非VSCode内部)终端时打开VSCode服务器中的文件?
我从另一个StackOverflow答案了解到,如果您打开集成终端并找到VSCODE_IPC_HOOK_CLI
环境变量,并在非集成终端中将其设置为相同的值,然后从代码服务器安装目录~/.vscode-server
运行code
,它就可以工作了。那篇文章没有提到您可以在~/.vscode-server
目录中安装多个版本。当前的安装可以从VSCODE_GIT_ASKPASS_MODE
变量中提取,看起来像这样:
$ echo $VSCODE_GIT_ASKPASS_NODE
/home/<user>/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/node
只需去掉node
并添加bin
,然后运行类似以下命令:
$ /home/<user>/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/bin/code myfile.txt
编辑: 这是一个小脚本,它将连接终端到最新创建的 vscode 窗口。
❯ cat ~/.local/bin/connect_vscode.sh
export PATH="${HOME}/.vscode-server/bin/$(ls -t1 ${HOME}/.vscode-server/bin | head -n 1)/bin:${PATH}"
export VSCODE_IPC_HOOK_CLI="$(ls -t1 /run/user/$(id -u)/vscode-ipc-* | head -n 1)"
# Tell tmux to set these variables for new windows/panes.
# Remove if you don't use tmux
tmux setenv PATH "$PATH"
tmux setenv VSCODE_IPC_HOOK_CLI "$VSCODE_IPC_HOOK_CLI"
这个线程中的所有答案都不适用于我(由于更高版本的VS-Code改变了其内部路径,而我正在运行预览版)。
我在这里分享一个类似/相同的问题和我的解决方案:
希望能对您有所帮助。
C. R. Oldham的 答案 涵盖了为什么/如何进行的技术细节。
如果您想要一个作为~/.bash_profile
中alias
工作的一行代码:
# Open file in most recently-connected remote VSCode session.
alias code=$'VSCODE_IPC_HOOK_CLI=/run/user/`id -u`/$(ls -lt /run/user/`id -u`/ | egrep \.sock$ | head -1 | awk \'END {print $NF}\') `ls -lt ~/.vscode-server/bin/** | fgrep bin/remote-cli/code | head -1 | awk \'END {print $NF}\'`'
ls -lt ~/.vscode-server/bin/** | fgrep bin/remote-cli/code
section of the statement above produces zero results. I would suggest this:
alias code="${HOME}/.vscode-server/bin/$(ls -t1 ${HOME}/.vscode-server/bin | head -n 1)/bin/remote-cli/code"
- Brian Horakh
/run/user/$(id -u)/vscode-ipc-*
现在可能是/tmp/vscode-ipc-*
。这对于我在 VSCode 1.64.1 上是这样的。 - posita