能,remote-ftp 通过本地编辑+手动或自动同步实现远程文件修改,保存后才上传,不支持实时双写;其核心是“本地优先+显式同步”,无远程状态快照与diff合并。

remote-ftp 插件能直接编辑远程文件吗?
能,但不是“实时双写”——它靠本地编辑 + 手动或自动同步实现。你改的是本地副本,保存后才触发上传;远程文件不会在 Atom 里被直接打开并写入磁盘。这是设计使然,不是 bug。
-
Sync local -> remote 是显式上传:右键本地文件选这个,才把改完的内容发到服务器
Sync local 是显式下载:右键远程文件选这个,才把服务器最新版拉下来覆盖本地
- 如果配置了
"watch": [".*"] 和 "watchTimeout": 500,改保存后会自动上传,但仍有约 500ms 延迟,且不支持断网重试
- 别指望像 VS Code 的 Remote-SSH 那样加载整个远程工作区——remote-ftp 的“Remote”侧边栏只是个只读文件树(除右键操作外),不能双击直接打开远程路径
.ftpconfig 里哪些字段必须填、哪些可以删?
最小可用配置只要 5 项:"protocol"、"host"、"port"、"user"、"remote"。其余大多可删或留空,尤其别乱填 "pass"——明文存密码极不安全。
- 用 SSH 密钥登录时,删掉
"pass",加上 "privatekey": "/path/to/id_rsa" 和可选的 "passphrase"
-
"promptForPass": true 比硬编码密码靠谱得多;设为 false 又没配密钥,连接必失败
-
"local" 字段多数情况不用填:插件默认把当前项目根目录当本地同步起点
-
"ignorehost": true 在自签名证书或内网 IP 场景下常需开启,否则 SFTP 连接可能卡在 host key verify
为什么连得上却看不到远程文件?常见卡点
最常见原因不是网络不通,而是路径权限或协议误配。SFTP 不是 FTP,"protocol": "ftp" 却连着 22 端口,或反过来,都会静默失败。
- 先在终端手动验证连通性:
ssh -p <code>port user@host 能登录,说明 SSH 层通;再试 sftp -P <code>port user@host 看能否列目录
-
"remote" 必须是绝对路径,比如 "/home/deploy/app",不能写成 "app" 或 "./app"
- 用户对
"remote" 目录没有 ls 权限(如仅 r-x 无 r--)会导致侧边栏空白,但无报错提示
- Atom 控制台(
View → Developer → Toggle Developer Tools)里搜 remote-ftp,能看到真实错误,比如 Permission denied (publickey) 或 Connection timed out
同步时文件没更新?检查 watch 和保存行为
很多人以为 Ctrl+S 就等于“已同步”,其实只有两种情况才会触发上传:一是手动右键选 Sync local -> remote,二是配置了 "watch" 且文件匹配规则、保存动作被监听到。
-
"watch": ["*.js", "*.py"] 只监听两类后缀;想全监听写 [".*"],但注意这也会监听 .git、.ftpconfig 等隐藏文件,可能引发循环同步
- Atom 默认关闭“保存时自动聚焦到编辑器”,如果你在终端切屏、Alt+Tab 切走,再回来 Ctrl+S,有时会因焦点丢失导致 watch 失效
- 编辑器里打开的文件,若路径不在当前项目根目录下(比如从桌面拖进来),即使在同一窗口,也不会被 watch 监控
Sync local -> remote 是显式上传:右键本地文件选这个,才把改完的内容发到服务器Sync local 是显式下载:右键远程文件选这个,才把服务器最新版拉下来覆盖本地"watch": [".*"] 和 "watchTimeout": 500,改保存后会自动上传,但仍有约 500ms 延迟,且不支持断网重试"protocol"、"host"、"port"、"user"、"remote"。其余大多可删或留空,尤其别乱填 "pass"——明文存密码极不安全。- 用 SSH 密钥登录时,删掉
"pass",加上"privatekey": "/path/to/id_rsa"和可选的"passphrase" -
"promptForPass": true比硬编码密码靠谱得多;设为false又没配密钥,连接必失败 -
"local"字段多数情况不用填:插件默认把当前项目根目录当本地同步起点 -
"ignorehost": true在自签名证书或内网 IP 场景下常需开启,否则 SFTP 连接可能卡在 host key verify
为什么连得上却看不到远程文件?常见卡点
最常见原因不是网络不通,而是路径权限或协议误配。SFTP 不是 FTP,"protocol": "ftp" 却连着 22 端口,或反过来,都会静默失败。
- 先在终端手动验证连通性:
ssh -p <code>port user@host 能登录,说明 SSH 层通;再试 sftp -P <code>port user@host 看能否列目录
-
"remote" 必须是绝对路径,比如 "/home/deploy/app",不能写成 "app" 或 "./app"
- 用户对
"remote" 目录没有 ls 权限(如仅 r-x 无 r--)会导致侧边栏空白,但无报错提示
- Atom 控制台(
View → Developer → Toggle Developer Tools)里搜 remote-ftp,能看到真实错误,比如 Permission denied (publickey) 或 Connection timed out
同步时文件没更新?检查 watch 和保存行为
很多人以为 Ctrl+S 就等于“已同步”,其实只有两种情况才会触发上传:一是手动右键选 Sync local -> remote,二是配置了 "watch" 且文件匹配规则、保存动作被监听到。
-
"watch": ["*.js", "*.py"] 只监听两类后缀;想全监听写 [".*"],但注意这也会监听 .git、.ftpconfig 等隐藏文件,可能引发循环同步
- Atom 默认关闭“保存时自动聚焦到编辑器”,如果你在终端切屏、Alt+Tab 切走,再回来 Ctrl+S,有时会因焦点丢失导致 watch 失效
- 编辑器里打开的文件,若路径不在当前项目根目录下(比如从桌面拖进来),即使在同一窗口,也不会被 watch 监控
ssh -p <code>port user@host 能登录,说明 SSH 层通;再试 sftp -P <code>port user@host 看能否列目录"remote" 必须是绝对路径,比如 "/home/deploy/app",不能写成 "app" 或 "./app"
"remote" 目录没有 ls 权限(如仅 r-x 无 r--)会导致侧边栏空白,但无报错提示View → Developer → Toggle Developer Tools)里搜 remote-ftp,能看到真实错误,比如 Permission denied (publickey) 或 Connection timed out
Sync local -> remote,二是配置了 "watch" 且文件匹配规则、保存动作被监听到。-
"watch": ["*.js", "*.py"]只监听两类后缀;想全监听写[".*"],但注意这也会监听.git、.ftpconfig等隐藏文件,可能引发循环同步 - Atom 默认关闭“保存时自动聚焦到编辑器”,如果你在终端切屏、Alt+Tab 切走,再回来 Ctrl+S,有时会因焦点丢失导致 watch 失效
- 编辑器里打开的文件,若路径不在当前项目根目录下(比如从桌面拖进来),即使在同一窗口,也不会被 watch 监控
remote-ftp 的核心逻辑其实是“本地优先 + 显式同步”,它不维护远程状态快照,也不做 diff 合并。一旦多人协作、远程文件被其他人直接修改,就只能靠人工 Sync local 拉取,这点和现代 IDE 的远程开发模式有本质区别。










