comment ssh vers un serveur distant et utiliser emacs local pour éditer des fichiers?

8

Existe-t-il un moyen d'utiliser les emacs installés sur mon ordinateur local pour accéder aux fichiers distants que j'ai sur un serveur distant? J'ai googlé et découvert que je devrais utiliser TrampMode mais il est nécessaire pour moi de connaître le chemin exact du fichier. N'y a-t-il pas un moyen pour moi d'ouvrir une connexion ssh au serveur distant et à partir de là, d'ouvrir les fichiers avec les emacs locaux sur mon ordinateur?

starcorn
la source

Réponses:

5

Il existe différentes façons de le faire, mais en général, vous abordez ce problème à l'envers. Copiez vos configurations emacs sur la machine distante et utilisez emacs local dans les fichiers que vous modifiez.

Les "différentes manières de procéder" se diviseraient en deux catégories. Le premier serait de monter localement un lecteur distant via quelque chose comme sshfs, un système de fichiers fusible, samba, nfs ou tout autre système de montage pour apporter un accès de niveau fichier à votre machine. Deuxièmement, divers programmes vous permettent de vous connecter et de parcourir un système distant, puis d'opérer sur des fichiers en en transférant une copie dans un fichier temporaire local, en le modifiant, puis en le retransférant. Plusieurs programmes rendent ce processus assez transparent, mais c'est un hack.

Caleb
la source
1
«Plusieurs programmes rendent ce processus assez transparent, mais c'est un hack.»: C'est à cela que sert Tramp (qui est livré avec Emacs de nos jours). Ce n'est pas un hack, c'est une façon naturelle de travailler avec des fichiers distants.
Gilles 'SO- arrête d'être méchant'
@ Gilles: Je ne sais rien Tramp, donc mon allégation "hack" ne doit pas nécessairement s'appliquer. Je pensais en particulier à divers programmes de gestion de fichiers qui ont des éléments de menu comme "ouvrir dans un éditeur". Bien que ceux-ci fonctionnent pour ouvrir un fichier, ils sont généralement fragiles dans la mesure où ils nécessitent que le fichier soit copié, modifié, recopié, etc. sur les fichiers. Si vous connaissez un moyen de contourner les limitations de Tramp@starcorn dont vous vous plaignez, ajoutez une autre réponse!
Caleb
1
Avec Tramp, l'éditeur fait le travail, il sait donc pousser lors de l'enregistrement et ainsi de suite. La solution idéale serait de faire interagir emacsserver et ssh, mais c'est difficile. Les deux solutions de contournement que j'aurais proposées sont sshfs et eshell, toutes deux déjà mentionnées.
Gilles 'SO- arrête d'être méchant'
2

Ou vous pouvez ouvrir emacs, exécuter eshell, puis cd sur la machine distante, comme:

cd /hostname:~

Maintenant, exécutez les commandes shell, accédez au fichier souhaité et ouvrez-le:

find-file filename
minaev
la source
2

Je pense que Tramp est ce que vous recherchez. Vous pouvez utiliser le mode Dired pour parcourir les répertoires distants et rechercher le fichier souhaité.

Par exemple, si je recherche un fichier /etc/sur une machine distante rem, je ferais ce qui suit:

  • Emacs ouverts
  • frappé C-x C-f
  • supprimer le chemin déjà présent
  • tapez /rem:/etc/et appuyez sur Entrée.

Vous obtiendrez une sortie comme celle-ci:

/ssh:rem:/etc:
total 1460
drwxr-xr-x 141 root root    12288 Aug 12 06:46 .
drwxr-xr-x  23 root root     4096 Jul 18 23:48 ..
drwx------   6 root root     4096 Nov 17  2009 .bzr
-rw-------   1 root root      749 Jul 18 23:30 .bzrignore
-rwx------   1 root root    10015 Aug 12 09:17 .etckeeper
drwxr-xr-x   3 root root     4096 Aug  6 00:47 .java
-rw-------   1 root root        0 Nov 17  2009 .pwd.lock

Ensuite, vous pouvez utiliser par exemple les touches fléchées pour trouver le fichier que vous souhaitez modifier. Appuyez sur Entrée lorsque le curseur se trouve sur le fichier pour le modifier.

ph0t0nix
la source