使用ssh / Putty和netrw在Windows上透明地编辑远程文件

时间:2010-08-23 10:50:21

标签: vim

好的伙计们,也许以前曾经问过这个问题,但是我搜索并且没有扔任何东西,所以我在这里抓住机会。

我在Windows 7 64位上使用最新的vim(gvim 7.3)。

我有一些远程文件,我想用vim直接编辑,使用netrw。

现在,由于Putty,Pageant和公钥/私钥,我已经为我的远程主机提供了一个完全正常的透明ssh连接。

我已成功设置对具有这些修复程序的远程文件的读/写访问权限:

#### .vimrc ####
let g:netrw_cygwin= 0
let g:netrw_scp_cmd = 'c:\"Program Files (x86)"\PuTTY\pscp.exe -q -batch'
let g:netrw_sftp_cmd= '"c:\"Program Files (x86)"\PuTTY\psftp.exe'

然后我可以使用以下方式访问文件:

:e scp:\\user@host:port\\home\me\some-file.txt

而且,每次我访问远程文件时,Vim都会运行Windows提示符(cmd.exe):

C:\Windows\system32\cmd.exe /c c:\"Program Files (x86)"\PuTTY\pscp.exe -q -batch
 -P 22 "C:\Users\me\AppData\Local\Temp\VIF215E.tmp" "user@host:/home/me/some-file.txt"
Hit any key to close this window...

我的问题是,每次打开/写入文件时,在Vim外部按键都是无效的。

所以我的问题是(是):

  • 我是以正确的方式做到的吗?
  • 是否存在透明的另一种方式 使用ssh访问远程文件 Windows?
  • 如果没有,有没有办法 摆脱“打任何关键来关闭这个 窗口......“当Vim发布putty的pscp.exe?

非常感谢和快乐的vimming。

编辑:过去注意我自己 Dude,只需使用linux和vanilla gvim / ssh。你以后会感谢我(并看看spf13-vim)

6 个答案:

答案 0 :(得分:4)

这些是我今天工作的(Win 7中的gVim 7.3)(花了我很多时间才最终得到了一些工作):

set nocompatible
let g:netrw_cygwin = 0
let g:netrw_list_cmd = "plink.exe -P ##### -pw MyPass user@host.com ls -Fa "
let g:netrw_ssh_cmd  = "plink -T -ssh"
let g:netrw_scp_cmd  = "pscp -P ##### -pw MyPass -scp"
let g:netrw_sftp_cmd = "pscp -pw MyPass -sftp"
or
let g:netrw_sftp_cmd = "psftp -P ##### -pw MyPass user@host.com"

使用第一个命令确保在-Fa之后有[空格]或者你会得到错误。 然后你可以通过

连接到Vim
:e scp://user@host:port#/(path to file)
:e sftp://user@host:port#/(path to file)

我希望这有助于一些Vimmers努力解决这个问题并让它发挥作用。 干杯!

答案 1 :(得分:3)

将这一行放在你的vimrc中:

let g:netrw_silent = 1

这将异步运行scp(就像使用!start)

答案 2 :(得分:2)

这似乎有点过于复杂。

我在Linux上使用SSHFS来完成此任务。它允许您通过SSH本地安装远程路径。

现在也可以使用类似的东西:http://dokan-dev.net/en/。它应该不需要在Vim端进行所有修改。

答案 3 :(得分:2)

而不是

let g:netrw_scp_cmd = 'c:\"Program Files (x86)"\PuTTY\pscp.exe -q -batch'

我必须使用

let g:netrw_scp_cmd = 'c:\"Program Files (x86)"\PuTTY\pscp.exe -q'

在Windows 7中,putty版本0.6,-batch选项无效!

答案 4 :(得分:1)

WINSCP太棒了。我认为它会在本地复制一个临时文件,然后对其进行FTP,但它是“透明的”并且非常用户友好。

答案 5 :(得分:0)

我发现运行cygwin要容易得多。在cygwin中安装openssh和gvim,然后运行:

$ gvim scp://user@host//path/to/file

请注意主机和路径之间的双斜线。如果没有额外的斜杠,它将相对于用户的主目录读取路径。