Come usare Sublime su SSH


237

Sto provando a usare Sublime Text 2 come editor quando SSH nel mio server di lavoro, e sono sconcertato. Ho trovato questo http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (tra molti altri post) che potrebbe aiutare, ma non lo seguo esattamente , in particolare con quali valori dovrei inserire per la variabile remota nella riga 5. Ho impostato "/ Users / path / to / local / copy" sulla mia directory root locale, ma non so se sia giusto o se ci siano più fare. qualche idea? Sono su OSX10.8


12
Ho trovato più facile da usare osxfuseesshfs sul mio mac montare localmente directory remote e poi modificarle tramite ST2.
AGS

Esiste un popolare plugin ST2 per sftp. Ecco un'ulteriore spiegazione di un sistema a cui credo AGS si riferisca: superuser.com/questions/134140/… . Ho avuto un problema con il caricamento automatico all'accesso e ho dovuto usare uno script di accesso alternativo creato con Platypus. Avevo anche bisogno di una versione migliore di macfuse: vedrò se riesco a trovare il link se sei interessato.
elenco delle leggi

Con Snow Leopard (10.6.8), avevo bisogno di un core aggiornato per MacFuse (ovvero macfuse-core-10.5-2.1.9.dmg) - ecco il link a dove l'ho preso: blog.urbaninsight.com/2011 / 04/18 /… Se sei interessato, ciò dovrebbe farti risparmiare un sacco di mal di testa.
elenco delle leggi

Non sarebbe live, e forse meno adatto per guardare file di registro e roba, ma spesso vale la pena configurare gitolite. Basta git pull e hai tutto il locale con cui giocare. Poi di nuovo molte persone hanno Internet veloce in questi giorni e non avvertirebbero il ritardo della rete ... Tutto dipende dalla tua configurazione.

Risposte:


161

Ci sono tre modi:

Inoltre, in teoria, è possibile installare X11 sul server remoto ed eseguire Sublime lì su VNC o inoltro X11, ma non avrebbe senso farlo.


1
Vedi anche la domanda relativa a superuser.com superuser.com/questions/581292/…
Mikko Ohtamaa,

11
La combinazione SSHFS / osxfuse ha funzionato per me! Grazie. Per gli altri con questo problema: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief

uno con il plugin sftp può usare strumenti come shell interattive e sostituirli come in emacs?
Edmondo1984,

@ Edmondo1984 basta usare un vero terminale per quello
Mikko Ohtamaa

1
Sublime SFTP in realtà ti consente di modificare i file in remoto ma senza il riquadro del progetto ST (quindi non vai in nessun luogo ), o fa qualcosa come un rsync. C'è una prova gratuita per testarlo.
Wernight,

102

Puoi usare rsub , che è ispirato a TextMate rmate. Dalla descrizione:

Rsub è un'implementazione della funzione 'rmate' di TextMate 2 per Sublime Text 2, che consente di modificare i file su un server remoto utilizzando il port forwarding / tunneling SSH.

Ecco un buon tutorial su come configurarlo correttamente.


2
Sono anche d'accordo sul fatto che far funzionare rsub sia un gioco da ragazzi, e consente sudo, il che è fantastico. Ho riscontrato alcuni problemi nel farlo funzionare correttamente, ma SO ha avuto la risposta anche a questo: stackoverflow.com/questions/18938950/…
Ross R

7
per favore segna questa risposta invece della prima poiché questa è gratuita
Theodore

La guida ha funzionato perfettamente, anche per un totale noob terminale come me. Grazie!
Henrik

66

Sono su Windows e ho usato 4 metodi: SFTP , WinSCP , Unison e Sublime Text su Linux con X11 inoltro su SSH a Windows (sì, puoi farlo senza configurazioni confuse e utilizzando uno strumento gratuito).

Il quarto modo è il migliore se puoi installare software sul tuo computer Linux.

Il quarto modo:

