Ich verbinde mich mit dem Remote-Computer 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. Ich habe festgestellt, 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.
M-x describe-mode
.Antworten:
Im Allgemeinen bevorzuge ich das Öffnen von Remote-Dateien von einer lokalen Emacs-Instanz.
Während Sie Emacs auf Ihrem lokalen Computer ausführen, unterscheidet sich das Öffnen einer Remote-Datei über ssh nicht wesentlich vom Öffnen einer anderen Datei außer einer etwas anderen Syntax .
Für ssh können Sie eingeben
C-x C-f
. Jetzt in den Minipuffer, den Sie eingeben möchten/ssh:user@host:/path/to/file
(Beachten Sie, dass die Tab-Vervollständigung funktioniert, sobald Sie mit der Eingabe eines Pfads beginnen. Beachten Sie auch das führende/
Zeichen). Die vollständigen Dokumente finden Sie hier .In Ihrem Beispiel wäre das:
C-x C-f /ssh:user@192.168.1.5:/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.
quelle
tramp
und es ist eines der nützlichsten Dinge, die Sie jemals verwenden werden. Es wird sogar aus der Ferne kompiliert!index.html
da der Puffer schreibgeschützt ist. Ich kann jedoch dieselbe Datei bearbeiten, wenn ich sie auf dem Remotecomputer öffne. Übrigens, als ich die DateiC-x C-f /ssh:user@host filename
damit geöffnet habe, habe ich nach dem Passwort gefragt./method:user@host#port:filename
Um die obige Antwort zu ergänzen, können Sie Verknüpfungen für Computer schreiben, die Sie häufig verwenden:
(defun connect-remote () (interactive) (dired "/[email protected]:/"))
Dadurch wird ein
dired
Puffer auf einem Remotecomputer geöffnet . Sie können in diesem Puffer wie in einem lokalen Puffer navigieren.Wenn Sie SSH-Schlüssel für den Remote-Computer eingerichtet haben, müssen Sie nicht einmal das Kennwort eingeben.
Wenn Sie eine Reihe von Remote - Computern haben, können Sie einige erkennbaren Namen jede Funktion geben, zum Beispiel
connect-cupcake
,connect-kitkat
und verwendensmex
Paket für die Fertigstellung.quelle
/usr/share/nginx/html/index.html
wenn ich sie auf dem Remote-Computer öffne. aber wenn ich es mit ssh öffne,index.html
ist es schreibgeschützt. Warum ist das?/usr/share/
.C-x C-f /sudo ssh:user@host filename
aber das funktioniert nicht./usr/share/nginx/html/
Ordners zu machenchown
./etc/nginx/sites-available/example.com.conf
und bearbeitet, gespeichert und geschlossen. Jetzt habe ich es wieder geöffnet und dieses Mal kann ich es nicht bearbeiten? Ich gehe davon aus, dass es etwas mit Berechtigungen zu tun hat. Können Sie mir helfen zu verstehen, warum dies geschieht?Und um @ abo-abos Beitrag über "Verknüpfungen" hinzuzufügen -
Verwenden Sie Emacs-Lesezeichen. Erstellen Sie Lesezeichen einfach normal, wenn Sie eine entfernte Datei oder ein entferntes Verzeichnis besuchen. Dann
C-x r b
springen Sieeinfachzu einem entfernten Lesezeichen, dessen Namen Sie angeben (mit Vervollständigung).Wenn Sie Lesezeichen + verwenden, werden entfernte Lesezeichen speziell in der hervorgehoben
*Bookmark List*
, damit Sie sie leichter erkennen können. Remote-Lesezeichen, auf die mitsu
odersudo
(root
) zugegriffen werden muss, werden unterschiedlich hervorgehoben.Wenn Sie Dired + verwenden , können Sie auch schnell mehrere entfernte Dateien oder Verzeichnisse mit Lesezeichen versehen, indem Sie das enthaltene entfernte Verzeichnis in Dired aufrufen, markieren und drücken
C-x b
. Sie müssen den Lesezeichen keine Namen geben. Sie sind nach den Dateien benannt. Selbst 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 damit Teilmengen davon zu bearbeiten.Wenn Sie Eiszapfen verwenden, können Sie die Abschlusskandidaten immer dann, wenn Sie einen Befehl verwenden, um zu einem Lesezeichen zu springen, auf diejenigen beschränken, die entfernt sind, indem Sie
C-M-@
während des Abschlusses drücken .quelle
Das Originalposter zeigte Interesse daran, entfernte Dateien als Root-Benutzer zu öffnen. Dies kann mit dem folgenden Befehl erfolgen:
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
Weitere Dokumentation finden Sie hier: https://www.emacswiki.org/emacs/TrampMode#toc14
quelle
Eine einfache Antwort, die sich auf die Remote-Maschine konzentriert:
Wenn ich vorhabe, alle meine Emacs auf dem Remote-Computer auszuführen, verwende ich
Führen Sie dann Emacs in der Remotesitzung aus und zeigen Sie sie wieder auf meinem lokalen Computer an. Es ist eine alte Frage, aber ich wollte sie der Vollständigkeit halber einwerfen. Zugegeben, es gibt einige Probleme mit der xhost / X-Konfiguration, aber in vielen Netzwerken funktioniert dies sofort!
quelle
Der SSH-Modus für Emacs ist genau das, wonach Sie suchen.
Sobald Sie es eingerichtet haben, laufen Sie einfach
Anschließend werden Sie zweimal zur Eingabe Ihres Kennworts aufgefordert (einmal zur Befehlszeile, 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 also eine Datei aus dem angezeigten Verzeichnis öffnen möchten, wird sie automatisch im richtigen Verzeichnis gestartet und Sie müssen nur den Dateinamen eingeben.
Emacs Wiki hat auch mehr Infos.
quelle