如何使用GVIM编辑远程文件?

时间:2010-01-25 22:23:45

标签: configuration ftp vim

我在Ubuntu 9.10上使用GVIM。我正在寻找正确的方法来配置GVIM,以便能够通过例如ftp来编辑远程文件(HTML,PHP,CSS)。

  • 当我使用:e scp://username@remotehost/./path/to/file我得到:error detected while processing BufEnter Auto commands for "*":E472: Command failed.
  • 当我通过Dolphin或Nautilus在远程打开文件时,我无法使用NERDTree的其他文件。
  • 最后,当我通过Dolphin在远程编辑文件时,权限正在变为访问interdit。

那么如何使用GVIM编辑我本地主机上的远程文件?

10 个答案:

答案 0 :(得分:44)

我发现在ssh上运行文件系统(通过 sshfs )比让编辑器处理这些东西或在ssh隧道上运行编辑器本身更好。

所以你需要

apt-get install sshfs

然后

sshfs remoteuser@remotehost:/remote/path /local/mountpoint

这样就可以编辑远程文件,就像它们在本地文件系统上一样。

为了使它更平滑,你可以在/ etc / fstab

中添加一行
sshfs#remoteusername@remotehost:/remote/path /local/mountpoint fuse user,noauto

出于某种原因,我发现在尝试此操作时我必须使用fusermount -u /local/mountpoint而不是umount /local/mountpoint。也许这只是我的发行版。

最近我还注意到,装载用户必须在fuse组中。所以:

sudo addgroup <username> fuse

当然,另一个流行的选择是在一台机器上的GNU Screen会话中运行vim(而不是gvim),并通过ssh从任何地方连接到该会话。整天在工作和晚上编码你的办公室电脑,重新连接到你的gnu屏幕会话,并准确地选择你离开的地方。我使用发现更丰富的调色板是我在使用vim时唯一真正错过gvim的东西,但实际上可以修复感谢to a fork of urxvt,它可以让你自定义整个256位色调,而不仅仅是16位色调调色板的位置,大多数终端仿真器都可以让您自定义。

答案 1 :(得分:8)

有一种方法就是使用远程主机的副本,使用SSH将X11客户端转发给你,如下所示:

user@local:~/$ ssh -X user@host
...
user@host:~/$ gvim file

后一个命令应该在桌面上打开gvim。当然,这依赖于首先安装了X11 / gnome / gvim的远程主机,这可能不是您正在寻找的解决方案/在您的情况下的选项。

注意:X11转发可能存在安全风险。

答案 2 :(得分:6)

为了让netrw无缝工作,我相信你需要处于兼容模式。

尝试

:设置nocompatible

然后

:编辑scp:// host / path / to / file

答案 3 :(得分:5)

试试这个

:e scp://username@remotehost//path/to/file

请注意,在remotehost之后使用//是故意的,它提供了文件的绝对路径 :)

http://www.celsius1414.com/2009/08/19/how-to-edit-remote-files-with-local-vim/

答案 4 :(得分:2)

vim提示wiki上有一篇文章Editing remote files via scp in vim

答案 5 :(得分:1)

编辑:通过ssh打开文件的密钥验证不一定。 Vim会提示输入密码。

如果netrw.vim在启动时被vim加载,那将会很有用。

:echo exists("g:loaded_netrwPlugin")

要通过ssh打开文件,您需要服务器授权密钥中的本地计算机公钥。 vim文档中的以下帮助部分很好地解释了它。

:help netrw-ssh-hack

导出公钥的快速方法是使用 ssh-copy-id (如果可用)。

ssh-copy-id user@host

并查看有关其他协议的网络文件编辑的netrw文档。

:help netrw

HTH。

答案 6 :(得分:0)

根据文档,在读取文件并创建缓冲区后处理BufEnter,所以我的猜测是netrw成功读取了文件,但你有一个插件假定文件在本地文件系统上并且正在尝试访问它,例如运行ctags。

尝试禁用除默认Vim之外的所有插件脚本,然后编辑文件。

另外,尝试编辑目录以查看netrw是否可以读取 - 您需要将/放在最后,以便netrw知道它是一个目录。

答案 7 :(得分:0)

关于您的命令,:e scp://username@remotehost/./path/to/file:请注意,对于netrw,scp是相对于该远程主机上的主目录获取的。为避免家庭相对路径,请删除“。”;即。 :e scp:// username @ remotehost // path / to / file。

答案 8 :(得分:-1)

在Windows下载/安装Dokan库和Dokan SSHFS,这是this page上的第一个和最后一个链接。

答案 9 :(得分:-2)

我认为您无法使用本地运行的GVIM直接编辑远程文件。但是,正如其他人所指出的那样,这是绝对可能的。这看起来很有趣;我会检查一下。我将把剩下的帖子留在这里,以防它对其他人有用,作为替代方法。即使您没有对该文件的SSH访问权限(即,您只有FTP,或S3等),此方法也可以使用。

但是,您可以通过将GVIM绑定到图形文件传输应用程序中来获得该效果。例如,在OS X上,我使用Cyber​​Duck传输文件(FTP,SFTP等)。然后,我将它配置为使用GVIM作为我的编辑器,因此我只需双击远程列表中的文件,Cyber​​Duck将下载该远程文件的副本,并在GVIM中打开它。当我将其保存在GVIM中时,Cyber​​Duck会将文件上传回远程主机。

我确信此功能并非Cyber​​Duck独有,并且可能存在于大多数更好的文件传输实用程序中。