2010-08-23 12 views
7

Ok muchachos, tal vez se le ha preguntado antes, pero busqué y ejecuté nada, así que me estoy arriesgando aquí.Edite de forma transparente archivos remotos en Windows, con ssh/Putty y netrw

Estoy usando el último vim (gvim 7.3), en Windows 7 64bits.

Tengo algunos archivos remotos que quiero editar directamente con vim, usando netrw.

Ahora mismo, tengo una conexión ssh transparente y totalmente funcional para mis hosts remotos, gracias a las llaves Putty, Pageant y públicas/privadas.

He preparado correctamente un acceso de lectura/escritura a archivos remotos con esas correcciones:

#### .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' 

Entonces puede acceder a un archivo con:

:e scp:\\[email protected]:port\\home\me\some-file.txt 

Y, cada vez que el acceso remoto archivo, Vim ejecutar un aviso de 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" "[email protected]:/home/me/some-file.txt" 
Hit any key to close this window... 

Mi problema es que presionar una tecla fuera de Vim cada vez Quiero abrir/escribir un archivo no es eficiente en absoluto.

Así que mi pregunta (s) es (son):

  • lo estoy haciendo de la manera correcta?
  • ¿Hay otra manera de de acceder transparentemente a un archivo remoto con ssh en Windows?
  • Si no, ¿hay una forma de deshacerse de "Pulsar cualquier tecla para cerrar esta ventana ..." cuando Vim lanza pscp.exe de putty?

Muchas gracias y feliz vimming.

EDIT: Nota al mismo en el pasado: Amigo, sólo tiene que ir con Linux y gvim vainilla/ssh. Me lo agradecerá más tarde (y eche un vistazo a spf13-vim)

+0

Supongo que Samba no es una opción? – rlduffy

+0

Bueno, podría ser una opción, pero quiero editar archivos en un servidor web en vivo (lo sé, do-not-ever-edit-on-a-live-environment ...). Así que cuanto menos lo cargo, mejor. Ssh sonaba como una solución limpia, pero estoy empezando a preguntarme ... Por ahora estoy atascado con un proyecto de Netbeans 6.9 "remote/sftp", que funciona muy bien, pero nunca será tan rápido y divertido como un gran implementación de vim/ssh podría ser. Tal vez * debería * empezar a pensar en reemplazar Win7 por un nuevo Debian ... – bPizzi

+0

Suponiendo que el servidor tiene Vim, ¿por qué no editas los archivos directamente en el servidor? Sería ** mucho ** más rápido. – romainl

Respuesta

2

Esto parece un poco demasiado elaborado.

Uso SSHFS en Linux para lograr esto. Le permite montar localmente una ruta remota a través de SSH.

Algo similar está disponible para Windows ahora también: http://dokan-dev.net/en/. Debería eliminar la necesidad de todas las modificaciones en el lado Vim.

+0

¡Gracias, he estado buscando algo así hace mucho tiempo! –

+0

¡Gracias, eso suena genial! Desafortunadamente, DokanSSHFS.exe no funciona en Windows 7 64bits (se bloquea inmediatamente después de su inicio) ... – bPizzi

+0

Para el registro, citado de la página dokan: "La biblioteca Dokan admite el sistema operativo de 64 bits. la biblioteca de modo se ejecuta como una aplicación de 32 bits y la biblioteca Dokan.NET es una biblioteca de 32 bits. Debe configurar su aplicación .NET para que se ejecute en la plataforma x86 ". – Bathz

2

Sólo hay que poner esta línea en su vimrc:

let g:netrw_silent = 1 

Esto ejecutará SCP de forma asíncrona (como usar!iniciar)

2

En lugar de

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

tuve que usar

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

en Windows 7, masilla de la versión 0.6, la opción -batch no estaba funcionando!

+0

Lo raro es que obtengo un programa C: \ no se puede encontrar con "c: \ archivos de programa (x86) \ Putty \ pscp.exe" y no c: \ "archivos de programa (x86)" \ putty \ pscp.exe. +1 para la posición de las comillas (también eliminado -batch) pero no sé si eso marcó la diferencia. – lambacck

3

estos son los que hoy me de trabajo (gVim 7.3 en Win 7) (me llevó muchas horas para llegar por fin algo de trabajo):

set nocompatible 
let g:netrw_cygwin = 0 
let g:netrw_list_cmd = "plink.exe -P ##### -pw MyPass [email protected] 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 [email protected]" 

Con el primer comando asegurarse de que hay un [espacio] después - Fa o obtendrás errores. Entonces se puede conectar a través de Vim

:e scp://[email protected]:port#/(path to file) 
:e sftp://[email protected]:port#/(path to file) 

espero que esto ayuda a algunas Vimmers luchando para resolver esto y conseguir que funcione. ¡Salud!

1

WINSCP es increíble. Creo que copia un archivo temporal localmente y luego lo FTP pero es "transparente" y es muy fácil de usar.

0

Encuentro que es mucho más fácil simplemente ejecutar cygwin. Instalar OpenSSH y gvim en cygwin, a continuación, ejecute:

$ gvim scp://[email protected]//path/to/file 

Nota las barras dobles entre el anfitrión y el camino. Sin la barra adicional, leerá la ruta en relación con el directorio de inicio del usuario.

Cuestiones relacionadas