Quelle est la meilleure façon d’ouvrir les fichiers distants avec emacs et ssh

Je me connecte à la machine distante avec ssh [email protected] . Quand j’ai besoin d’ouvrir un fichier sur la machine distante que je fais, par exemple,

emacs /usr/share/nginx/html/index.html

et qui ouvre le fichier index.html dans le shell. J’ai remarqué que certaines commandes emacs fonctionnent mais que d’autres ne fonctionnent pas. Par exemple, Cw ne fonctionne pas; M-< ne fonctionne pas. Comment puis-je résoudre ce problème et quelle est la meilleure façon de travailler avec emacs et ssh?

J’ai trouvé cette question mais cela m’a rendu plus confus.

Je préfère généralement ouvrir des fichiers distants à partir d’une instance locale d’Emacs.

Lors de l’exécution d’Emacs sur votre ordinateur local , l’ouverture d’un fichier distant sur ssh n’est pas très différente de l’ouverture d’un autre fichier en plus d’une syntaxe légèrement différente .

Pour ssh, vous pouvez taper Cx Cf Maintenant, dans le mini-tampon que vous voulez taper /ssh:user@host:/path/to/file (notez que la complétion par tabulation fonctionnera une fois que vous aurez tapé un chemin. Notez également le caractère / caractère). Voir les documents complets ici .

Dans votre exemple, ce serait:

 Cx Cf /ssh:[email protected]:/usr/share/nginx/html/index.html 

Maintenant, vous pouvez éditer des fichiers distants sur ssh dans Emacs en utilisant votre configuration locale et tout paquet installé, etc …

Juste pour append à la réponse ci-dessus, vous pouvez écrire des raccourcis pour les machines que vous utilisez fréquemment:

 (defun connect-remote () (interactive) (dired "/[email protected]:/")) 

Cela ouvrira un tampon dired sur une machine distante. Vous pouvez naviguer dans ce tampon comme vous le feriez avec un tampon local.

Si vous avez configuré des clés SSH pour la machine distante, vous n’avez même pas besoin de saisir le mot de passe.

Si vous avez un tas de machines distantes, vous pouvez donner un nom reconnaissable à chaque fonction, par exemple connect-cupcake , connect-kitkat et utiliser le package smex pour terminer.

Et d’append au post de @abo-abo sur les “raccourcis” –

Utilisez les signets Emacs. Créez simplement des signets lorsque vous visitez un fichier ou un répertoire distant. Ensuite, utilisez simplement Cx rb pour accéder à un signet distant, dont vous indiquez le nom (avec l’achèvement).

Si vous utilisez Bookmark +, les signets distants sont mis en évidence spécialement dans la *Bookmark List* , afin que vous puissiez les reconnaître plus facilement. Et les signets distants auxquels il faut accéder par su ou sudo ( root ) sont mis en évidence différemment.

Si vous utilisez Dired +, vous pouvez également marquer rapidement plusieurs fichiers ou répertoires distants en visitant leur répertoire distant contenant dans Dired, en les marquant et en appuyant sur Cx b . Pas besoin de donner les noms des signets; ils sont nommés d’après les fichiers. Même si vous n’utilisez jamais ces signets pour naviguer vers les fichiers distants, vous pouvez les utiliser avec les tags Bookmark + pour organiser les fichiers et ainsi opérer sur des sous-ensembles de ceux-ci.

Si vous utilisez Icicles, chaque fois que vous utilisez une commande pour accéder à un signet, vous pouvez restreindre les candidats à l’achèvement à ceux qui sont distants en appuyant sur CM-@ à la fin.

L’affiche originale a manifesté son intérêt pour l’ouverture de fichiers distants en tant qu’utilisateur root. Cela peut être fait avec la commande:

Cx Cf /ssh:you@remotehost|sudo:remotehost:/path/to/file RET

Plus de documentation peut être trouvée ici: https://www.emacswiki.org/emacs/TrampMode#toc14

Une réponse simple axée sur la machine distante:

Si je prévois de faire fonctionner tous mes emacs sur la machine distante, j’utilise

 ssh -X username@hostname 

puis exécutez emacs dans la session à distance, en affichant sur ma machine locale. C’est une vieille question mais je voulais que cela soit complet. Certes, il existe des problèmes de configuration avec xhost / X, mais dans de nombreux réseaux, cela fonctionnera dès le départ!

Le mode SSH pour emacs est ce que vous recherchez.

Une fois que vous l’avez configuré, vous venez de lancer

 Mx ssh RET hostname RET 

Ensuite, il vous demande votre mot de passe deux fois (une fois pour la ligne de commande, une fois pour le chargement des fichiers).

Pour la plupart, vous pouvez le traiter comme n’importe quel autre shell (non interactif et quelques différences mineures, mais c’est tout).

Il garde la trace du répertoire dans lequel vous vous trouvez, de sorte que lorsque vous souhaitez ouvrir un fichier à partir du répertoire que vous recherchez, il démarre automatiquement dans le bon répertoire et il vous suffit d’entrer le nom du fichier.

Emacs Wiki a aussi plus d’informations.