Visual Studio Code 前些日子发了个新版( https://code.visualstudio.com/updates/v1_43#_remote-development ),其中我最喜欢的更新就是 Remote Development 支持 macOS & Windows 作为主机了。好像很少有人注意这个功能,所以和大家分享一下。
简单来说通过 Remote Development 套件,你可以把实际的开发运行环境(比如 Webpack, MySQL,Docker )放到一台远程的机器上,本地只用运行编辑器就可以了。可以很明显降低系统资源。
举我自己的例子,日常会写点网站前后端代码。在本机运行整套开发环境时需要跑一个 Docker for macOS,里面还运行着数据库、各种构建和测试命令啥的,内存占用经常飙到几个 GB 。我的 13 寸 MacBook Pro 压力颇大,经常跑起来连浏览器的 DevTools 都打不开。
现在呢,我把整套开发环境都放到了家里的一台台式机上,代码和运行环境都在上面。MacBook Pro 上的 VS Code 通过 SSH 连到台式机上进行日常开发。这样 MacBook Pro 只用跑 VS Code 和 Chrome 就可以了,再也不用担心风扇呼呼响了。
通过几天的实践,我发现使用这种开发模式还有两个额外好处:
无缝的加班体验:如果你有多台开发机(比如公司一台家里一台),可能会遇到公司的代码写了一半需要回家。这时如果开发环境是运行在第三台机器上的话,回家之后就可以无缝接着写代码了!代码分支、各种依赖版本和数据库里的数据内容都是一模一样的。
甚至想买 MacBook Air 和 Surface 了:因为开发环境占用的资源极少,所以轻薄本也可以作为生产力工具了。
“飞机上想写代码怎么办?”...
1 ybw 2020-03-22 15:01:16 +08:00 via Android ![]() 个人不是很喜欢在飞机上写代码。 |
2 remon 2020-03-22 15:06:40 +08:00 via Android code-server,或者等 vscode 团队完善 Web 功能,只需要 chrome 和网络 |
![]() | 4 luin OP @remon 本来特别想试试 code-server,这样就能买个 iPad Pro 写代码了!后来想想发现跑不了 DevTools... |
![]() | 5 cabing 2020-03-22 15:14:06 +08:00 mark 下。我尝试下。 |
6 nightwitch 2020-03-22 15:14:40 +08:00 ![]() 以前用的时候,遇到跳板就歇菜了。现在不知道能不能。 |
7 SuperAllen 2020-03-22 15:21:04 +08:00 via Android mark 一下,有机会尝试 |
8 genesislive 2020-03-22 15:21:53 +08:00 via iPhone 家里的台式机,还需要公网 IP ? |
![]() | 9 felix021 2020-03-22 15:26:05 +08:00 一直在用 vscode 的 sftp 插件,自动同步改动到远程,配好了感觉也差不了太多 |
![]() | 10 luin OP @genesislive 对,没有的话也可以考虑租一台服务器。 |
![]() | 11 zhidian 2020-03-22 15:45:57 +08:00 希望有 connect to remote docker container 的功能 |
![]() | 12 rayhy 2020-03-22 15:52:14 +08:00 延迟怎么办啊,需要自己的机器和服务器连接非常稳定吧?内网当然没问题,就是不知道 VPS 这种咋样了。 |
![]() | 13 tigerstudent 2020-03-22 15:54:17 +08:00 @rayhy 写个代码还要担心卡帧吗。。只有读取和保存的时候通网就好了,延迟高点也无所谓啊 |
![]() | 14 mrgeneral 2020-03-22 15:54:20 +08:00 最近我也再看这块的,但是还不准备全部迁移,目前在代码分析、debug 这块还比不上 ide,大点的项目还是得走本地 docker 的老路子。公司的乞丐版 pro,是真不行。 docker + git 本身是能解决多设备开发环境迁移问题的,但是受限于机器性能使得实际体验不太好,VS Code 也只是一种折衷。 |
16 nicevar 2020-03-22 16:02:19 +08:00 直接在 vps 上弄了个 code-server,直接浏览器打开,用起来更舒服 |
17 seanxx 2020-03-22 16:09:54 +08:00 不可控,外接因素太多,给你关个插排你就只能干瞪眼了 |
18 a852695 2020-03-22 16:14:04 +08:00 在我厂基本上都有 dev 开发机的,可以 vsc 连接过去,但是现在弄了个跳板机,貌似嗝屁了,跳板机每次都要输入新密码,有什么好办法可以跳过吗 |
![]() | 19 nutting 2020-03-22 16:14:04 +08:00 vscode 啥时候写 java 也很爽就好了 |
![]() | 20 luin OP @rayhy 不太用担心延迟,写代码时 VS Code 有 buffer 所以即使延迟高体验也不会有影响。不会像 SSH 到服务器上用 Vim 那样一卡一卡的 |
![]() | 21 lix7 2020-03-22 16:14:48 +08:00 一个跳板机全都玩完...云开发这种东西还是得网络策略足够好。而且基本上用了 vscode 这个,工具链也就都被绑死在这上边了。 |
![]() | 22 aydd2004 2020-03-22 16:15:58 +08:00 via iPad 好吧 家里的 Mac mini 可以派上大用场了 |
![]() | 24 nightan 2020-03-22 16:19:33 +08:00 vscode 确实很好用,只是它的 python 插件的缩进判定比 pycharm 还差一截……pycharm 自动对齐缩进程度太好用 但是……但是……我很喜欢 vscode 的各种高亮主题和字体效果,用起来比 pycharm 舒服很多很多……远程插件也是,现在代码都跑在公司开发环境的开发机上,总要家里一套虚拟环境,公司电脑一套虚拟环境,拿 Onedrive 去同步…… 虽然没有 pycharm 那种智能的缩进,但我还有游标卡尺!(逃 |
![]() | 25 agagega 2020-03-22 16:20:01 +08:00 via iPhone 快登陆 iPad 吧,GitHub 上呼声也挺高了 |
![]() | 26 luin OP @agagega 可以试试 code-server,和新的 iPad Pro 键盘结合得应该还不错。就是 iPad 调试网页估计不太方便了 |
![]() | 27 cabing 2020-03-22 16:49:16 +08:00 ssh 只能登录到公司的跳板机。需要扫描二维码。 这个怎么破。 |
![]() | 28 cabing 2020-03-22 16:55:17 +08:00 一直用 intellij 系列的 IDE,vscode 不太熟悉。 |
![]() | 29 tourist2018 2020-03-22 17:01:38 +08:00 有跳板机无解 这个只能公司运维把连接这块做了 如果弄好了网络 vscode 真心好用 |
30 feYAN7 2020-03-22 17:35:15 +08:00 mark 一下,等我配了黑苹果再来试一下 |
![]() | 31 nnqijiu 2020-03-22 17:37:24 +08:00 这个得内网穿透才能远程吧?没公网 IP 就是鸡肋 |
![]() | 32 cabing 2020-03-22 17:39:13 +08:00 @tourist2018 是有点无解:) |
![]() | 33 wweir 2020-03-22 17:51:09 +08:00 via Android 我已经把开发环境完全搬到了阿里云上,一个月十几块钱即可享受如此无缝的开发体验,值! 唯一不爽的是,我的 MacBook Pro 的性能真是浪费了。 PS:zram 搭配 zstd 算法,真是解决内存不足的好帮手,性能比 swap 好太多了 |
![]() | 34 jessun1990 2020-03-22 18:19:53 +08:00 ![]() 我的方案是:上班的台式机不关机,只关屏幕。 通过 https://github.com/sshuttle/sshuttle 这个项目,把 ssh 远程连接转成 vpn 。这样就可以在自己家里的电脑上实现了内网环境。 由于开发都是用 neovim 编辑器,所以远程开发不是事儿。 |
35 Nadao 2020-03-22 18:31:13 +08:00 和直接远程桌面到台式机上做有什么分别? |
![]() | 36 visitant 2020-03-22 18:45:58 +08:00 |
37 stevenhawking 2020-03-22 18:50:17 +08:00 量子写代码, 也许可以离线同步 |
![]() | 38 HoganTR 2020-03-22 19:04:08 +08:00 via Android 以前也很长时间用这种方式进行开发,用是真的香。不过有时就会莫名连不了()...放弃了 |
39 chempotato 2020-03-22 19:09:39 +08:00 @wweir 买的什么配置的服务器? |
![]() | 40 wweir 2020-03-22 19:13:57 +08:00 via Android @chempotato 1c1g20g 的竞价实例,性能还算靠谱,就内存差点 |
![]() | 41 aydd2004 2020-03-22 19:15:36 +08:00 已经用上了 分分钟搞定 微软果真牛叉 期待再出个 xcode 的替代品 |
![]() | 42 1069401249 2020-03-22 19:31:41 +08:00 把笔记本的工作目录远程挂载到台式机也可以吧 |
![]() | 43 outtime 2020-03-22 19:38:13 +08:00 一直在用 coding 的 cloud studio |
![]() | 44 luckyrayyy 2020-03-22 19:42:36 +08:00 coding 的那个还挺好用,比我想象的要快很多。 |
![]() | 45 loading 2020-03-22 19:43:22 +08:00 via Android ![]() |
&bsp; 46 bigShrimp8577 2020-03-22 19:58:26 +08:00 ![]() @Nadao 同问,还有前端怎么办,这个代码是同步了,难道要开放 ip 到外网访问? |
47 masquerader 2020-03-22 21:41:34 +08:00 这个好像有点炒冷饭了啊,远程开发 19 年中时就支持了。 |
![]() | 48 yafoo 2020-03-22 21:45:21 +08:00 via Android @outtime @luckyrayyy coding 那个你们用着怎么样?以前老版的功能不多,但是很稳定,升级新版编辑器后,官方提供的服务一天只能用 3 个小时。连接自己服务器,连接总是中断,简直把我搞崩溃了,断连接断的没法用。 |
49 yEhwG10ZJa83067x 2020-03-22 22:09:27 +08:00 家里的台式机万一出点问题,连不上去不是很麻烦吗 |
![]() | 50 Newyorkcity 2020-03-22 22:24:17 +08:00 能问下你的阿里云什么配置么?有好的开发体验的话 2G 内存的学生机不够用吧 |
51 donnior 2020-03-22 22:25:09 +08:00 我有一台机器在阿里云上,用 vscode 的 remote 工作,配合 port forward ;个人觉得很 nice |
![]() | 52 greenhat233 2020-03-22 22:26:38 +08:00 via Android 写点小东西还可以,项目就比较吃力了,生产力还是 ide |
![]() | 53 luin OP @masquerader 最近支持的 macO 和 Windows 作为 host,之前只有 Linux 。不过 Insiders 确实前两个月时就能用了。 |
![]() | 54 luin OP ![]() @Newyorkcity 我的主机是 2015 年中的 iMac,8GB 内存。也确实想租阿里云的,不过发现 8GB 的机型还有些小贵,不如把 iMac 利用起来了 |
![]() | 55 mageemeng 2020-03-22 23:04:32 +08:00 「无缝的加班体验」到底是优点还是缺点 |
![]() | 57 chiu 2020-03-22 23:34:48 +08:00 via Android 使用过一段时间,个人主要 C/C++项目,组里只有我一人使用 vscode 1. 项目稍大的话,远程查找跳转等功能和本地体验有差距; 2. 上周同事问我,服务器上进程 microsoftvscode 是什么,CPU 占用 100%了...... |
![]() | 59 lix7 2020-03-22 23:46:18 +08:00 @visitant 跳板机的目的就是隔开网络区域,一个 ProxyCommand 又给干穿了就违背跳板机的初衷了吧。至少我司是明确规定禁止私自打通各个区域的,一般能通的都默认通,不能通的打通就是违规。 |
![]() | 61 Rorysky 2020-03-23 00:10:28 +08:00 不太明白,这样还要再搞一台性能强劲的服务器? 除非公司行为,我觉得个人不适合维护两套设备 |
![]() | 62 UnknownR 2020-03-23 00:23:53 +08:00 登录 ipad 是真的期待,还有 12 寸 mac 是死的真惨,生不逢时,要是能出新版就好了,现在远程类的 app 这么多 |
![]() | 63 Chingim 2020-03-23 00:47:05 +08:00 via Android ![]() 前端开发劝退,这样一来 devserver 跑在远端,服务器还要开一堆端口,而且服务器带宽还要够大,不然一堆为未压缩的资源+source map,能把你耐心磨没 |
![]() | 64 Chingim 2020-03-23 00:51:39 +08:00 via Android 我觉得用几个月再出来安利比较好,才几天的体验,很多坑都没遇到 |
![]() | 65 hallDrawnel 2020-03-23 01:16:39 +08:00 现在在我厂新来的人基本就是用这个,很爽,公司专门配了支持的云开发机镜像。 |
![]() | 67 GG668v26Fd55CP5W 2020-03-23 06:07:19 +08:00 via iPhone 去年体验过一阵,对跑服务端的网络和性能要求比较高,如果经常移动办公,需要适应不同环境的网络,不太稳定,放弃了。 |
![]() | 68 imycc 2020-03-23 06:41:03 +08:00 已经用了一年了,win10 + vscode remote + 本地虚拟机。 公司有办公网 vpn,把虚拟机的网络模式设置为桥接直接,不需要端口代理就可以直接访问虚拟机的端口(否则多套开发环境一个个做映射到主机,要累死) 用 vim 编程有四五年了,一直眼馋 vscode 但是没有合适的方案,remote development 出来之后就逐步切换过去了。可惜 vsocde 的 vim 模式支持并不完善,很多之前配置的快捷键要迁移过来也很麻烦(还要考虑冲突),感觉重新适应 vscode 的快捷键了。 |
![]() | 69 coderEOS 2020-03-23 07:05:09 +08:00 via Android 不错一会试下,之前都是用自己写的 scp 的脚本 |
![]() | 70 secsilm 2020-03-23 08:07:49 +08:00 via Android |
![]() | 72 janxin 2020-03-23 08:23:47 +08:00 问题来了,远程机器怎么来 |
![]() | 73 WildCat 2020-03-23 08:37:22 +08:00 |
![]() | 74 LokiSharp 2020-03-23 08:52:55 +08:00 我觉得还是 IDEA 自带的远程功能用起来顺手点。。。 |
75 mshadow 2020-03-23 09:12:29 +08:00 已经习惯 JB 全家桶了,我还是老老实实把主力开发机配置弄高一点吧。。 |
![]() | 76 coderEOS 2020-03-23 09:56:34 +08:00 试了下,秀的一批,速度真的快。直接安装**Remote - ssh**就行了 但是还是有一点不满足需求,因为本地会连一些设备,全在远程上搞,本地没环境,一些东西就用不了。 |
![]() | 77 CommandZi 2020-03-23 10:10:07 +08:00 如果远程机器用 Windows,本地用 MacBook Air,那么 control + F\B\A\E\N\P,这些快捷键都有效吗? |
![]() | 78 collery 2020-03-23 10:15:31 +08:00 感觉需要公网比较麻烦,网络的稳定性是个大问题。 另外一般公司开发,基本环境用公司的就行了。感觉用处不是很大。当然,我是写后端的。。。 |
![]() | 79 azkaban 2020-03-23 10:38:49 +08:00 32 内存,啥东西都开一堆,毫无感觉 |
![]() | 80 SPACELAN 2020-03-23 10:42:59 +08:00 我司已经基于这功能在内推广云 IDE 了[手动狗头] |
![]() | 81 justin2018 2020-03-23 10:49:05 +08:00 跟 JetBrains 家的 有啥区别 目前用 JetBrains 在~ |
![]() | 85 Tonni 2020-03-23 13:13:02 +08:00 很早之前就在期待了,beta 的时候就一直在用,很好用。 |
87 wazon 2020-03-23 13:56:22 +08:00 单论 Python 的话,与 Jupyter Notebook / Lab 这种纯网页的 IDE 相比,有什么值得一提的优缺点? |
88 xuanloe 2020-03-23 14:24:13 +08:00 我 WebStorm 远程都是 GoodSync 通过 SSH 同步代码(双向拉取最新更新代码) frp 远程桌面 或者 本地接口 (一般远程桌面) 一直没找到前端比较好的远程方案 |
![]() | 89 sbilly 2020-03-23 15:12:47 +08:00 1.4 以后的 vscode 已经支持跑在 web 上,直接用浏览器 |
92 coolcoffee 2020-03-23 16:29:47 +08:00 @justin2018 @xuanloe JetBrains 家的应该只是文件同步吧,运算量还是在本地的。 vscode 会要求在远端安装对应的环境依赖,例如 golang 项目就需要在服务端安装一堆依赖,不然就算终端能跑,智能提示也显示不出来。 |
![]() | 93 justin2018 2020-03-23 16:32:24 +08:00 @coolcoffee 原来如此 下午已经在体验中了 还在摸索在 |
![]() | 94 huamiao 2020-03-23 16:34:53 +08:00 |
![]() | 95 l1nyanm1ng 2020-03-23 17:08:24 +08:00 我配置了一下午,发现转发端口后 react 并没有因为修改文件而实时刷新啊,是不是还要做什么配置 |
96 kylix 2020-03-23 17:25:25 +08:00 去年试过一次,远程机器 linux 虚拟机,4G 内存,一下子就耗光了,没兴趣了~~ C++ |
![]() | 97 mifly 2020-03-23 17:26:18 +08:00 via Android 使用 x11 forwarding 可以达到类似的效果 用台机装 linux,性能强大,linux 开通 x11-forwarding,在笔记本上用 mobaxterm 登录台机的 linux,然后直接执行 idea 的启动脚本,就可以在笔记本使用台机资源来开发了 |
![]() | 98 l1nyanm1ng 2020-03-23 17:50:15 +08:00 @l1nyanm1ng 自己贴个条,原来是自己忘了开启 file watch 了,算了,我的丐中丐云服务器一下子也被榨干了,瞬间索然无味了,还是老老实实用本地开发了 |
![]() | 99 stevenkang 2020-03-23 18:19:34 +08:00 云开发目前最麻烦的就是网络延迟吧,同城电信公网 IP,远程都会有时候很卡。 之前体验过云网吧,那个延迟真的超级低,不知道是啥技术。 延迟低的情况下,云开发真是超级爽。 (另外淘宝上几十块钱买个远程开关机模块,电脑也不用一直开着了)。 (再另外,家里面电信送的盒子搭建 MySQL,测试用的数据库也有了)。 |
![]() | 100 oska874 2020-03-23 18:23:12 +08:00 对 c/c++ 不友好,函数跳转无解。 |