2010-08-23 27 views
7

Ok ragazzi, forse questo è stato già chiesto prima, ma ho cercato e non ho lanciato nulla, quindi mi sto prendendo una possibilità qui.Trasforma in modo trasparente file remoti su Windows, con ssh/Putty e netrw

Sto utilizzando l'ultimo vim (gvim 7.3), su Windows 7 64 bit.

Ho alcuni file remoti che desidero modificare direttamente con vim, utilizzando netrw.

In questo momento, ho una connessione ssh trasparente perfettamente funzionante con i miei host remoti, grazie a Putty, Pageant e chiavi pubbliche/private.

Sono con successo l'installazione di un accesso in lettura/scrittura ai file distanti con le correzioni:

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

allora posso accedere a un file con:

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

E, ogni volta che l'accesso remoto file, Vim eseguire un prompt di 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... 

Il mio problema è che premendo ogni volta una chiave all'esterno di Vim Voglio aprire/scrivere un file non è affatto efficiente.

Quindi la mia domanda (s) è (sono):

  • sto facendo nel modo giusto?
  • Esiste un altro modo per accedere in modo trasparente a un file remoto con ssh su di Windows tramite ?
  • Se no, c'è un modo per sbarazzarsi di "Hit qualsiasi tasto per chiudere questa finestra ..." quando Vim lancia pscp.exe di stucco?

Grazie mille e felice vimming.

EDIT: Nota alla me in passato: Amico, basta andare con Linux e gvim vaniglia/ssh. Mi ringrazierai più tardi (e dai un'occhiata a spf13-vim)

+0

Lo prendo Samba non è un'opzione? – rlduffy

+0

Beh, potrebbe essere un'opzione, ma voglio modificare i file su un server web live (lo so, non-mai-modificare-su-un-ambiente-live ...). Quindi meno lo addebito e meglio è. Ssh sembrava una soluzione pulita, ma sto cominciando a chiedermi ... Per ora sono bloccato con un progetto "remote/sftp" di netbeans 6.9, che funziona benissimo, ma non sarà mai così veloce e divertente come un grande l'implementazione di vim/ssh potrebbe essere. Forse dovrei * cominciare * a pensare di sostituire Win7 con un nuovo Debian ... – bPizzi

+0

Supponendo che il server abbia Vim, perché non modifichi i file direttamente sul server? Sarebbe un ** lotto ** più veloce. – romainl

risposta

2

Questo sembra un po 'troppo elaborato.

Io uso SSHFS su Linux per realizzare questo. Permette di montare localmente un percorso remoto su SSH.

Qualcosa di simile è disponibile anche per Windows ora: http://dokan-dev.net/en/. Dovrebbe rimuovere la necessità di tutte le modifiche sul lato Vim.

+0

Grazie, stavo cercando qualcosa del genere tanto tempo fa! –

+0

Grazie, sembra fantastico! Purtroppo, DokanSSHFS.exe non funziona su Windows 7 a 64 bit (si blocca subito dopo l'avvio) ... – bPizzi

+0

Per il record, citato dalla pagina dokan: "La libreria Dokan supporta il sistema operativo a 64 bit. libreria di modalità viene eseguita come applicazione a 32 bit e la libreria Dokan.NET è una libreria a 32 bit. È necessario configurare l'applicazione .NET per l'esecuzione su piattaforma x86. " – Bathz

2

Basta mettere questa riga nel vostro vimrc:

let g:netrw_silent = 1 

Questo verrà eseguito in modo asincrono SCP (come l'utilizzo!iniziare)

2

Invece di

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

ho dovuto usare

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

in Windows 7, stucco versione 0.6, l'opzione-batch non funzionava!

+0

La cosa strana è che non riesco a trovare un programma C: \ con "c: \ program files (x86) \ Putty \ pscp.exe" e non c: \ "program files (x86)" \ putty \ pscp.exe. +1 per la posizione delle virgolette (anche rimosso -batch) ma non so se ciò ha fatto la differenza. – lambacck

3

Questi sono quelli che ho ottenuto oggi a lavorare (gVim 7.3 in Win 7) (mi ha portato molte ore per ottenere finalmente qualcosa di lavoro):

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 il primo comando assicurarsi che ci sia un [spazio] dopo - Fa o avrai errori. quindi è possibile collegare in Vim via

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

Spero che questo aiuta alcuni Vimmers che lottano per capirlo e farlo funzionare. Cheers!

1

WINSCP è fantastico. Penso che copi localmente un file temporaneo, FTP, ma è "trasparente" ed è molto intuitivo.

0

Trovo che sia molto più semplice eseguire cygwin. Installare OpenSSH e gvim in Cygwin, quindi eseguire:

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

notare il doppio slash tra l'host e il percorso. Senza la barra in più, leggerà il percorso come relativo alla home directory dell'utente.

Problemi correlati