VSCode 远程开发:本地编辑,服务器运行

米阳 2022-9-17 4 9/17

改服务器上的代码,以前要么用 vim(不熟),要么改完 scp 传(容易覆盖错)。VSCode 的 Remote-SSH 插件解决了这个问题:本地界面、服务器文件、服务器终端,三者一体。

装什么

本地 VSCode 装扩展 Remote - SSH。服务器不用装 VSCode Server,第一次连接时会自动下载到 ~/.vscode-server。

连上去

Ctrl+Shift+P → Remote-SSH: Connect to Host → 输入 root@1.2.3.4。或者写进 ~/.ssh/config 方便复用:

Host blog
    HostName 1.2.3.4
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa

配好之后直接选 Host 名字就行。用密钥登录比密码好,省得每次输。

打开项目

连上之后 File → Open Folder,选 /www/blog-ai。这时候文件树是服务器上的,改动直接落盘,不需要同步。

终端也是服务器上的,Ctrl+~ 打开就能跑:

cd /www/blog-ai && .venv/bin/python app/serve.py

我常用的几个配置

.vscode/settings.json:

{
  "python.defaultInterpreterPath": "/www/blog-ai/.venv/bin/python",
  "files.exclude": {"**/__pycache__": true, "**/*.pyc": true},
  "editor.formatOnSave": true,
  "python.linting.enabled": true
}

指定解释器很重要,否则 Pylance 会用服务器的系统 Python 做补全,虚拟环境里的包全部标红。

几个坑

  1. 磁盘占用:~/.vscode-server 会越积越大,时不时清一下旧版本目录,能省几百 M。
  2. 断线:网络不稳时连接容易掉,正在跑的命令会断。长任务用 tmux 或 nohup 包一层,别指望远程终端一直在。
  3. 端口转发:本地调试 web 服务,VSCode 会自动把服务器端口转发到本地,浏览器访问 localhost:8800 就能看到服务器上跑的服务。这个功能比开公网端口安全得多。
  4. 中文输入法:某些版本远程终端里中文输入有问题,装个终端插件或者换用本地终端连 ssh。

值不值得

如果只是偶尔改一个配置文件,vim 更快。但如果是持续开发、要跳转定义、要跑测试、要看日志,远程开发体验明显好。我现在基本不在本地跑项目了,环境跟线上一模一样,少了一整类“本地能跑线上不行”的问题。

- THE END -

米阳

9月17日14:45

最后修改:2022年9月17日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论