it-swarm.com.de

Was ist der beste Weg, um Remote-Dateien mit Emacs und ssh zu öffnen

Ich verbinde mich mit ssh [email protected]. Wenn ich eine Datei auf dem Remote-Computer öffnen muss, z.

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

und das öffnet die index.html Datei in der Shell. Mir ist aufgefallen, dass einige Emacs-Befehle funktionieren, andere jedoch nicht. Zum Beispiel, C-w funktioniert nicht; M-< funktioniert nicht. Wie kann ich das beheben und wie arbeite ich am besten mit Emacs und ssh?

Ich fand diese Frage aber es machte mich verwirrter.

66
Zeynel

Im Allgemeinen bevorzuge ich das Öffnen von Remote-Dateien aus einer lokalen Emacs-Instanz.

Während Sie Emacs auf Ihrem lokalen Computer ausführen , unterscheidet sich das Öffnen einer Remote-Datei über ssh nur geringfügig vom Öffnen einer anderen Datei als einer leicht anderen Syntax) .

Für ssh können Sie C-x C-f Eingeben. Nun möchten Sie im Minipuffer /ssh:[email protected]:/path/to/file Eingeben (Beachten Sie, dass die Tabulatorvervollständigung funktioniert, sobald Sie mit der Eingabe eines Pfads beginnen. Beachten Sie auch das führende Zeichen /). Siehe das vollständige docs hier .

In Ihrem Beispiel wäre das:

C-x C-f /ssh:[email protected]:/usr/share/nginx/html/index.html

Jetzt können Sie Remote-Dateien über ssh in Emacs bearbeiten, während Sie Ihre lokale Konfiguration und alle installierten Pakete usw. verwenden.

125
Carl Groner

Um die obige Antwort zu ergänzen, können Sie Verknüpfungen für häufig verwendete Computer erstellen:

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

Dies öffnet einen dired Puffer auf einem entfernten Rechner. Sie können in diesem Puffer wie in einem lokalen navigieren.

Wenn Sie SSH-Schlüssel für den Remote-Computer eingerichtet haben, müssen Sie nicht einmal das Kennwort eingeben.

Wenn Sie mehrere entfernte Maschinen haben, können Sie jeder Funktion einen erkennbaren Namen geben, z. connect-cupcake, connect-KitKat und benutze smex als Abschluss.

23
abo-abo

Und zum Beitrag von @ abo-abo über "Verknüpfungen" hinzuzufügen -

Emacs-Lesezeichen verwenden. Erstellen Sie Lesezeichen normalerweise, wenn Sie eine entfernte Datei oder ein entferntes Verzeichnis besuchen. Verwenden Sie dann einfach C-x r b, Um zu einem entfernten Lesezeichen zu springen, dessen Namen Sie angeben (mit Vervollständigung).

Wenn Sie Lesezeichen + verwenden, werden entfernte Lesezeichen im *Bookmark List* Besonders hervorgehoben, damit Sie dies tun können erkennen sie leichter. Und entfernte Lesezeichen, auf die mit su oder Sudo (root) zugegriffen werden muss, werden unterschiedlich hervorgehoben.

Wenn Sie Dired + verwenden, können Sie auch schnell mehrere entfernte Dateien oder Verzeichnisse mit einem Lesezeichen versehen, indem Sie das entsprechende entfernte Verzeichnis aufrufen in Dired, markiere sie und drücke C-x b. Es ist nicht erforderlich, die Lesezeichen mit Namen zu versehen. Sie sind nach den Dateien benannt. Auch wenn Sie diese Lesezeichen niemals zum Navigieren zu den entfernten Dateien verwenden, können Sie sie mit Lesezeichen + Tags verwenden = , um die Dateien zu organisieren und so Teilmengen von ihnen zu bearbeiten.

Wenn Sie Icicles verwenden, können Sie die Vervollständigungskandidaten eingrenzen, wenn Sie mit einem Befehl zu einem Lesezeichen springen für diejenigen, die sich in der Ferne befinden, drücken Sie während des Abschlusses [email protected].

17
Drew

Das ursprüngliche Poster zeigte Interesse daran, entfernte Dateien als Root-Benutzer zu öffnen. Dies kann mit dem Befehl erfolgen:

C-x C-f /ssh:[email protected]|Sudo:remotehost:/path/to/file RET

Weitere Dokumentation finden Sie hier: https://www.emacswiki.org/emacs/TrampMode#toc14

5
Alex

Eine einfache Antwort, die sich auf die entfernte Maschine konzentriert:

Wenn ich vorhabe, alle meine Emacs-Arbeiten auf dem Remote-Computer auszuführen, verwende ich

ssh -X [email protected]

und führen Sie dann Emacs in der Remote-Sitzung aus und zeigen Sie es auf meinem lokalen Computer an. Es ist eine alte Frage, aber ich wollte dies der Vollständigkeit halber einwerfen. Zugegeben, es gibt einige xhost/X-Konfigurationsprobleme, aber in vielen Netzwerken funktioniert dies auf Anhieb!

3
JimLohse

SSH-Modus für Emacs ist das, wonach Sie suchen.

Sobald Sie es eingerichtet haben, laufen Sie einfach

M-x ssh RET hostname RET

Anschließend werden Sie zweimal zur Eingabe Ihres Kennworts aufgefordert (einmal für die Befehlszeile und einmal zum Laden von Dateien).

Zum größten Teil können Sie es wie jede andere Shell behandeln (nicht interaktiv und ein paar kleine Unterschiede, aber das war's).

Es verfolgt, in welchem ​​Verzeichnis Sie sich befinden. Wenn Sie eine Datei aus dem Verzeichnis öffnen möchten, in dem Sie sich gerade befinden, wird sie automatisch im richtigen Verzeichnis gestartet und Sie müssen nur den Dateinamen eingeben.

Emacs Wiki hat auch mehr Infos.

1
Drake Sobania