MobaXterm

  1. Installa MobaXterm su Windows
  2. SSH sul tuo box Linux da MobaXterm
  3. Sul tuo Linux box, installa Sublime Text 3. Ecco come fare su Ubuntu
  4. Al prompt dei comandi, iniziare con sublime subl
  5. Questo è tutto! Ora hai un testo sublime in esecuzione su Linux, ma con la sua finestra in esecuzione sul desktop di Windows. Ciò è possibile perché MobaXterm gestisce l'inoltro X11 su SSH per te, quindi non devi fare nulla di strano per farlo funzionare. Potrebbe esserci un piccolo ritardo, ma i tuoi file non saranno mai fuori sincrono, perché li stai modificando direttamente sulla macchina Linux.

Nota: quando si richiama subl se si lamenta per una determinata libreria, assicurarsi di installarli per invocare correttamente sublimetext da mobaxterm.

Se non riesci a installare software sul tuo box Linux, il migliore è Unison. Perché?

  • È gratis
  • È veloce
  • È affidabile e non importa quale editor usi
  • È possibile creare elenchi ignorati personalizzati

SFTP

Installazione: installa il pacchetto di testo Sublime SFTP . Questo pacchetto richiede una licenza.

  1. Crea una nuova cartella
  2. Aprilo come un progetto di testo sublime.
  3. Nella barra laterale, fai clic con il pulsante destro del mouse sulla cartella e seleziona Mappa remota.
  4. Modifica il file sftp-config.json
  5. Fare clic con il tasto destro sulla cartella al punto 1 selezionare download.
  6. Lavora localmente.

In sftp-config, di solito imposto:

"upload_on_save": true,
"sync_down_on_open": true,

Questo, oltre a un terminale SSH per la macchina, mi dà un'esperienza di editing remota abbastanza fluida.

WinSCP

  1. Installa ed esegui WinSCP
  2. Vai su Preferenze (Ctrl + Alt + P) e fai clic su Trasferisci, quindi su Aggiungi. Assegna un nome al preset.
  3. Imposta la modalità di trasferimento su binario (non vuoi conversioni di riga)
  4. Imposta la modifica del file su "Nessuna modifica"
  5. Fai clic sul pulsante Modifica accanto a Maschera file e imposta i file e le cartelle di inclusione ed esclusione (utile per quando è presente una cartella .git / .svn o se si desidera escludere la sincronizzazione dei prodotti di compilazione).
  6. Clicca OK
  7. Connettiti al tuo server remoto e vai alla cartella di tuo interesse
  8. Scegli una cartella vuota sul tuo computer locale.
  9. Seleziona la tua preimpostazione delle impostazioni di trasferimento appena creata.
  10. Infine, premi Ctrl + U (Comandi> Mantieni la directory remota aggiornata) e assicurati che "Sincronizza all'avvio" e "Aggiorna sottodirectory" siano selezionati.

Da quel momento in poi, WinSCP manterrà sincronizzate le modifiche.

Lavora nella cartella locale usando SublimeText. Assicurati solo che Sublime Text sia impostato per indovinare le terminazioni di riga dal file che viene modificato.

unisono

Ho scoperto che se l'albero dei sorgenti è enorme (circa alcune centinaia di MB con una gerarchia profonda), il metodo WinSCP sopra descritto potrebbe essere un po 'lento. Puoi ottenere prestazioni molto migliori usando Unison . Il lato negativo è che Unison non è automatico (è necessario attivarlo con un tasto premuto) e richiede che un componente server sia in esecuzione sul tuo computer Linux. Il lato positivo è che i trasferimenti sono incredibilmente veloci, è molto affidabile e ignorare file, cartelle ed estensioni è incredibilmente facile da configurare.


+1 per il SFTP setupcollegamento. Non sapevo se SFTP fosse un software Windows o un pacchetto Sublime.
Kevin Meredith,

Uso sftp per ST2, PuTTY e un po 'di FileZilla per buona misura. È la migliore configurazione che ho trovato dopo aver provato molti. Tuttavia, non mi piace dover mantenere un set di file locale. Preferisco di gran lunga ST agli editor di terminali come lievi vi o nano: rendere ST3 sul server stesso sembra un buon affare. grazie per la punta -
Bosworth99

