rmate不支持目录遍历、通配符或批量打开,仅接受单个明确路径;编辑后需手动触发回写并保存,否则内容不落盘;推荐用sftp插件映射/tmp/目录实现可靠编辑。

直接用 rmate 打开远程临时文件,但要注意它不支持 /tmp/xxx”这类路径的自动补全或目录遍历
<p><code>rmate</code></p>
只接受明确的、已存在的(或可创建的)单个文件路径。比如你在远程服务器上运行 rmate /tmp/temp.json,Sublime Text 会拉取该文件内容到本地编辑,但不会帮你列出 <code>/tmp/目录下有哪些临时文件。如果你不知道完整路径,不能靠 Tab 补全,也不能用通配符如 <code>rmate /tmp/*.log。<ul>
<li><code>find /tmp -name "*.tmp" -type f -mmin -10 -print -quit | xargs rmate 会失败——<code>rmate只认一个参数,多于一个就报错
too many arguments
rmate /tmp/a/b/c.txt 在 <code>/tmp/a/b 不存在时会报错 <code>No such file or k-directory
正确做法是先用 ls -t /tmp | head -5 真实看到最近的临时文件名,再手敲完整路径执行 <h3>
<code>rmate -w 编辑后手动触发回写,否则改完就丢rmate 的
-w 参数表示“阻塞等待保存后才退出”,这是你唯一能感知“已保存”的信号。但它**不会把内容写回远程磁盘**,只是让命令卡住等你点 Ctrl+S。一旦退出终端,这个动作就断了,远程文件仍为原始内容。
- 编辑完成后,必须手动运行一次
rmate -w /path/to/file,然后立刻按 Ctrl+S → Sublime 内容才会被发回远程内存缓冲区 - 之后还得手动执行
cp /tmp/filename /tmp/filename.bak 或类似操作,否则关掉SSH连接后内容即丢(除非你用的是有持久化临时文件的系统,但默认不是) - 若需真正落盘,建议配合
cp /tmp/file /tmp/file.saved && chmod 600 /tmp/file.saved 这类命令,不要依赖 rmate 自动落盘
想直接编辑 /tmp/ 下刚生成的临时文件?优先考虑用 <code>SFTP 插件映射 <code>/tmp/ 目录(推荐)
<p>SFTP插件可以将远程 <code>/tmp/ 映射为本地项目文件夹,只要配置里设好 <code>"remote_path": "/tmp/",启用 <code>"sync_down_on_open": true和<code>"upload_on_save": true,就能像编辑本地文件一样打开、修改、保存。
- 配置中不要写
user: root(除非你真用root登录),普通用户也能访问自己 <code>/tmp/ 下的文件
- 注意权限:若远程文件属主是其他用户且无读写权限,
sync_down_on_open会静默失败,Sublime里显示空文件,此时要先 <code>chmod 600 /tmp/xxx再试
- SFTP 插件对
/tmp/这种临时目录兼容性比 rmate 套路更稳,尤其适合调试脚本生成的临时输出
为什么不用 rsub 编辑 <code>/tmp/ 文件?
user: root(除非你真用root登录),普通用户也能访问自己 <code>/tmp/ 下的文件
sync_down_on_open会静默失败,Sublime里显示空文件,此时要先 <code>chmod 600 /tmp/xxx再试
/tmp/这种临时目录兼容性比 rmate 套路更稳,尤其适合调试脚本生成的临时输出
rsub 编辑 <code>/tmp/ 文件?
rsub 和 rmate 是两个不同工具:前者是 Sublime 主动连远程服务,后者是远程命令推文件给 Sublime。而 <code>rsub 要求远程跑一个长期运行的 Ruby 进程,而 <code>/tmp/ 下的文件常随reboot或tmpwatch被清空,对应的 rsub 进程也容易被 kill -9 干掉;而且 <code>rsub 启动后默认监听 <code>127.0.0.1:52698,不支持绑定到 <code>/tmp/ 这种路径,只能指定端口,跟临时文件本身无关。
- 如果你已经部署了 rsub,它其实根本不关心你要编辑什么路径,它只管转发 TCP 连接
rsub /tmp/foo.txt 这种用法不存在,它是通过 SSH 隧道建立通道后,由 Sublime GUI 触发调用,不是命令行传路径- 所以编辑
/tmp/ 文件时,选 <code>rmate 或 SFTP 更直接,绕过 rsub 的额外部署成本
最易忽略的一点:所有方案都依赖远程文件实际存在且可读。如果脚本刚生成 /tmp/out.log,但还没 flush 到磁盘(比如用 Python 的 print(..., flush=False)),<code>rmate 就可能打开空文件。遇到这种情况,先 <code>sync; ls -l /tmp/out.log 确认大小非零再操作。这比纠结用哪个工具更关键。











