web-dev-qa-db-fra.com

Comment utiliser Sublime sur SSH

J'essaie d'utiliser Sublime Text 2 en tant qu'éditeur lorsque je me connecte à mon serveur de travail, et je suis perplexe. J'ai trouvé ceci http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (parmi beaucoup d'autres articles) qui pourrait aider, mais je ne le fais pas Ne le suivez pas exactement, en particulier avec les valeurs que je devrais mettre dans la variable distante de la ligne 5. J'ai placé "/ 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

229
thumbtackthief

Il y a trois façons:

En outre, en théorie, vous pouvez installer X11 sur le serveur distant et y exécuter Sublime sur un transfert VNC ou X11, mais cela ne servirait à rien.

153
Mikko Ohtamaa

Vous pouvez utiliser rsub , inspiré de la variable rmate de TextMate. De la description: 

Rsub est une implémentation de la fonctionnalité "rmate" de TextMate 2 pour Sublime Text 2, permettant la modification de fichiers sur un serveur distant à l'aide du transfert/tunneling de port SSH.

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

98
ubik

Je suis sous Windows et ai utilisé 4 méthodes: SFTP, WinSCP, Unison et Sublime Text sur Linux avec X11 transféré de SSH à Windows (oui, vous pouvez faites-le sans configs et en utilisant un outil gratuit).

La quatrième méthode est la meilleure si vous pouvez installer un logiciel sur votre machine Linux.

La quatrième façon:

MobaXterm

  1. Installer MobaXterm sous Windows
  2. SSH sur votre machine Linux depuis MobaXterm
  3. Installez Sublime Text 3 sur votre machine Linux. Voici comment faire pour Ubuntu
  4. A l'invite de commande, démarrez sublime avec subl
  5. C'est tout! Vous avez maintenant du texte sublime sous Linux, mais sa fenêtre s'exécute sur votre bureau Windows. Cela est possible car MobaXterm gère la redirection X11 sur SSH pour vous, de sorte que vous ne devez rien faire de génial pour la faire fonctionner. Il peut y avoir beaucoup de retard, mais vos fichiers ne seront jamais désynchronisés, car vous les éditez directement sur la machine Linux.

Remarque: Lorsque vous appelez subl s'il se plaint d'une certaine bibliothèque, veillez à les installer pour pouvoir appeler sublimetext à partir de mobaxterm.

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

  • C'est gratuit
  • C'est rapide
  • C'est fiable et peu importe l'éditeur que vous utilisez
  • Vous pouvez créer des listes ignorées personnalisées

SFTP

Installation: Installez le package SFTP Sublime Text. Ce paquet nécessite une licence.

  1. Créer un nouveau dossier
  2. Ouvrez-le en tant que projet texte sublime.
  3. Dans la barre latérale, cliquez avec le bouton droit sur le dossier et sélectionnez Mappage à distance.
  4. Editez le fichier sftp-config.json
  5. Faites un clic droit sur le dossier à l'étape 1, sélectionnez Télécharger.
  6. Travailler localement.

Dans le sftp-config, je définis généralement:

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

Ceci, en plus d’un terminal SSH sur 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. Définissez le mode de transfert sur binaire (vous ne voulez pas de conversions de lignes)
  4. Définir la modification du fichier sur "Pas de changement"
  5. Cliquez sur le bouton Modifier en regard de Masque de fichier et configurez vos fichiers et dossiers d'inclusion et d'exclusion (utile en cas de présence d'un dossier .git/.svn ou d'exclusion des produits de la génération 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 votre nouveau paramètre prédéfini de paramètres de transfert.
  10. Pour finir, appuyez sur Ctrl + U (Commandes> Garder le répertoire distant à jour) et assurez-vous que les options "Synchroniser au démarrage" et "Mettre à jour les sous-répertoires" sont cochées.

A partir de ce moment, WinSCP conservera vos modifications synchronisées.

Travaillez dans le dossier local avec SublimeText. Assurez-vous simplement que Sublime Text est configuré pour deviner les fins de ligne du fichier en cours de modification.

Unison

J'ai constaté que si l'arborescence source est massive (quelques centaines de Mo avec une hiérarchie profonde), la méthode WinSCP décrite ci-dessus risque d'ê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 par une pression sur une touche) et nécessite qu'un composant serveur soit exécuté sur votre machine Linux. Le côté positif est que les transferts sont incroyablement rapides, très fiables et qu’ignorer les fichiers, les dossiers et les extensions est incroyablement facile à configurer. 

65
Carl

Pour faire suite à la réponse de @ ubik, voici les trois étapes simples (uniques) permettant à la commande 'subl' de fonctionner sur votre serveur distant:

  1. [Local] Installez le package rsub dans Sublime Text à l'aide de Sublime Package Manager
  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. [Server] Exécutez la commande Bash suivante sur votre serveur distant (cela installera la commande 'subl' Shell):

    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

32
user456584

Je suis sur MaxOS, 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 éditer votre fichier à l'aide de votre éditeur local. CyberDuck télécharge le fichier dans un emplacement temporaire sur votre système d'exploitation local et l'ouvre avec votre éditeur. Une fois le fichier sauvegardé, CyberDuck le télécharge automatiquement sur votre système distant. Cela semble transparent, comme si vous éditiez votre fichier distant en utilisant votre éditeur local.

10
bizi

Vous pouvez essayer quelque chose sur lequel j'ai travaillé et qui s'appelle ' xeno '. Cela vous permettra d'ouvrir des fichiers/dossiers dans Sublime Text (ou tout éditeur local réellement) via une connexion SSH et de synchroniser automatiquement les modifications apportées à la machine distante. Cela 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 au format Sublime Text). C'est gratuit et open source. J'aimerais des commentaires.

Pour plus d'informations: il s'agit essentiellement d'un mashup Git/SSH écrit en Python qui vous permet de modifier 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, c'est tout automatique, et cela n'interférera pas avec le contrôle de source existant, car il utilise un référentiel Git en dehors de la structure de travail. En outre, comme il est construit sur Git, il est extrêmement rapide et prend en charge la fusion automatique des fichiers susceptibles de changer des deux côtés, contrairement à SSHFS/SFTP qui ne fera que masquer tous les fichiers avec des horodatages plus anciens.

8
havoc-io

C’est le moyen le plus simple d’éditer localement des fichiers stockés sur un hôte distant sur lequel vous avez déjà configuré ssh en IP distant.

# 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 à modifier les fichiers ... lorsque vous répertoriez le répertoire en local, il est possible que rien ne soit répertorié tant que vous n'avez pas inséré un répertoire dans un répertoire spécifique ou un fichier spécifique ... Chargement paresseux ... cela n'a aucune incidence sur la modification 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 gentilhomme de Digital Ocean

5
Scott Stensland

Je sais que c'est bien vieux, mais j'ai une façon très cool de le faire 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 au serveur distant souhaité (j’ai
    trouve qu'il est important de se connecter avant de joindre ...).

  2. Dans les préférences de WinSCP, vous devez modifier deux paramètres. Choisissez une interface de type Explorer plutôt que Commander - pour ne pas voir les fichiers locaux. À moins que vous ne le vouliez (mais ça a l'air d'être nul ici). Configurez Sublime comme éditeur par défaut.

  3. ConEmu étant ouvert, cliquez avec le bouton droit sur la barre d’onglet et sélectionnez l’option Attach to.... Une boîte de dialogue s'ouvrira avec vos applications en cours d'exécution. Choisissez WinSCP, puis sélectionnez OK. ConEmu aura maintenant 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 New console split, sélectionnez le bouton radio to right et définissez le pourcentage. Je choisis généralement 75%, mais vous pouvez le personnaliser à votre guise et le modifier ultérieurement.

    1. Maintenant, vous verrez Sublime dans la même fenêtre, à droite de WinSCP. Dans Sublime, dans le menu Affichage, choisissez Sidebar->Hide Sidebar, et bam, vous avez maintenant des fichiers distants de la même manière que vous le feriez localement - avec quelques mises en garde bien entendu que vous devez modifier quoi que ce soit à distance. WinSCP est rapide comme l'éclair.

J'ai deux moniteurs: le navigateur Chrome de l'écran gauche, l'éditeur de code des écrans droits. Également dans ConEmu, je crée un autre onglet et ssh sur le site sur lequel je travaille, afin de pouvoir exécuter des opérations comme exécuter gulp ou grunt à distance et manipuler des fichiers à partir de la ligne de commande. Sérieusement accéléré le développement.

Voici une capture d'écran:

Setup Screenshot

5
dgo

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 supporte SFTP, qui est très sécurisé.

4
Gavster

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

Pour monter un répertoire distant à l’aide de sftp, entrez les informations suivantes dans votre gestionnaire de fichiers Linux; 

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

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

4
David Okwii

Je travaille sur un projet appelé GiySync . Il faut encore du travail, mais il 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

Pour l'instant, il s'agit uniquement d'OS X, mais il devrait être facile d'ajouter un support pour Linux et éventuellement aussi pour Windows.

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

J'ai essayé d'autres solutions telles que osx Fuse, Expand Drive, Transmit, plusieurs solutions utilisant rsync, etc. Elles fonctionnent toutes correctement pour les petits projets, mais si vous travaillez avec beaucoup de code, elles ne fonctionnent pas pour moi.

De nombreuses options du système de fichiers utilisent la mise en cache pour améliorer les performances, ce qui est bien, jusqu'à ce que ce ne soit pas le cas. Par exemple, 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 instable ou lent où je me retrouverais avec des fichiers vides. Ou un fichier qui n'a pas été synchronisé, la mise en cache est devenue bizarre; j'espère que vous avez commis récemment. Utiliser git résout ce problème car il vérifie l'intégrité de chaque commit.

Deux fonctionnalités bonus:

  1. Vous vous retrouvez avec un commit pour chaque sauvegarde. Ce n'est pas très utile, mais si vous devez remonter dans le temps, vous le pouvez.
  2. Cela fonctionne avec n'importe quel éditeur de texte.
3
Jachin

Une solution qui a très bien fonctionné pour moi: éditez localement sur Mac et synchronisez automatiquement le fichier sur un ordinateur distant.

  1. Assurez-vous que vous avez 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 

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. C'est tout. Toute modification des fichiers dans ~/SyncDirectory sera synchronisée avec ~/SyncDirectory sur la machine distante. Les modifications locales remplaceront toutes les modifications distantes.

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 sur la machine distante.

0
Ran Locar

Utilisez FileZilla

Ceci s’applique aux utilisateurs Mac et Windows (j’utilise sur Mac). J'ai utilisé plusieurs des réponses énumérées au fil des ans et j'ai constaté que FileZilla répond bien à mes besoins lors de l'édition de fichiers sur un hôte distant auquel j'ai accès à SSH. C'est aussi rapide à installer.

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

Cela ouvre mon éditeur par défaut (Sublime) mais cela fonctionnera avec n’importe quel éditeur que vous avez installé.

  • Une fois le fichier sauvegardé, Filezilla me demande automatiquement si je souhaite "Transférer ce fichier sur le serveur", je clique sur "Oui", puis il est mis à jour.
0
Ben Havilland

En fonction de vos besoins, vous pouvez envisager d’utiliser BitTorrent Sync. Créez un dossier partagé sur votre PC à la maison et votre PC de travail. Modifiez les fichiers sur votre ordinateur personnel (à l’aide de Sublime ou de ce que vous voulez) et ils se synchroniseront automatiquement lorsque vous enregistrez. BitTorrent Sync ne repose pas sur un serveur central qui stocke les fichiers (comme Dropbox, etc.), vous devez donc théoriquement éviter tout problème dû à un tiers qui stocke des informations sensibles.

0
thedudeabides

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

0
JLarky