我需要使用 vim 编辑位于 FTP 服务器上的远程文件。没有 SSH 或 SFTP 访问权限。只有 FTP。我尝试通过 curlftpfs 进行同步,文件出现在本地目录中,但我无法写入它们,我收到各种错误,当我设法写入时,服务器上会生成具有随机结尾的文件。index.php 在服务器上写入为 index.phz、index.phy 等...
我安装了 sublime text 2,但在为我的显卡安装新驱动程序后,它就无法再运行了。我也尝试过使用 WINE 的 n++,但无法打开更深目录级别的 FTP 文件。
我看到有多种使用 vim 编辑 FTP 上文件的方法,但每种方法都需要输入 :ehttp://[用户@]机器/路径(使用 netrw 插件)。我真的很想避免任何重复,而是设置一个相对映射。奇怪的是,没有针对 vim 的解决方案,因为它主要是开发人员的工具,sublime 和 npp 已经以简单的方式解决了这个问题。在同一个主机名/路径等上打字会破坏一个简单的 DRY 原则。
理想的情况是,我可以使用一些同步工具将文件缓存在本地,然后在 vim 写入文件后立即将它们上传到 ftp,映射路径“本地 -> 远程”,或者我发出上传命令等(无需每次都输入打开的文件)。服务器上有很多文件,所以我记不住它们,对我来说,将它们缓存在本地很重要,这样我就可以快速访问它们并使用简单的命令上传。
我正在运行 Slackware 13.37 x64
答案1
您可以使用 netrw 显示远程目录的内容:
:e ftp://[email protected]/ <-- note the slash at the end.
P
从那里,您可以使用 在另一个窗口中打开文件,或者使用 在当前窗口中打开文件<CR>
。
如果丢失了文件列表,请不要惊慌:它仍然在那里,您可以使用它恢复:Rex
。
或者简单地使用 GUI FTP 客户端(如 Filezilla 或 gFTP)及其“在...中编辑”功能。
答案2
虽然您不能简单地使用相对文件名(因为本地工作目录不同),但您可以使用文件名修饰符来相对引用文件:
:edit %:h/another.html
答案3
答案4
如果您使用 vim,ftp://hostname/path/
您将获得一个目录列表。如果您经常使用此主机,您可能希望将其添加为书签。使用 netrw v153j,您可以使用:NetrwMB filename(s)
;您可以使用 mb 为当前目录添加书签;您可以使用qb
列出当前书签(和历史记录)。书签和其他内容也可以通过 gvim 的菜单获得。要转到书签,请使用gb
。
因此,我建议您为该目录添加书签,通过:Rex
或返回目录列表gb
,然后编辑列出的文件。