Wie kann ich auf einen Remote-Server ssh und lokale Emacs verwenden, um Dateien zu bearbeiten?


8

Gibt es eine Möglichkeit, mit den auf meinem lokalen Computer installierten Emacs auf Remotedateien zuzugreifen, die sich auf einem Remoteserver befinden? Ich habe gegoogelt und herausgefunden, dass ich TrampMode verwenden soll, aber ich muss den genauen Dateipfad kennen. Gibt es keine Möglichkeit für mich, eine SSH-Verbindung zum Remote-Server herzustellen und von dort aus die Dateien mit den lokalen Emacs auf meinem Computer zu öffnen?

Antworten:


5

Es gibt verschiedene Möglichkeiten, dies zu tun, aber im Allgemeinen gehen Sie dieses Problem rückwärts an. Kopieren Sie Ihre Emacs-Konfigurationen auf den Remote-Computer und verwenden Sie Emacs lokal für die Dateien, die Sie bearbeiten.

Die "verschiedenen Möglichkeiten, dies zu tun" würden in zwei Kategorien fallen. Das erste wäre die Möglichkeit, ein Remote-Laufwerk lokal über sshfs, ein Sicherungsdateisystem, samba, nfs oder eine beliebige Anzahl anderer Bereitstellungssysteme bereitzustellen, um Zugriff auf Dateiebene auf Ihren Computer zu erhalten. Zweitens gibt es verschiedene Programme, mit denen Sie sich anmelden und ein Remote-System durchsuchen und dann Dateien bearbeiten können, indem Sie eine Kopie davon in eine lokale temporäre Datei übertragen, bearbeiten und dann zurück übertragen. Einige Programme lassen diesen Prozess ziemlich nahtlos aussehen, aber es ist ein Hack.


1
"Mehrere Programme lassen diesen Prozess ziemlich nahtlos aussehen, aber es ist ein Hack.": Darum geht es bei Tramp (das heutzutage mit Emacs geliefert wird). Es ist kein Hack, es ist eine natürliche Art, mit entfernten Dateien zu arbeiten.
Gilles 'SO - hör auf böse zu sein'

@ Gilles: Ich weiß nichts davon Tramp, daher muss meine "Hack" -Alegation nicht gelten. Ich habe besonders an verschiedene Dateimanagerprogramme gedacht, die Menüelemente wie "In einem Editor öffnen" enthalten. Während diese funktionieren, um eine Datei zu öffnen, sind sie in der Regel spröde, da sie das Kopieren, Ändern, Zurückkopieren usw. der Datei erfordern. Das Speichern von Zwischendateien vor dem Schließen des Editors wird häufig nicht in den Upstream verschoben, was sie zu einer unangenehmen Arbeitsweise macht auf Dateien. Wenn Sie einen Weg kennen, um die Einschränkungen in Tramp@starcorn zu umgehen, über die Sie sich auf jeden Fall beschwert haben, fügen Sie eine weitere Antwort hinzu!
Caleb

1
Mit Tramp erledigt der Editor die Arbeit, sodass er beim Speichern Druck ausüben kann und so weiter. Die ideale Lösung wäre, Emacsserver und SSH zusammenarbeiten zu lassen, aber das ist schwierig. Die beiden Problemumgehungen, die ich angeboten hätte, sind sshfs und eshell, die beide bereits erwähnt wurden.
Gilles 'SO - hör auf böse zu sein'

2

Oder Sie können Emacs öffnen, eshell ausführen und dann auf den Remote-Computer cd, wie:

cd /hostname:~

Führen Sie nun Shell-Befehle aus, navigieren Sie zu der gewünschten Datei und öffnen Sie sie:

find-file filename

2

Ich denke, dass Tramp das ist, wonach Sie suchen. Im Dired-Modus können Sie die Remote-Verzeichnisse durchsuchen und nach der gewünschten Datei suchen.

Wenn ich beispielsweise nach einer Datei /etc/auf einem Remotecomputer suche rem, würde ich Folgendes tun:

  • Emacs öffnen
  • schlagen C-x C-f
  • Entfernen Sie den bereits vorhandenen Pfad
  • Geben Sie ein /rem:/etc/und drücken Sie die Eingabetaste.

Sie erhalten eine Ausgabe wie folgt:

/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

Dann können Sie zB die Pfeiltasten verwenden, um die Datei zu finden, die Sie bearbeiten möchten. Drücken Sie die Eingabetaste, wenn sich der Cursor auf der Datei befindet, um sie zu bearbeiten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.