利用 vscode 进行远程开发
基础插件
打开远程项目路径
先在 Remote Exploer 插件中选择对应服务器后,连接到服务器

然后点击打开文件夹,就是打开的是服务器的文件夹,不是本地的文件夹

在远程服务器上安装 vscode 插件
Go、Go Extension Pack、GitLens、Git History、Git Graph、MarsCode AI

对于本地已经安装的插件,点击Install In SSH:xxx就能把插件安装到远程服务器

对于本地没有安装的插件,直接查找插件,选中安装,即是安装到远程服务器

todo 关键词高亮显示
默认情况下 TODO 关键词不会高亮显示

安装 「Todo Tree」 插件,并在 setting.json 文件中添加配置,默认只会识别 TODO 和 FIXME,把 todo、tODO、ToDo 这些常见的写法也加进去
"todo-tree.general.tags": [
"BUG",
"HACK",
"TODO",
"todo",
"tODO",
"ToDo"
],
"todo-tree.highlights.defaultHighlight": {
"icon": "alert",
"type": "tag",
"foreground": "yellow",
"opacity": 50,
}
配置好后就能看到关键词已经可以高亮显示了

vscode 侧边栏可以集中查看这些标记

可能遇到的问题
git 不高亮显示修改行
从这个问题来看,chatgpt 和 deepseek 等一众 ai工具确实还有很大的提升空间,不管怎么问都没有得出来正确的原因,还得靠我自己 google 搜索。
通过 ssh remote 打开编辑项目,发现编辑文件后,没有显著高亮显示 git 修改行,这大大降低我们开发的效率,不能让我们快速看出哪些行变更了。

执行 ls -al,输出结果如下,最开头的 l 就标明当前路径是个软连接路径,把 /home/luochunhui.123__dcar 软件接到 /data00/home/luochunhui.123__dcar 文件夹,所以真实文件在 /data00/home/luochunhui.123__dcar 里面,所以需要打开这个文件夹下的项目,才会有 git 修改行被高亮显示的效果,打开真实的项目后问题解决了

参考:关于VSCode使用Remote SSH时git gutter(代码差异装饰器)无法显示的问题、VSCode不显示行号颜色标志的问题
经常自动断开远程连接
默认远程登录后一定时长不活跃会自动退出登录,这对我们调试很不方便,我们可以设置服务器的单次连接持续时间和超时次数来延长超时退登的时间。
sudo vim /etc/ssh/sshd_config
`ClientAliveInterval` 28800 // 单位是秒,表示单次连接8小时候尝试断开连接,每 8 小时往客户端发送一个空包
`ClientAliveCountMax` 3 // 最多自动重新建立连接若干次,可以改大一点,比如 8640,连续 8640 个空包后断开连接

修改完毕后,重启 ssh 服务
sudo service sshd restart
退出服务器,重新登录服务器则配置已经生效。
下面这个可配可不配
本地机器的 ~/.ssh/config 里也可以配置连接服务器的单次保活持续时间和重试次数,但是只要上面的服务器配置了,本地不配置也行
Host * # 你的服务器配置
ServerAliveInterval 60
ServerAliveCountMax 5
如果是远程连接数量过多,导致经常断连
如果建立了好多个 ssh 连接,比如超过 10 个,那么可能会有断连的问题,这时候修改服务器的 /etc/ssh/sshd_config 文件,修改或添加 MaxStartups 设置,设置为如下内容:
MaxStartups 25:30:100
第一个数字是允许的并发连接数。第二个数字是达到一定连接数后,丢弃连接的概率。第三个数字是最大允许的连接数。默认 MaxStartups 配置为:10:30:100,表示最多10 个并发连接数,超过 10 个后,会有30%概率断开连接,超过 100 个连接后,不接受任何新连接。我们把第一个数字改成 25,表示超过 25 个连接后,才断开连接
如果 ssh 总是偶尔断连,但是不知道原因
可以登录服务器后,执行 sudo tail -f /var/log/auth.log,这样会持续打印出 ssh 连接的日志,等下次某终端断连,可以查看这个日志的报错,把报错扔给 AI,AI 会分析出来断连原因
保存文件时报错Failed to save 'xx.go': Unable to write file 'vscode-remote://ssh-remote+devbox/data00/home/zhangsan/go/src/xx/xx/xx/xxx.go' (Unknown (FileSystemError): Error: ENOSPC: no space left on device, write)
错误信息 ENOSPC: no space left on device, write 说明目标磁盘已满。
为了解决这个问题,你可以按照以下几个步骤操作:
1、登录开发机,执行 df -h 查看当前系统磁盘的空间使用情况,
2、对于使用空间比较多的文件夹,可以进入文件夹执行 du -sh .[!.]* * ,会输出每个文件夹或者文件的大小,执行 rm -rf xxx 来删除不想要的文件即可,删除后可以再次执行 df -h 查看当前系统磁盘的空间使用情况
如果某个 golang 项目特别大,构建索引超出远程服务器的 cpu 或者内存,导致 OOM
goland 针对特别大的项目,GoLand 对 Go 项目的结构有更深入的理解,能够更准确地识别哪些文件需要索引,哪些可以忽略,同时GoLand 采用增量索引技术,只对发生变化的文件进行索引更新,而不是每次都重新构建整个项目的索引。所以即使很大的 golang 项目,也不会因为构建 index 而 OOM,vscode 则没有这种针对性的优化,如果项目特别大,会尝试构建整个索引,从而可能导致实例 OOM,我们可以限制索引构建资源使用来解决这个 OOM 问题
在项目的.vscode/settings.json文件或者全局设置里添加以下配置,这些配置能降低 gopls(Go 语言服务器)的资源消耗,从而防止构建索引时出现 OOM。
{
// 禁用gopls的内存预热,减少初始内存占用
"go.gopls": {
"build.memoryMode": "economy",
// 限制同时运行的分析器数量
"analysis.parallelism": 6,
// 限制最大内存使用(单位:MB)
"ui.completion.maxItems": 9000,
"ui.semanticTokens": false,
"staticcheck": true
},
// 控制gopls进程的CPU使用率
"go.toolsEnvVars": {
"GOPLS_PROFILE": "cpu=50", // 将CPU使用率限制在50%
"GOGC": "100" // 降低垃圾回收频率
},
// 避免在保存时自动构建索引
"editor.codeActionsOnSave": {
"source.organizeImports": "never"
},
// 禁用不必要的自动更新
"go.toolsManagement.autoUpdate": false
}
有 error 的 git 变更文件,文件树不显示对应的高亮颜色
settings 增加配置
// 关闭文件树中的错误/警告装饰(但保留编辑器内的错误提示)
"problems.decorations.enabled": false,
// 或仅关闭颜色装饰,保留图标提示
"problems.decorations.colors": false

浙公网安备 33010602011771号