Quelle est la meilleure façon d'ouvrir des fichiers à distance avec emacs et ssh
- Je me connecter à la machine distante avec ssh [email protected]
. Quand j'en ai besoin pour ouvrir un fichier sur la machine distante je n'ai, par exemple,
emacs /usr/share/nginx/html/index.html
et qui ouvre la index.html
fichier dans le shell. J'ai remarqué que certaines commandes emacs travail, mais d'autres ne fonctionnent pas. Par exemple, C-w
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.
- Quels sont quelques exemples de commandes que faire du travail? (Parfois différents raccourcis clavier existent sur la machine distante - vérifiez vos .emacs fichier sur la machine distante et parfois, toute une clé fonctionne différemment - par exemple, GNU écran par défaut absorbe la Ctrl-une partie d'Une commande avant, il peut arriver à emacs.)
- C-espace, C-F,C-g fonctionne
- Je ne pouvais pas trouver la .emacs fichier sur la machine distante, mais maintenant je sais que je n'ai pas de nouvelles raccourcis clavier dans l'autre machine
- oui, je ne suis pas sûr de ce qui conduit à cette série de raccourcis clavier ne fonctionnent pas. Ne emacs ouvrir le fichier dans le même mode sur le serveur distant comme il allait ouvrir localement (où toutes les commandes ont été de travail)? Peut-être this pourrait donner un indice -
M-x describe-mode
. - Avez-vous aussi lancez emacs sur votre machine locale? Est-il une raison quelconque vous souhaitez utiliser la télécommande emacs vs local?
- oui, je l'ai ouvert en distance maching de la même manière à partir de la ligne de commande et C-w, M-o, C-y... étaient tout fonctionne correctement.
- Je suis l'aide de la télécommande de l'ordinateur portable comme un serveur et il serait agréable de travailler avec des fichiers de configuration par ssh, bien qu'à ce stade, je garde la distance de l'ordinateur portable aussi proches. Mais j'ai l'intention d'acheter un serveur et de le mettre à l'écart, dans ce cas, je voudrais modifier des fichiers avec le protocole ssh.
- Donc... c'était une question d'être dans un autre mode emacs? (je ne sais pas si je suis la compréhension de votre réponse correctement.)
Vous devez vous connecter pour publier un commentaire.
Je préfère généralement l'ouverture à distance des fichiers à partir d'un local Emacs instance.
Lors de l'exécution d'Emacs sur votre machine locale, l'ouverture d'un fichier distant via ssh n'est pas très différent de celui d'ouvrir un autre fichier en plus un peu syntaxe différente.
Pour ssh, vous pouvez taper
C-x C-f
. Maintenant, dans le minubuffer vous voulez de type/ssh:user@host:/path/to/file
(Notez que la saisie semi-automatique fonctionne dès que vous commencez à taper un chemin. Notez également le premier/
caractère). Voir l'intégralité de l' docs ici.Dans votre exemple, ce serait:
Maintenant, vous pouvez éditer des fichiers distants via ssh dans Emacs pendant l'utilisation de votre configuration locale et de tous les paquets installés, etc...
tramp
et il est l'un des plus utiles les choses que vous aurez jamais utiliser. Même compile à distance!index.html
car il dit que le tampon est en lecture seule. Mais je peux modifier le même fichier si j'ai ouvert sur l'ordinateur distant. Par ailleurs, quand j'ai ouvert le fichier avecC-x C-f /ssh:user@host filename
il m'a demandé le mot de passe./method:user@host#port:filename
Juste pour ajouter à la réponse ci-dessus, vous pouvez écrire des raccourcis pour les machines que vous utilisez
fréquemment:
Cela va ouvrir une
dired
tampon sur une machine distante. Vous pouvez naviguer sur ce tamponcomme vous le feriez d'un local.
Si vous avez défini des clés ssh de la machine distante, vous n'avez même pas à entrer le mot de passe.
Si vous avez un tas de machines à distance, vous pouvez donner un nom reconnaissable
pour chaque fonction, par exemple
connect-cupcake
,connect-kitkat
et l'utilisationsmex
package pour l'achèvement./usr/share/nginx/html/index.html
si je l'ouvre sur la machine distante; mais quand je l'ouvre avec ssh,index.html
est en lecture seule. Pourquoi est-ce?/usr/share/
.C-x C-f /sudo ssh:user@host filename
mais qui ne fonctionne pas./usr/share/nginx/html/
dossier avecchown
./etc/nginx/sites-available/example.com.conf
et l'a édité et enregistré et fermé. Maintenant, je l'ai ouvert à nouveau, et cette fois je ne peux pas le modifier? Je suppose qu'il a à faire quelque chose avec les autorisations. Pouvez-vous m'aider à comprendre pourquoi cela se passe?C-x d
va vous montrer que.C-x C-q
pouvez passer dans et hors de la mode lecture seule, à condition que vous disposez des autorisations nécessaires.Et pour ajouter à @abo abo post sur "raccourcis" --
Utilisation d'Emacs signets. Il suffit de créer des signets normalement, lorsque vous visitez une distance de fichier ou de répertoire. Ensuite, utilisez simplement
C-x r b
pour accéder à un signet distant, dont le nom vous fournir (à l'achèvement).Si vous utilisez Signet+ à distance, les signets sont spécialement mis en évidence dans le
*Bookmark List*
, de sorte que vous pouvez les reconnaître plus facilement. Et à distance des signets qui doivent être accessibles parsu
ousudo
(root
) sont mises en évidence de manière différente.Si vous utilisez Dired+ alors vous pouvez aussi rapidement signet à distance multiples fichiers ou des répertoires, en visitant leur contenant le répertoire distant dans Dired, de marquage, et de frapper
C-x b
. Pas besoin de donner les noms des signets; ils sont nommés d'après les fichiers. Même si vous n'avez jamais utiliser les signets pour naviguer dans les fichiers distants, vous pouvez les utiliser avec Signet+ tags pour organiser les fichiers et donc fonctionner sur des sous-ensembles d'entre eux.Si vous utilisez Glaçons alors à chaque fois que vous utilisez une commande pour accéder à un signet, vous pouvez limiter la réalisation des candidats à ceux qui sont à distance en appuyant sur
C-M-@
cours d'achèvement.L'affiche originale manifesté de l'intérêt à l'ouverture des fichiers à distance en tant qu'utilisateur root. Cela peut être fait avec la commande:
C-x C-f /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 qui se concentre sur la machine distante:
Si j'ai l'intention de faire tout mon emacs travail sur la machine distante, j'utilise
puis lancez emacs dans la session à distance, l'affichage de retour sur ma machine locale. C'est une vieille question, mais je voulais la jeter cela à des fins d'exhaustivité. Accordée il y a quelques xhost /X config questions, mais dans de nombreux réseaux de cela fonctionnera dès le départ!
SSH mode pour emacs est ce que vous cherchez.
Une fois que vous avez mis en place vous venez d'exécuter
Puis il vous invite à entrer votre mot de passe deux fois (une fois pour la ligne de commande, une fois pour le chargement de 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 de l'annuaire que vous êtes, ainsi, lorsque vous voulez ouvrir un fichier à partir du répertoire vous cherchez à elle démarre automatiquement dans le bon répertoire, et vous avez juste besoin d'entrer dans le nom de fichier.
Emacs Wiki a plus d'infos trop.