好的伙计们,也许以前曾经问过这个问题,但是我搜索并且没有扔任何东西,所以我在这里抓住机会。
我在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外部按键都是无效的。
所以我的问题是(是):
非常感谢和快乐的vimming。
编辑:过去注意我自己: Dude,只需使用linux和vanilla gvim / ssh。你以后会感谢我(并看看spf13-vim)
答案 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
请注意主机和路径之间的双斜线。如果没有额外的斜杠,它将相对于用户的主目录读取路径。