rmate仅支持单文件编辑且不自动同步回服务器,需手动执行rmate -w或配合scp/rsync;依赖ruby/python环境及52698端口反向隧道,不支持批量打开或多文件并发编辑。

rmate 不能直接打开远程目录,只支持单个文件;它也不是 Sublime Text 原生功能,而是依赖 Ruby 或 Python 实现的独立命令行工具,必须在远程服务器上正确安装并建立反向端口隧道才能工作。
rmate 安装失败或命令未找到
常见原因是远程服务器没装 Ruby(Ruby 版)或没装 rmate-python(Python 版),或者安装后没加到 $PATH。
- Ruby 版:运行
gem install rmate,确认which rmate能输出路径,否则需手动软链或改$PATH - Python 版:推荐用
pip install rmate,但注意部分系统默认是pip3,应执行pip3 install rmate并检查rmate --version - 手动安装(无 gem/pip 权限时):
wget https://raw.githubusercontent.com/aurora/rmate/master/rmate -O /usr/local/bin/rmate && chmod +x /usr/local/bin/rmate - 验证是否可用:
rmate --help应正常输出,否则后续所有操作都会卡在“找不到命令”
ssh 连接后 rmate 打不开本地 Sublime
根本原因是本地 Sublime 没监听 52698 端口,或 SSH 隧道没打通——rmate 本质是让远程服务器把文件内容通过 TCP 推给本地编辑器。
- 确保本地已安装并启用 Sublime Text 的
rmate插件(不是 VS Code 的 Remote-SSH 插件) - 启动 SSH 连接时必须带
-R 52698:localhost:52698参数,例如:ssh -R 52698:localhost:52698 user@host - 如果用
~/.ssh/config配置了 Host 别名,记得加上:RemoteForward 52698 localhost:52698 - 防火墙或杀毒软件可能拦截
52698端口,临时关闭测试;macOS 上还需确认“安全性与隐私→防火墙→允许传入连接”里有 Sublime Text
rmate 编辑保存后文件不自动同步回服务器
rmate 本身不负责上传,它只是把远程文件“拉下来编辑”,保存动作发生在本地,**不会自动写回远程**。这是设计使然,不是 bug。
- 编辑完必须手动执行
rmate -w filename(-w表示 wait,即阻塞等待保存后才退出),然后在远程终端里再运行一次rmate filename才能刷新内容 - 更实用的做法是配合
scp或rsync手动回传:scp /path/to/local/file user@host:/path/to/remote/file - 若需要自动同步,应换用 SFTP 插件方案:安装 Sublime 的
SFTP包,配置sftp-config.json并开启"upload_on_save": true - 注意
rmate不支持upload_on_save这类配置项,所有参数都是一次性生效的命令行选项
用 find 批量打开多个远程文件会失败
find . -name "*.log" -exec rmate {} \; 看似合理,实际会因端口复用冲突失败——每个 rmate 实例都试图连同一个本地端口 52698,而 Sublime 只接受一个连接。
- 不要用
find ... -exec rmate批量调用,Sublime 不支持并发多文件编辑通道 - 真要批量处理,先用
find生成文件列表:find . -name "*.py" > files.txt,再在本地用脚本逐个触发ssh host "rmate path"(仍需保持同一 SSH 连接复用) - 更稳妥的方式是用 SFTP 插件映射整个远程目录,然后在 Sublime 侧边栏里点开任意文件——这才是真正支持多文件、实时同步的路径
- 记住:
rmate是“单文件临时编辑”工具,不是“远程项目管理器”
rmate 最容易被忽略的一点:它完全不感知你的项目结构或 Git 状态,也不校验文件编码、行尾符、权限变更。一旦你习惯用它改配置、修日志,就很容易绕过版本控制直接覆盖线上文件——这种操作在生产环境里没有二次确认机制。