Se sei un Cyberduck ( cyberduck.io/?l=en utente), integra sublimetext molto bene.
sakurashinken,

33

Come seguito alla risposta di @ ubik, ecco i tre semplici passaggi (una tantum) per far funzionare il comando 'subl' sul tuo server remoto:

  1. [ Locale ] Installa il rsubpacchetto in Sublime Text usando Sublime Package Manager
  2. [ Locale ] Esegui il seguente comando Bash (questo imposterà un tunnel SSH , che è la salsa segreta di rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Server ] Esegui il seguente comando Bash sul tuo server remoto (questo installerà il comando shell 'subl'):

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl

E voilà! Ora stai usando Sublime Text su SSH.

È possibile aprire un file di esempio in Sublime Text dal server con qualcosa di simile subl ~/test.txt


1
Continuo a ricevere: /usr/local/bin/subl: connect: Connection refused /usr/local/bin/subl: line 200: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698. Pensieri?
thumbtackthief,

1
Sì: aggiungi -R 52698: localhost: 52698 al tuo comando ssh. Vedi qui: stackoverflow.com/questions/18938950/…
Ross R

Suggerimento Noob che ho trovato utile: ricorda di avere Sublime in esecuzione sul tuo computer locale. Ciò avvia effettivamente il server.
Magne,

@RossR - questo non funziona. Il mio è simile al seguente: "RemoteForward 52698 127.0.0.1:52698 -R 52698: localhost: 52698" e genera ancora lo stesso errore: "Impossibile connettersi a TextMate su localhost: 52698"
FooBar

1
quanto sopra funziona, devi solo riavviare il server remoto in seguito o continuerai a ricevere l'errore di connessione negata.
CTF0

10

Sono su MacOS e il modo più conveniente per me è usare CyberDuck , che è gratuito (disponibile anche per Windows). È possibile connettersi al file system SSH remoto e modificare il file utilizzando l'editor locale. Quello che fa CyberDuck è scaricare il file in una posizione temporanea sul sistema operativo locale e aprirlo con l'editor. Una volta salvato il file, CyberDuck lo carica automaticamente sul tuo sistema remoto. Sembra trasparente come se stessi modificando il tuo file remoto usando l'editor locale. Gli sviluppatori di Cyberduck realizzano anche MountainDuck per il montaggio di file system remoti.


1
ho votato, anche se questo non funziona con sudo ... (file che necessitano di un accesso da superutente per scrivere)
Tiago Coelho,

1
Sono venuto a pubblicare questa soluzione esatta. Finché stai usando CyberDuck, è molto conveniente. Tuttavia, tieni presente che funziona solo mentre CyberDuck è in esecuzione. Puoi anche utilizzare lo stesso metodo per aprire i file in altri editor, ma ho scoperto che non tutti funzioneranno in modo affidabile e potrebbero perdere la connessione o passare silenziosamente al salvataggio solo localmente anziché in remoto (ad esempio Microsoft Excel). Non ho mai avuto un singolo problema con questo usando Sublime, però.
user5359531

8

Puoi provare qualcosa su cui ho lavorato chiamato ' xeno '. Ti consentirà di aprire file / cartelle in Sublime Text (o qualsiasi editor locale in realtà) su una connessione SSH e sincronizzare automaticamente le modifiche al computer remoto. Dovrebbe funzionare su quasi tutti i sistemi POSIX (io stesso lo uso da OS X per connettersi a macchine Linux e modificare file in Sublime Text). È gratuito e open source. Mi piacerebbe un feedback.

Per ulteriori informazioni: è fondamentalmente un mashup Git / SSH scritto in Python che consente di modificare file e cartelle su una macchina remota in un editor locale. Non è necessario configurare i moduli del kernel, non è necessario disporre di una connessione persistente, è tutto automatico e non interferirà con il controllo del codice sorgente esistente poiché utilizza un repository Git non funzionante. Inoltre, poiché è basato su Git, è estremamente veloce e supporta l'unione automatica di file che potrebbero cambiare su entrambe le estremità, a differenza di SSHFS / SFTP che bloccherà qualsiasi file con timestamp precedenti.


