Comment utiliser Sublime sur SSH

237

J'essaie d'utiliser Sublime Text 2 comme éditeur lorsque je me connecte à mon serveur de travail et je suis perplexe. J'ai trouvé ce http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (parmi beaucoup d'autres messages) qui semble pouvoir aider, mais je ne le suis pas exactement , en particulier avec les valeurs que je devrais mettre pour la variable distante à la ligne 5. Je mets "/ Users / path / to / local / copy" dans mon répertoire racine local, mais je ne sais pas si c'est vrai ou s'il y a plus faire. Des pensées? Je suis sur OSX10.8

punaise
la source
12
J'ai trouvé plus facile à utiliser osxfuseetsshfs sur mon Mac pour monter localement des répertoires distants puis éditer via ST2.
AGS
Il existe un plugin ST2 populaire pour sftp. Voici une autre explication d'un système auquel je pense qu'AGS fait référence: superuser.com/questions/134140/… . J'ai eu un problème avec le chargement automatique lors de la connexion et j'ai dû utiliser un script de connexion de contournement créé avec Platypus. J'avais également besoin d'une meilleure version de macfuse - je verrai si je peux trouver le lien si vous êtes intéressé.
lawlist
Avec Snow Leopard (10.6.8), j'avais besoin d'un noyau mis à jour pour MacFuse (c'est-à-dire macfuse-core-10.5-2.1.9.dmg) - voici le lien vers où je l'ai obtenu: blog.urbaninsight.com/2011 / 04/18 /… Si cela vous intéresse, cela devrait vous éviter bien des maux de tête.
lawlist
Ce ne serait pas en direct, et peut-être moins adapté pour regarder des fichiers journaux et d'autres choses, mais souvent, la configuration de gitolite peut en valoir la peine. Git pull et vous avez tout ce qu'il y a de local pour jouer. Encore une fois, beaucoup de gens ont Internet rapide ces jours-ci et ne ressentiraient pas le décalage du réseau ... Tout dépend de votre configuration.

Réponses:

161

Il existe trois façons:

Also, in theory, you can install X11 on the remote server and run Sublime there over VNC or X11 forwarding, but there would be no point doing this.

Mikko Ohtamaa
la source
1
See also related superuser.com question superuser.com/questions/581292/…
Mikko Ohtamaa
11
The SSHFS/osxfuse combo worked for me! Thanks. For others with this problem: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief
can one with sftp plugin use tools like interactive shells and repl like in emacs?
Edmondo1984
@Edmondo1984 just use a real terminal for that
Mikko Ohtamaa
1
Sublime SFTP vous permet en fait soit d'éditer des fichiers à distance mais sans le volet de projet ST (donc pas d' aller n'importe où ), ou fait quelque chose comme un rsync. Il y a un essai gratuit pour le tester.
Wernight
102

Vous pouvez utiliser rsub , qui est inspiré de TextMate rmate. D'après la description:

Rsub est une implémentation de la fonction 'rmate' de TextMate 2 pour Sublime Text 2, permettant aux fichiers d'être édités sur un serveur distant en utilisant le transfert / tunneling de port SSH.

Voici un bon tutoriel sur la façon de le configurer correctement.

ubik
la source
2
Je suis également d'accord pour dire que faire fonctionner rsub est un jeu d'enfant et permet sudo, ce qui est génial. J'ai rencontré des problèmes pour le faire fonctionner correctement, mais SO avait aussi la réponse à cela: stackoverflow.com/questions/18938950/…
Ross R
7
veuillez cocher cette réponse au lieu de la première car elle est gratuite
theodore
Le guide a parfaitement fonctionné, même pour un noob terminal complet comme moi. Merci!
Henrik
66

Je suis sous Windows et j'ai utilisé 4 méthodes: SFTP , WinSCP , Unison et Sublime Text sous Linux avec transfert X11 via SSH vers Windows (oui, vous pouvez le faire sans configs désordonnées et en utilisant un outil gratuit).

La quatrième façon est la meilleure si vous pouvez installer des logiciels sur votre machine Linux.

La quatrième voie:

MobaXterm

  1. Installer MobaXterm sur Windows
  2. SSH vers votre box Linux depuis MobaXterm
  3. Sur votre box Linux, installez Sublime Text 3. Voici comment faire sur Ubuntu
  4. À l'invite de commande, démarrez sublime avec subl
  5. C'est tout! Vous avez maintenant un texte sublime fonctionnant sous Linux, mais avec sa fenêtre fonctionnant sur votre bureau Windows. Cela est possible car MobaXterm gère le transfert X11 via SSH pour vous, vous n'avez donc rien à faire de funky pour le faire fonctionner. Il peut y avoir un très petit délai, mais vos fichiers ne seront jamais désynchronisés, car vous les éditez directement sur la machine Linux.

Remarque: Lorsque vous invoquez subl si elle se plaint pour une certaine bibliothèque - assurez-vous de les installer pour réussir à invoquer sublimetext depuis mobaxterm.

Si vous ne pouvez pas installer de logiciel sur votre box Linux, le mieux est Unison. Pourquoi?

  • C'est gratuit
  • C'est rapide
  • Il est fiable et ne se soucie pas de l'éditeur que vous utilisez
  • Vous pouvez créer des listes d'ignorance personnalisées

SFTP

Configuration: installez le package SFTP Sublime Text. Ce package nécessite une licence.

  1. Créer un nouveau dossier
  2. Ouvrez-le en tant que projet de texte sublime.
  3. Dans la barre latérale, cliquez avec le bouton droit sur le dossier et sélectionnez Map Remote.
  4. Modifiez le fichier sftp-config.json
  5. Cliquez avec le bouton droit sur le dossier à l'étape 1, sélectionnez télécharger.
  6. Travaillez localement.

Dans la configuration sftp, je règle généralement:

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

Cela, en plus d'un terminal SSH pour la machine, me donne une expérience d'édition à distance assez transparente.

WinSCP

  1. Installer et exécuter WinSCP
  2. Allez dans Préférences (Ctrl + Alt + P) et cliquez sur Transférer, puis sur Ajouter. Nommez le préréglage.
  3. Réglez le mode de transfert sur binaire (vous ne voulez pas de conversions de ligne)
  4. Définissez la modification du fichier sur "Pas de changement"
  5. Cliquez sur le bouton Modifier à côté de Masque de fichier et configurez vos fichiers et dossiers d'inclusion et d'exclusion (utile lorsque vous avez un dossier .git / .svn présent ou si vous souhaitez exclure les produits de build de la synchronisation).
  6. Cliquez sur OK
  7. Connectez-vous à votre serveur distant et accédez au dossier qui vous intéresse
  8. Choisissez un dossier vide sur votre ordinateur local.
  9. Sélectionnez le nouveau préréglage des paramètres de transfert créé.
  10. Enfin, appuyez sur Ctrl + U (Commandes> Garder le répertoire distant à jour) et assurez-vous que "Synchroniser au démarrage" et "Mettre à jour les sous-répertoires" sont cochés.

À partir de là, WinSCP gardera vos modifications synchronisées.

Travaillez dans le dossier local à l'aide de SublimeText. Assurez-vous simplement que Sublime Text est configuré pour deviner les fins de ligne du fichier en cours d'édition.

Unisson

J'ai constaté que si l'arborescence source est massive (environ quelques centaines de Mo avec une hiérarchie profonde), la méthode WinSCP décrite ci-dessus peut être un peu lente. Vous pouvez obtenir de bien meilleures performances en utilisant Unison . L'inconvénient est que Unison n'est pas automatique (vous devez le déclencher avec une pression de touche) et nécessite qu'un composant serveur s'exécute sur votre machine Linux. Le côté positif est que les transferts sont incroyablement rapides, il est très fiable et ignorer les fichiers, dossiers et extensions est incroyablement facile à configurer.

Carl
la source
+1 pour le SFTP setuplien. Je ne savais pas si SFTP était un logiciel Windows ou un package Sublime.
Kevin Meredith
J'utilise sftp pour ST2, PuTTY et un peu de FileZilla pour faire bonne mesure. C'est la meilleure configuration que j'ai trouvée après avoir essayé plusieurs. Cependant, je n'aime pas avoir à conserver un ensemble de fichiers local. Je préfère de beaucoup ST aux éditeurs de terminaux liek vi ou nano - faire ST3 sur le serveur lui-même sonne comme une bonne affaire. merci pour la pointe -
Bosworth99
Si vous êtes un utilisateur de cyberduck ( cyberduck.io/?l=en ), sublimetext s'intègre très bien.
sakurashinken
33

Pour faire suite à la réponse de @ ubik, voici les trois étapes simples (uniques) pour que la commande «subl» fonctionne sur votre serveur distant:

  1. [ Local ] Installez le rsubpackage dans Sublime Text à l'aide du gestionnaire de packages Sublime
  2. [ Local ] Exécutez la commande Bash suivante (cela créera un tunnel SSH , qui est la sauce secrète de rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Serveur ] Exécutez la commande Bash suivante sur votre serveur distant (cela installera la commande shell «subl»):

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

Et le tour est joué! Vous utilisez maintenant Sublime Text sur SSH.

Vous pouvez ouvrir un exemple de fichier dans Sublime Text à partir du serveur avec quelque chose comme subl ~/test.txt

user456584
la source
1
Je continue à recevoir: /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. Pensées?
thumbtackthief
1
Oui: ajoutez -R 52698: localhost: 52698 à votre commande ssh. Voir ici: stackoverflow.com/questions/18938950/…
Ross R
Astuce Noob que j'ai trouvée utile: N'oubliez pas de faire fonctionner Sublime sur votre machine locale. Cela démarre en fait le serveur.
Magne
@RossR - cela ne fonctionne pas. Le mien ressemble à ceci: "RemoteForward 52698 127.0.0.1:52698 -R 52698: localhost: 52698" et génère toujours la même erreur: "Impossible de se connecter à TextMate sur localhost: 52698"
FooBar
1
les travaux ci-dessus, il vous suffit de redémarrer le serveur distant par la suite ou vous continuerez à obtenir l'erreur de connexion refusée.
ctf0
10

Je suis sur MacOS, et le moyen le plus pratique pour moi est d'utiliser CyberDuck , qui est gratuit (également disponible pour Windows). Vous pouvez vous connecter à votre système de fichiers SSH distant et modifier votre fichier à l'aide de votre éditeur local. Ce que CyberDuck fait est de télécharger le fichier dans un emplacement temporaire sur votre système d'exploitation local et de l'ouvrir avec votre éditeur. Une fois le fichier enregistré, CyberDuck le télécharge automatiquement sur votre système distant. Cela semble transparent comme si vous éditiez votre fichier distant à l'aide de votre éditeur local. Les développeurs de Cyberduck fabriquent également MountainDuck pour le montage de systèmes de fichiers distants.

bizi
la source
1
j'ai voté, bien que cela ne fonctionne pas avec sudo ... (fichiers qui nécessitent un accès superutilisateur pour écrire)
Tiago Coelho
1
Je suis venu publier cette solution exacte. Tant que vous utilisez CyberDuck, c'est très pratique. Cependant, gardez à l'esprit que cela ne fonctionne que lorsque CyberDuck est en cours d'exécution. Vous pouvez également utiliser la même méthode pour ouvrir des fichiers dans d'autres éditeurs, mais j'ai constaté que tous ne fonctionneront pas de manière fiable et risquent de perdre la connexion ou de basculer silencieusement vers l'enregistrement local uniquement au lieu de à distance (par exemple Microsoft Excel). Je n'ai jamais eu un seul problème avec cela en utilisant Sublime.
user5359531
8

Vous pouvez essayer quelque chose sur lequel j'ai travaillé appelé ' xeno ». Il vous permettra d'ouvrir des fichiers / dossiers dans Sublime Text (ou n'importe quel éditeur local vraiment) via une connexion SSH et de synchroniser automatiquement les modifications sur la machine distante. Il devrait fonctionner sur presque tous les systèmes POSIX (je l'utilise moi-même sous OS X pour me connecter à des machines Linux et éditer des fichiers en Sublime Text). C'est gratuit et open source. J'adorerais quelques commentaires.

Pour plus d'informations: il s'agit essentiellement d'un mashup Git / SSH écrit en Python qui vous permet d'éditer des fichiers et des dossiers sur une machine distante dans un éditeur local. Vous n'avez pas besoin de configurer les modules du noyau, vous n'avez pas besoin d'avoir une connexion persistante, tout est automatique, et cela n'interférera pas avec le contrôle de source existant car il utilise un référentiel Git hors-worktree. De plus, parce qu'il est construit sur Git, il est extrêmement rapide et prend en charge la fusion automatique de fichiers qui pourraient changer aux deux extrémités, contrairement à SSHFS / SFTP qui ne fera qu'encombrer tous les fichiers avec des horodatages plus anciens.

ravages-io
la source
Et j'ai écrit quelques articles de blog simples avec des scripts et des options de configuration qui font de ST2 + Xeno un combo incroyable. Www.yeraze.com
Yeraze
5

Vous pouvez utiliser sftp pour monter le répertoire distant sur votre machine de localisation, puis simplement ouvrir les fichiers en utilisant du texte Sublime comme vous le feriez normalement.

Pour monter le répertoire distant à l'aide de sftp, entrez ce qui suit sur votre gestionnaire de fichiers Linux;

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

Cela peut sembler lent en fonction de vos vitesses Internet. Mais cela a fonctionné pour moi.

David Okwii
la source
5

Je sais que c'est très vieux, mais j'ai une façon vraiment cool de faire ça qui mérite d'être partagée.

Ce qui est requis dans Conemu et WinSCP . Ce sont des instructions simples

  1. Ouvrez WinSCP.exe et connectez-vous à mon serveur distant souhaité (j'ai
    trouvé qu'il est important de se connecter avant de l'attacher ...).

  2. Dans les préférences pour WinSCP - deux paramètres à modifier. Choisissez l'interface de type Explorateur plutôt que Commander - pour ne pas voir les fichiers locaux. Sauf si vous le souhaitez (mais cela semble être nul ici). Configurez Sublime comme éditeur par défaut.

  3. Avec ConEmu ouvert, cliquez avec le bouton droit sur la barre d'onglets et sélectionnez l'option Attach to.... Une boîte de dialogue s'ouvrira avec vos applications en cours d'exécution. Choisissez, WinSCP et sélectionnez OK. ConEmu aura désormais un onglet ouvert avec WinSCP affichant vos fichiers distants.

  4. Faites un clic droit sur l'onglet WinSCP et choisissez New console.... Lorsque la boîte de dialogue s'ouvre, entrez le chemin d'accès à l'exécutable Sublime sur votre système. Avant d'appuyer sur Start, dans la case qui dit, New console splitsélectionnez le bouton radio to rightet définissez le pourcentage. Je choisis généralement 75%, mais vous pouvez personnaliser cela à votre guise, et cela peut être modifié plus tard.

    1. Maintenant, vous verrez Sublime dans la même fenêtre à droite de WinSCP. Dans Sublime, dans le menu Affichage, choisissez Sidebar->Hide Sidebaret bam, vous avez maintenant des fichiers distants exactement de la même manière que vous le feriez localement - avec quelques mises en garde bien sûr qui accompagnent la modification de quoi que ce soit à distance. WinSCP s'éclaircit cependant rapidement.

J'ai deux moniteurs - le navigateur Chrome de l'affichage du moniteur gauche, le moniteur droit affiche l'éditeur de code. Également dans ConEmu, je crée un autre onglet et ssh dans le site sur lequel je travaille, donc je peux faire des choses comme exécuter gulpou à gruntdistance et également manipuler des fichiers à partir de la ligne de commande. Sérieusement accéléré le développement.

Voici une capture d'écran:

Capture d'écran de la configuration

dgo
la source
5

C'est le moyen le plus simple de modifier localement des fichiers qui vivent sur un hôte distant où vous avez précédemment configuré ssh sur IP distante

# 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

Terminé !!!

Maintenant, sur l'hôte local, commencez simplement à éditer les fichiers ... lorsque vous listez dir localement, il ne peut rien répertorier jusqu'à ce que vous cd dans subdir ou listiez un fichier spécifique ... chargement paresseux ... cela n'a pas d'impact sur l'édition des fichiers

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

donc ci-dessus est en train de modifier le fichier distant à

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

Pour OSX ou Windows, voyez ce tut du genre sur Digital Ocean

Scott Stensland
la source
4

Une autre solution mac similaire à osxfuse consiste à simplement utiliser le client FTP Transmit de Panic Software, qui vous permet de monter un dossier distant en tant que disque local. Il prend en charge SFTP, qui est très sécurisé.

Gavster
la source
J'aime beaucoup cette option. Le montage devrait vous permettre d'ouvrir tout le lecteur comme un projet sublime.
Mic Fok
3

J'ai travaillé sur un projet appelé GiySync . Il a encore besoin de travail, mais c'est open source et je l'utilise tous les jours depuis quelques années. Je travaille également sur une version native d'OS X que j'ai appelée GitSyncApp

À l'heure actuelle, il s'agit uniquement d'OS X, mais il devrait être facile d'ajouter la prise en charge de Linux, et éventuellement de Windows également.

Il fonctionne en regardant les événements du système de fichiers et il utilise git pour synchroniser un dossier de projet sur votre machine locale et un serveur.

J'ai essayé les autres solutions comme le fusible osx, Expand Drive, Transmit, plusieurs solutions qui utilisaient rsync, etc.

De nombreuses options du système de fichiers font de la mise en cache pour améliorer les performances, ce qui est bien, jusqu'à ce que ce ne soit pas le cas. Comme si vous travaillez avec d'autres personnes et que quelqu'un d'autre modifie les fichiers sur le serveur.

J'ai également rencontré des problèmes si j'étais sur un réseau irrégulier ou lent où je me retrouverais avec des fichiers vides. Ou un fichier qui n'a pas été synchronisé, puis la mise en cache est devenue bizarre; j'espère que vous vous êtes engagé récemment. L'utilisation de git résout ce problème car il vérifie l'intégrité de chaque commit.

Deux bonus:

  1. Vous vous retrouvez avec un commit pour chaque sauvegarde. Ce n'est pas super utile, mais si jamais vous devez remonter dans le temps, vous le pouvez.
  2. Il fonctionne avec n'importe quel éditeur de texte.
Jachin
la source
0

En fonction de vos besoins exacts, vous pouvez envisager d'utiliser BitTorrent Sync. Créez un dossier partagé sur votre ordinateur personnel et votre ordinateur professionnel. Modifiez les fichiers sur votre ordinateur personnel (en utilisant Sublime ou tout ce que vous voulez), et ils se synchroniseront automatiquement lorsque vous enregistrez. BitTorrent Sync ne repose pas sur un serveur central stockant les fichiers (à la Dropbox et similaires), vous devriez donc en théorie être à l'écart de tout problème dû à un tiers stockant des informations sensibles.

thedudeabides
la source
0

Une solution qui a très bien fonctionné pour moi - éditez localement sur Mac et synchronisez automatiquement le fichier sur une machine distante

  1. Assurez-vous que vous disposez d'une connexion sans mot de passe à la machine distante. Sinon, suivez ces étapes http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. créez un fichier dans ~ / Library / LaunchAgents / filesynchronizer.plist, avec le contenu suivant:

    <?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. Dans une fenêtre de terminal, exécutez

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. C'est tout. Toutes les modifications apportées à des fichiers dans ~ / SyncDirectory seront synchronisées avec ~ / SyncDirectory sur la machine distante. Les modifications locales remplaceront toutes les modifications à distance.

Cela crée un travail launchd qui surveille SyncDirectory et chaque fois que quelque chose change, il exécute rsync pour synchroniser le répertoire avec la machine distante.

Ran Locar
la source
S'agit-il d'une synchronisation bidirectionnelle?
mordu le
Non; Machine locale à distante uniquement
Ran Locar
0

lsyncd semble être une bonne alternative à l'approche sshfs. Si vous utilisez "-delay 0", cela fonctionne en temps réel.

JLarky
la source
0

Utilisez FileZilla

Cela s'applique aux utilisateurs Mac et Windows (j'utilise sur Mac). J'ai utilisé plusieurs des réponses répertoriées au fil des ans et j'ai constaté que FileZilla répond bien à mes besoins lors de la modification de fichiers sur un hôte distant auquel j'ai accès SSH. Il est également rapide à configurer.

  • Je configure une nouvelle connexion au serveur
  • se connecter au serveur
  • faites un clic droit sur le fichier que je souhaite modifier et sélectionner View/Edit.

Cela fait apparaître mon éditeur par défaut (Sublime) mais cela fonctionnera avec n'importe quel éditeur que vous avez installé.

  • Une fois que j'ai enregistré le fichier, Filezilla me demande automatiquement si je souhaite "télécharger ce fichier sur le serveur", je clique sur "Oui", puis il est mis à jour.
Ben Havilland
la source