【问题标题】:are there ways to use VS code plugins in google cloud shell?有没有办法在谷歌云外壳中使用 VS 代码插件?
【发布时间】:2021-03-19 08:47:04
【问题描述】:

我有一些快速导航插件,例如我一直在使用的“block travel”。有没有办法在 cloud shell 中使用这些?

我想会有一些限制,但即使是一些简单的编辑器插件也可以节省大量时间。

虽然我正在使用它 - alt-D 复制一行或转置行 - 其中一些似乎丢失并且难以使用键重新映射来开始工作,至少在 shell 中。一般来说,键盘快捷键似乎被浏览器或 PWA 包装器困住了。我在 chromebook FWIW 上使用 cloudshell 作为 web 应用程序,用于各种安全项目。

【问题讨论】:

    标签: visual-studio-code monaco-editor google-cloud-shell


    【解决方案1】:

    我想出了一个涵盖您问题的两个方面的解决方案

    获得无限永久磁盘:

    您可以使用 Google Cloud Storage FUSE

    Google Cloud Storage FUSE 可让您将 GCS 存储桶作为文件夹挂载到您的 Linux 实例。通过这样做,您将获得一个“无限的”永久磁盘,并且设置起来非常简单,因为 gcsfuse 已经安装在 cloud shell 中。

    1.  Create a GCS bucket (you only need to run this once) -- replace BUCKET_NAME with any name:
    gsutil mb "gs://BUCKET_NAME/"
    
    2.  Create a local directory for mounting -- replace FOLDER_NAME with the chosen directory name:
    mkdir /home/[USER]/[FOLDER_NAME]
    chmod 777 /home/[USER]/[FOLDER_NAME]
    
    3.  Mount the bucket onto the local filesystem (note: you need to re-run this every time Cloud Shell starts)
    gcsfuse -o nonempty -file-mode=777 -dir-mode=777 --uid=1000 --debug_gcs  [BUCKET_NAME]  /home/[USER]/[FOLDER_NAME]
    

    在 Cloud Shell 中使用第三方插件:

    您可以使用public documentation 中提到的环境自定义脚本 (.customization_environment)。它允许您在启动时将其他软件包安装到 Cloud Shell 环境中。

    作为参考,下面是安装VS Code插件的步骤。

    第 1 步:

    要安装 VSCode 服务器,请在 Cloud Shell Editor 的根目录工作区中运行名为 visual_studio_code.sh 的脚本,如下所示。

    visual_studio_code.sh 文件:

    export VERSION=`curl -s https://api.github.com/repos/cdr/code-server/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")'`
    wget https://github.com/cdr/code-server/releases/download/$VERSION/code-server-3.10.2-linux-amd64.tar.gz
    tar -xvzf code-server-3.10.2-linux-amd64.tar.gz
    cd code-server-3.10.2-linux-amd64
    

    在 shell 中使用以下命令运行脚本,

    ./visual_studio_code.sh
    
    
    if getting permission denied error then run this following command in shell,
    
    chmod +x visual_studio_code.sh
    ./visual_studio_code.sh
    

    第 2 步:

    在 Cloud Shell Editor 的根目录工作区中创建一个自定义脚本,以便在启动时使用以下命令启动 VS Code Server:

    .customization_environment 文件:

    #!/bin/sh
    #.customize_environmnet run in background as root, wait for your user to initialize
    sleep 20
    sudo -u [USER]  /home/[USER]/code-server-3.10.2-linux-amd64/code-server --auth none --port 9090
    

    第 3 步:

    在端口 9090 上查看 Visual Studio Code 服务器:

    Click on Web Preview > Change Port > 9090
    

    如果收到 404 错误,请从 url 中删除“?authuser=0”。 Visual Studio Code Server 现在将在浏览器上运行!!!

    块旅行导航插件:

    要在cloud shell中拥有block travel navigation插件,请按照以下命令并在root目录下的shell中运行它们:

    wget https://github.com/efatsi/block-travel/archive/refs/tags/v1.0.0.tar.gz
    tar xzvf  v1.0.0.tar.gz
    ls
    #You will see block-travel-1.0.0  
    
    block-travel-1.0.0/keymaps/block-travel.cson --auth none --port 9090
    #You might get Permission denied if yes, then follow the next two commands else go to webport view in 9090
    
    chmod +x block-travel-1.0.0/keymaps/block-travel.cson
    block-travel-1.0.0/keymaps/block-travel.cson --auth none --port 9090
    

    在 9090 中打开 webport 视图,您将能够使用以下命令浏览 vs 代码文件:

    Alt+up for block-travel.jumpUp
    Alt+shift+up for block-travel.selectUp
    Alt+down for block-travel.jumpDown
    Alt+shift+down for block-travel.selectDown
    

    【讨论】:

    • 这是一个相当聪明的技巧。有没有办法将 VS Code 扩展添加到 Theia 插件,这样您就不需要运行其他服务器?似乎它们是从 /google/devshell/editor/theia/plugins 加载的,但是使用 .customize_environment 脚本将 vsix 包放在那里似乎不起作用。类似的事情也可能吗?
    【解决方案2】:

    Cloud Shell 通过 Theia 提供 VS Code 编辑器体验。您是否在云外壳中尝试过云代码编辑器?通过右上角的“打开编辑器”按钮显示,这将打开为您提供 VSCode 体验的云代码编辑器。您拥有编辑器中可用的所有 navigation 键。

    【讨论】:

    • 问题是如何使用第三方插件?你也知道5GB是否有上限吗?
    【解决方案3】:

    警告:这不应该被视为一个长期的解决方案,只是一个权宜之计,直到它以更简单的方式得到支持。

    这可能不是最好的想法,但它似乎确实适用于我在我的环境中尝试过的 vim 扩展。可能最好通过产品反馈提出请求以使其正式添加,但在此之前您可以按照这些步骤操作。

    1. 将 .vsix 包上传到您的 $HOME 目录。
    2. 将包解压到 /google/devshell/editor/theia/plugins 目录。此操作不会持续存在,因此您需要将该命令添加到 .customize_environment 脚本操作中。

    例如

    sudo unzip vscodevim.vsix -d /google/devshell/editor/theia/plugins/vscode-vim
    

    现在是有问题的部分。您需要安装 pslist 包以简化生活,以便您可以访问 rkill 命令。您可能还想将它添加到 .customize_environment 文件中,因为它也不会保留。

    sudo apt install pslist

    现在我们需要获取编辑器的进程 ID。目前这似乎是由一个 supervisord 命令产生的,它也产生了 tmux 部分,所以我们要从它产生的 runuser 命令中获取进程 ID(并过滤 theia 以防万一)。

    ps ax | grep runuser | grep "theia start"

    然后我们可以使用 rkill 杀死进程及其所有子进程,这将导致 supervisord 为我们重新启动它并且插件应该可用。

    sudo rkill PID_OF_GREP_OUTPUT

    我还不确定编写 rkill 命令脚本的最佳方式,因为我不知道它何时启动与 .customize_environment 执行的时间,所以现在我每次启动一个新 VM 时都会运行它.

    如果出现任何严重错误,您应该能够从菜单选项中请求重新启动虚拟机并获得新的虚拟机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2020-06-22
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多