E ho scritto alcuni semplici post sul blog con script e opzioni di configurazione che rendono ST2 + Xeno una combinazione fantastica. Www.yeraze.com
Yeraze

5

Puoi usare sftp per montare la directory remota sul tuo computer di localizzazione e quindi semplicemente aprire i file usando il testo Sublime come faresti normalmente.

Per montare la directory remota usando sftp, inserisci quanto segue sul tuo file manager Linux;

sftp://user@remote_box.com:22/home/user/code_directory

Potrebbe sembrare lento a seconda della velocità di Internet. Ma questo ha funzionato per me.


5

So che è molto vecchio, ma ho un modo davvero fantastico di farlo che vale la pena condividere.

Cosa è richiesto in Conemu e WinSCP . Queste sono semplici istruzioni

  1. Apri WinSCP.exe e accedi al mio server remoto desiderato (ho
    scoperto che è importante effettuare il login prima di collegarlo ...).

  2. Nelle preferenze di WinSCP: due impostazioni da modificare. Scegli l'interfaccia di tipo Explorer e non Commander, così non vedrai i file locali. A meno che tu non voglia (ma sembra che farebbe schifo qui). Imposta Sublime come editor predefinito.

  3. Con ConEmu aperto, fare clic con il tasto destro sulla barra delle schede e selezionare l'opzione Attach to.... Si aprirà una finestra di dialogo con le applicazioni in esecuzione. Scegliere, WinSCP e selezionare OK. ConEmu ora avrà una scheda aperta con WinSCP che visualizzerà i tuoi file remoti.

  4. Fare clic con il tasto destro sulla scheda WinSCP e scegliere New console.... Quando si apre la finestra di dialogo, immettere il percorso dell'eseguibile Sublime sul sistema. Prima di premere Start, nella casella che dice New console splitselezionare il pulsante di opzione to righte impostare la percentuale. Di solito scelgo il 75%, ma puoi personalizzarlo a tuo piacimento e può essere modificato in un secondo momento.

    1. Ora vedrai Sublime nella stessa finestra in esecuzione a destra di WinSCP. In Sublime, dal menu Visualizza, scegli Sidebar->Hide Sidebare bam, ora hai i file remoti esattamente come faresti localmente, con alcune avvertenze ovviamente che vengono fornite con la modifica di qualsiasi cosa da remoto. WinSCP però è velocissimo.

Ho due monitor: il browser Chrome del monitor di visualizzazione sinistro, il monitor di destra visualizza l'editor di codice. Inoltre ConEmu, creo un'altra scheda e ssh nel sito su cui sto lavorando, quindi posso fare cose come eseguire gulpo da gruntremoto e anche manipolare i file dalla riga di comando. Accelerare seriamente lo sviluppo.

Ecco uno screenshot:

Schermata di installazione


5

Questo è il modo più semplice per modificare localmente i file che vivono su host remoto dove hai precedentemente impostato ssh su IP remoto

# issue on local box

sudo apt-get install sshfs   # on local host install sshfs ( linux )

# on local box create secure mount of remote directory

export REMOTE_IP=107.170.58.249 # remote host IP

sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir  /your/local/dir # for example

Fatto !!!

Ora sull'host locale basta iniziare a modificare i file ... quando si elenca dir localmente potrebbe non elencare nulla fino a quando non si esegue il cd in subdir o si elenca un file specifico ... caricamento lento ... questo non influisce sulla modifica dei file

subl /your/local/dir/magnum_opus.go # local file edit using sublime text

così sopra sta effettivamente modificando il file remoto su

/your/remote/dir/magnum_opus.go  # remote file on box $REMOTE_IP

Per OSX o Windows vedi questo tutorial della gente gentile su Digital Ocean


4

Un'altra soluzione mac simile a osxfuse è usare semplicemente il client Transmit FTP da Panic Software, che consente di montare una cartella remota come disco locale. Supporta SFTP, che è molto sicuro.


