Sublime Text搭配Rmate可连接打开远程文件但无法正常保存
Sublime Text 搭配 rmate 远端文件修改不回写故障排查方案
按以下优先级逐步排查即可解决问题:
- 校验本地端口监听状态
在笔记本本地终端执行ss -tulpn | grep 52698,确认Sublime Text的rsub插件正在监听127.0.0.1:52698端口。该故障最常见诱因是Sublime Text自动更新后rsub插件偶发加载失效,表面上可以正常接收rmate发起的文件拉取请求打开文件,但保存时的回写通道并未正常建立,这种情况直接重装rsub插件后重启Sublime即可恢复。 - 清理本地临时目录异常权限与残留套接字
你看到的/tmp/raspberrypi-gkgq9l/是rmate拉取远端文件到本地的临时缓存目录,执行ls -ld /tmp/raspberrypi-gkgq9l/确认当前登录用户对该目录持有完整读写权限,如果目录属主变成root,执行sudo chown -R $USER:$USER /tmp/raspberrypi-*修正权限;同时执行rm -f /tmp/Sublime\ Text.*.sock清理所有残留的失效套接字文件,套接字残留会直接阻断保存时的回写链路。 - 校验树莓派端rmate版本与配置
登录树莓派执行rmate --version,如果近期通过apt升级过系统源内的rmate,大概率是源内的旧分叉版本和新版rsub插件存在兼容问题,直接卸载系统自带rmate版本,下载官方最新版rmate脚本放到/usr/local/bin/目录下并赋予可执行权限即可。
执行echo $RMATE_PORT检查环境变量配置,如果输出值不为空且不是52698,在当前用户的~/.bashrc中新增一行export RMATE_PORT=52698,执行source ~/.bashrc生效即可。 - 验证SSH反向隧道连通性
你当前使用的反向隧道连接命令是ssh -R 52698:127.0.0.1:52698 username@192.168.0.2,登录树莓派后执行telnet 127.0.0.1 52698,连通成功会返回Escape character is '^]'的提示。如果连不通,先kill掉本地所有残留的ssh相关进程,重新执行你设置的pilogin别名建立隧道即可,注意不要同时建立多个相同端口映射的SSH反向隧道,多隧道冲突会导致回写请求被转发到失效链路上。 - 校验Sublime端插件配置
打开Sublime Text,进入Preferences -> Package Settings -> rsub -> Settings - User,确认配置中没有修改默认监听端口,最小可用配置如下:
如果本地安装了多个远程编辑类插件(比如RemoteSubl、SFTP),先临时禁用其他同类插件,多插件抢占端口也会导致文件可拉取但无法回写。{ "port": 52698 }
所有操作完成后,先完全关闭Sublime Text,清理掉本地
/tmp目录下所有和raspberrypi、Sublime Text相关的临时目录、套接字文件,重新启动Sublime,重新建立SSH连接后再用rmate打开文件测试。注意文件保存后等待1-2秒再在树莓派端执行cat查看,小文件回写存在1秒以内的正常延迟,不需要刚按完保存就立刻切终端校验。
内容的提问来源于stack exchange,提问作者didnotreadthemanual
相关产品推荐
相关产品推荐

