37 votes

Comment faire du développement à distance avec Emacs?

J'ai commencé à utiliser emacs comme mon éditeur il y a quelques jours, et je suis dans le processus de rassemblement de toutes les personnalisations dont j'ai besoin.

La principale utilisation, je suis en train de faire il est pour le développement d'un projet C distance sur une machine Linux (RHEL 5). Jusqu'à présent j'ai été en utilisant la plaine de vim (seulement comme un éditeur de texte) et un tas de scripts shell, et un jour j'ai décidé d'essayer d'emacs. Jusqu'à présent, je l'aime.

Mais comme inconvénient que je vois que la configuration de l'environnement pour exécuter emacs est un long chemin à parcourir, et au lieu de l'utiliser directement sur la machine de développement (et de configurer l'environnement sur toutes les machines que j'utilise), je voudrais essayer de l'utiliser à partir de mon ordinateur portable et de faire le développement à distance.

Je sais à propos de CLOCHARD, mais seulement des modifications de fichiers distants, pour autant que je sais. Le grand obstacle est en cours d'exécution des commandes shell sur la machine distante avec une seule touche (j'ai lié F5 pour exécuter une compilation personnalisée de commande sur la machine distante emacs).

Comment exécuter des commandes shell sur une machine distante avec un seul emacs de frappe? Connaissez-vous d'autres trucs et astuces pour faire le plein développement à distance?

23voto

Trey Jackson Points 49816

TRAMP prend en charge la compilation et le débogage sur les ordinateurs distants (sur lesquels résident les fichiers). Cela devrait être automatique et relativement transparent. Consultez la documentation pour les processus distants .

20voto

Matthew Flaschen Points 131723

Ne t'inquiète pas. Vous pouvez exécuter n'importe quoi dans Emacs en une seule frappe. D'autres ont déjà noté comment TRAMP peut le faire avec élégance, mais si cela ne vous convient pas (pour quelque raison que ce soit), vous pouvez également créer votre propre fonction en utilisant:

 (defun arbitrary-remote-command ()
  (interactive)
  (shell-command
   "ssh user@remotehost arbitrary-command"))


(global-set-key (kbd "<f5>") 'arbitrary-remote-command)
 

10voto

Greg Hewgill Points 356191

Lorsque vous faites de développement à distance, j'utilise screen qui offre de multiples virtuel à distance des terminaux disponibles à la presse d'un couple de clés. C'est indispensable pour moi. Non seulement il fournit des terminaux virtuels, mais votre session est conservée sur le serveur si votre connexion interrompue pour une raison quelconque.

Voir la GNU Écran Guide de Survie en question pour plus d'informations sur la prise en main screen.

J'ai habituellement un terminal ouvert à la source, les opérations de contrôle, l'une pour l'édition, l'un pour la compilation (je n'ai qu'à y aller et frapper la flèche haut+Entrée), et un pour le débogage. En fonction de l'environnement et de l'application que je travaille, j'ai peut-être plus ou moins que cela, mais c'est la disposition générale.

5voto

German Points 1119

Belle réponse de Trey Jackson, mais la réponse de Matthieu Flaschen m'a effectivement aidé plus.

Je ne pouvais pas trouver un moyen d'obtenir des DÉBRIS de faire de la compilation, mais accidentellement, j'ai trouvé la commande à distance de la compilation.

Maintenant, j'ai juste ajouter ces lignes dans mon .emacs:

(setq remote-compile-user "root")
(setq remote-compile-host "localhost -p 3000")  ;This is just when tunneling
(setq compile-command " cd /usr/src/nexus/traffic && ./builder.sh compile ; cat builder.log")
(global-set-key (kbd "<f5>") 'remote-compile)

Et avant de faire quoi que ce soit, configurer la connexion ssh à l'aide de ControlMaster et je n'ai pas à taper des mots de passe.

En résumant:

  • L'édition de fichiers à distance: TRAMP
  • Plusieurs terminaux d'économie: ÉCRAN
  • Définir emacs raccourcis clavier pour exécuter commandes à distance: Voir Matthieu Flaschen réponse
  • Distance de la compilation: Commande distance compiler avec ControlMaster

Je pense que certaines actions importantes à faire à distance-développement.

2voto

killdash10 Points 528

Je voudrais juste faire un ssh sur la machine distante et lancez emacs en mode terminal au lieu d'utiliser CLOCHARD. VAGABOND est vraiment très lent lorsque vous ne vous attendez pas la lenteur, au moins dans mon expérience. J'ai aussi vu échouer étranges façons, et il n'est pas toujours évident pour le "réparer". Si vous ssh, vous ne serez pas en mesure d'utiliser emacs trucs de l'INTERFACE utilisateur, comme les menus, etc, mais puisque vous avez l'habitude de vi qui ne devrait pas être un problème pour vous. En fait, vous pouvez simplement les désactiver afin que votre ssh emacs expérience est très similaire à la votre expérience locale (si local != mode terminal) (1).

À l'aide de l'écran peut être utile si vous vous souciez de la préservation de votre session dans le cas où la connexion tombe - en dehors de cela, vous obtenez les mêmes fonctionnalités que les terminaux virtuels avec emacs tampons. Par exemple, vous pouvez ouvrir un grand nombre de shell tampons et d'exécuter diverses commandes shell dans emacs tampons. Je l'utilise pour exécuter plusieurs instances de sqlplus (utiliser renommez-tampon pour leur donner tout agréable, sympathique noms).

Puisque vous êtes ssh avais dans la machine distante, vous n'avez pas besoin de vous soucier de l'exécution de "distance" commandes du shell.

D'autre part, je ne suis pas sûr de ce que tu veux dire par "je vois que la mise en place de l'environnement d'exécution emacs est un long chemin à parcourir". Si vous avez de contrôle à la source, ce devrait être assez simple...(je parie que vous avez une bonne raison).

(1) désactiver le menu, barre d'outils et les barres de défilement:

(si (fboundp " menu-bar-mode) (barre de menu en mode -1))

(si (fboundp 'outil-bar-mode) (barre d'outils en mode -1))

(si (fboundp 'scroll-bar-mode) (barre de défilement en mode -1))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X