Mi piace molto questa opzione. Il montaggio dovrebbe consentire di aprire l'intero disco come un progetto sublime.
Mic Fok,

3

Ho lavorato su un progetto chiamato GiySync . Ha ancora bisogno di un po 'di lavoro, ma è open source e lo uso tutti i giorni da un paio d'anni. Sto anche lavorando su una versione nativa OS X ho chiamato GitSyncApp

In questo momento è solo OS X ma dovrebbe essere facile aggiungere il supporto per Linux, e forse anche per Windows.

Funziona guardando gli eventi del file system e usa git per sincronizzare una cartella di progetto sul tuo computer locale e un server.

Ho provato le altre soluzioni come osx fuse, Expand Drive, Transmit, diverse soluzioni che utilizzavano rsync, ecc. Funzionano tutte "OK" per piccoli progetti, ma se lavori con molto codice non funzionano per me.

Molte opzioni del file system eseguono la memorizzazione nella cache per migliorare le prestazioni, il che va bene, fino a quando non lo è. Ad esempio, se lavori con altre persone e qualcun altro modifica i file sul server.

Mi sono anche imbattuto in problemi se ero su una rete instabile o lenta in cui avrei finito con file vuoti. O file non sincronizzato, quindi la memorizzazione nella cache è diventata strana; spero che ti sia impegnato di recente. L'uso di git risolve questo problema perché controlla l'integrità di ciascun commit.

Due funzioni bonus:

  1. Si finisce con un commit per ogni salvataggio. Non è super utile, ma se mai dovessi tornare indietro nel tempo puoi.
  2. Funziona con qualsiasi editor di testo.

0

A seconda delle tue esatte esigenze, potresti prendere in considerazione l'utilizzo di BitTorrent Sync. Crea una cartella condivisa sul tuo PC di casa e sul tuo PC di lavoro. Modifica i file sul tuo PC di casa (usando Sublime o quello che preferisci) e si sincronizzeranno automaticamente quando salvi. BitTorrent Sync non si basa su un server centrale che memorizza i file (come Dropbox e simili), quindi in teoria dovresti essere libero da qualsiasi problema dovuto a una terza parte che memorizza informazioni sensibili.


0

Una soluzione che ha funzionato perfettamente per me: modifica localmente su Mac e sincronizza automaticamente il file con un computer remoto

  1. Assicurarsi di disporre dell'accesso senza password al computer remoto. In caso contrario, seguire questi passaggi http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. crea un file in ~ / Library / LaunchAgents / filesynchronizer.plist, con il seguente contenuto:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>

  3. In una finestra del terminale eseguita

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. Questo è tutto. Qualsiasi modifica a qualsiasi file in ~ / SyncDirectory verrà sincronizzata con ~ / SyncDirectory sul computer remoto. Le modifiche locali avranno la precedenza su eventuali modifiche remote.

Questo crea un processo di avvio che monitora SyncDirectory e ogni volta che qualcosa cambia lì esegue rsync per sincronizzare la directory sul computer remoto.


È una sincronizzazione bidirezionale?
morso il

No; Solo da macchina locale a remota
Ran Locar

0

Sembra che lsyncd sia una bella alternativa all'approccio sshfs. Se usi "-delay 0" funziona in tempo reale.


0

Usa FileZilla

Questo vale per gli utenti Mac e Windows (che uso su Mac). Ho usato molte delle risposte elencate nel corso degli anni e ho scoperto che FileZilla soddisfa bene le mie esigenze durante la modifica di file su un host remoto a cui ho accesso SSH. È anche veloce da configurare.

  • Configuro una nuova connessione al server
  • connettersi al server
  • fare clic con il tasto destro sul file che vorrei modificare e selezionare View/Edit.

Questo fa apparire il mio editor predefinito (Sublime) ma funzionerà con qualsiasi editor che hai installato.

  • Una volta salvato il file, Filezilla mi chiede automaticamente se desidero "Caricare questo file sul server", faccio clic su "Sì" e quindi viene aggiornato.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.