vscode 可以不同场景启用不同扩展吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kongkongye
V2EX    Visual Studio Code

vscode 可以不同场景启用不同扩展吗?

  •  
  •   kongkongye
    kongkongye 2022-07-20 08:41:26 +08:00 6899 次点击
    这是一个创建于 1179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于 vscode 比较通用,多个不同的场景都会用到,比如开发 python ,lua ,js 等,在不同场景下想使用不同的扩展,比如开发 lua 时启用 lua 那套扩展,其他场景下启用 lua 相关扩展不是浪费内存资源吗,却发现 vscode 的软件设计好像不是这样子的,那如果用的场景多了,岂不是装满了各种扩展,软件里各种图表一堆,每次却只需要用到一小部分。

    我想能不能在 docker 里启用 vscode server ,然后 server 端指定一套扩展,vscode 连到哪个 server 就启用哪套扩展,但好像行不通,大家有啥建议吗?

    27 条回复    2024-04-03 02:21:13 +08:00
    sarices
        1
    sarices  
       2022-07-20 08:44:58 +08:00
    可以按照工作区禁用扩展
    callv
        2
    callv  
       2022-07-20 08:45:39 +08:00 via iPhone
    可以控制扩展工作区可用。
    Teragion
        3
    Teragion  
       2022-07-20 08:46:30 +08:00
    可以进工作区之后右键单个扩展选择 Enable/Disable (Workspace)
    liuzhaowei55
        4
    liuzhaowei55  
       2022-07-20 08:46:39 +08:00 via iPhone   1
    拓展可以直接安装到指定工作区或者项目中
    kongkongye
        5
    kongkongye  
    OP
       2022-07-20 09:03:14 +08:00
    @Teragion 这个工作区禁用启用扩展功能我是知道的,但这样实际操作起来还是挺麻烦的。
    Teragion
        6
    Teragion  
       2022-07-20 09:04:35 +08:00
    @kongkongye 为什么麻烦?这个设置应该是永久保存到工作区的,新项目处理一次就可以了。还是说你想不同终端连到 server 自动设置?
    kongkongye
        7
    kongkongye  
    OP
       2022-07-20 09:05:32 +08:00
    我都恨不得本地装多个 vscode ,一个改名叫 vscode-js ,一个改名叫 vscode-python ,不同的 vscode 点开就是不同的扩展集,这样一个 vscode 我可以当作不同的 ide 来用,而不是所有扩展都装一个 ide 里面。
    ragnaroks
        8
    ragnaroks  
       2022-07-20 09:07:22 +08:00
    这种需求可以用多个容器实例来解决,不同的环境装不同的插件
    houshengzi
        9
    houshengzi  
       2022-07-20 09:07:59 +08:00   2
    我用 Extension Manager 创建自己的扩展包,不同开发语言切换不同的扩展包
    MengiNo
        10
    MengiNo  
       2022-07-20 09:11:17 +08:00 via iPhone
    @kongkongye 既然可以使用容器,建议每个项目建立一个容器。等于全部在容器内开发,插件装在容器内跟着容器走。这样可以通过 devcontainer.json 文件控制各个容器内装不同的扩展,也方便迁移。
    kongkongye
        11
    kongkongye  
    OP
       2022-07-20 09:11:39 +08:00
    @houshengzi 这个扩展用的人好少,是你自己开发的?我想要的基本就是这个扩展的功能。如果 vscode 后续官方更新能直接支持这种功能就更好了。
    kongkongye
        12
    kongkongye  
    OP
       2022-07-20 09:17:17 +08:00
    @MengiNo 我试试 docker 这个开发环境功能
    houshengzi
        13
    houshengzi  
       2022-07-20 09:23:09 +08:00
    @kongkongye 不是我开发的,我也是偶然发现这个扩展。它基本满足我切换不同语言对应扩展包的需求
    fpure
        14
    fpure  
       2022-07-20 09:28:23 +08:00
    我也有同样的需求,希望 vscode 出一个多租户的方案,不是 workspace
    witherzuo
        15
    witherzuo  
       2022-07-20 09:31:45 +08:00   1
    VS Code 在最新的 Insiders 内部预览版中新增了一个“设置配置”的实验性功能,目前需要在设置中手动打开才能体验,看功能描述应该可以符合你的需求

    https://code.visualstudio.com/updates/v1_69#_settings-profiles
    Sod
        16
    Sod  
       2022-07-20 09:34:30 +08:00   1
    根据我粗浅的 VSCode 插件开发经验,插件是有"Activation Events"这个属性的,插件开发的时候可以设置。这个属性的作用就是决定一个插件什么时候激活,只有符合设置的条件,比如打开了 xx 类型文件、处于 xx 视图的时候,对应插件才会激活。并不是你安装了一个插件,每次打开 VSCode ,这个插件就直接激活了,没有激活的插件应该是不占用内存的。

    "Activation Events"属性你可以在每个插件详情页的"Feature Contributions"页面拉到底看到,都是写明了的。
    changnet
        17
    changnet  
       2022-07-20 09:34:56 +08:00
    语言相关的,没有打开对应的文件,那个插件是不会激活的。比如你装了一个 lua 插件,通常是需要打开 lua 文件才会激活这个插件的,除非那个插件的作者没写好,直接在打开 vscode 的时候就激活了

    不是语言相关的,暂时不知道要怎么弄
    CodeCodeStudy
        18
    CodeCodeStudy  
       2022-07-20 09:51:44 +08:00
    @kongkongye #7 可以修改成 portable 版本的,下载 zip ,在根目录下新建 data 目录即可,可以把可执行文件 Coder.exe 修改其他文件名,这样在任务管理器就可以区分不同的进程了

    官方文档

    https://code.visualstudio.com/docs/editor/portable
    stoluoyu
        19
    stoluoyu  
       2022-07-20 09:52:58 +08:00
    可以在项目下搞个 .vscode 文件夹试试比如: https://github.com/vueuse/vueuse/tree/main/.vscode
    stoluoyu
        20
    stoluoyu  
       2022-07-20 10:04:00 +08:00
    然后我查了下,找到个插件 https://marketplace.visualstudio.com/items?itemName=ireknazm.vscode-presets 可以保存 workspace 的设置
    Curtion
        21
    Curtion  
       2022-07-20 10:09:16 +08:00
    其实扩展有这些 API 的,只有到检测到加载相应的文件时才会激活扩展,即使你装了 python 扩展,只要不打开 py 文件,python 的扩展就不会启动。 如果嫌扩展不按照这种流程工作,可以用工作区,其实工作区唯一的毛病就是不会同步,否则就完美了
    jason94
        22
    jason94  
       2022-07-20 10:36:44 +08:00
    可以试试我之前写的工具,创建独立的用户文件夹,实现插件的隔离。
    https://github.com/zenghongtu/multi-vscode-opener

    `npx multi-vscode-opener` 直接使用
    TravisMtg
        23
    TravisMtg  
       2022-07-20 11:57:29 +08:00 via iPhone
    之前有相同的需求想用配置文件启用插件,在 github 上找到了有别人提的 issue ,open 很多年了官方还是没做出来
    yolee599
        24
    yolee599  
       2022-07-20 12:42:13 +08:00 via Android
    我也有这样的需求,即使是每次打开 vscode 的时候手动选择定义好的插件方案也行啊
    YuTengjing
        25
    YuTengjing  
       2022-07-20 17:16:52 +08:00
    kouhe3
        26
    kouhe3  
       2022-08-15 22:10:10 +08:00
    shuimuyian
        27
    shuimuyian  
       2024-04-03 02:21:13 +08:00 via iPhone
    确实,激活事件可以按条件激活插件
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2584 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:03 PVG 23:03 LAX 08:03 JFK 11:03
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86