it-swarm.com.de

Wie bearbeite ich Dateien aus der Ferne über ssh?

Ich muss einige Dateien bearbeiten, die sich auf einem Server befinden, den ich über ssh erreichen kann.

Ich würde es vorziehen, diese Dateien in benutzerdefinierten vim auf meiner Workstation zu bearbeiten (ich habe keine Rechte, die Einstellungen von vim auf dem Remote-Server zu ändern). Manchmal möchte ich eine Datei mit sublime text oder ein anderer GUI-Editor.

Natürlich kann ich diese Dateien herunterladen, lokal bearbeiten und wieder auf den Server hochladen. Gibt es eine elegantere Lösung?

92
Loom

Sie können dies tun, indem Sie den Remote-Ordner mit sshfs als Dateisystem bereitstellen. Dazu zunächst einige Voraussetzungen:

# issue all these cmds on local machine
Sudo apt-get install sshfs 
Sudo adduser <username> Fuse

Führen Sie nun den Montagevorgang durch:

mkdir ~/remoteserv    
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv

Gehen Sie danach einfach in den bereitgestellten Ordner und verwenden Sie Ihr eigenes lokales benutzerdefiniertes vim.

70
shivams

Sie können dies über scp wie folgt tun:

vim scp://[email protected][:port]//path/to/file.txt

Beachten Sie die beiden Schrägstriche // zwischen Server und Pfad, der benötigt wird, um den absoluten Pfad korrekt aufzulösen. (Der erste Schrägstrich ist syntaktisch, während der zweite Schrägstrich wie gewohnt das Stammverzeichnis des Remotebenutzers angibt. Um im Ausgangsverzeichnis zu beginnen, führen Sie [:port]/~/path/to/file.txt.) [:port]es ist optional.

Dies wird durch das Standard-Plugin netrw.vim von vim erledigt. Es werden mehrere andere Protokolle unterstützt.

106
FloHimself

Je nachdem, was Sie meinen, wenn Sie sagen, dass Sie nicht über die Rechte zum Bearbeiten der Vim-Einstellungen verfügen, gibt es möglicherweise eine Möglichkeit, Vim auf dem Server so zu verwenden, wie Sie es möchten. Wenn Sie Ihren Benutzer nicht ändern können .vimrc (weil Sie sich beispielsweise als freigegebener Benutzer anmelden), Sie jedoch weiterhin Dateien erstellen können, erstellen Sie diese als Datei mit dem Namen Loom.vimrc und rufe dann Vim mit dem -u Schalter:

vim -u ~/Loom.vimrc file_to_edit

Sie können auch dann einen Alias ​​verwenden: alias vim='vim -u ~/Loom.vimrc' ermöglicht es Ihnen, Vim auf die übliche Weise zu verwenden, und es lädt weiterhin Ihre benutzerdefinierten .vimrc Datei. Dieser Alias ​​bleibt nach dem Abmelden nicht bestehen, sodass Sie sich keine Sorgen machen müssen, dass jemand anderes versehentlich Ihr angepasstes Vim verwendet.

6
Tom Potts

Abhängig davon, wie viele Dateien und welche Art von Dateien Sie bearbeiten möchten, ist dies möglicherweise nicht genau das, was Sie hier tun möchten, aber ich denke, es ist erwähnenswert. Wenn Sie Dateien auf einem Remote-Server bearbeiten müssen, aber alles verwenden möchten, was Sie in Ihrer eigenen Arbeitsstation haben, sollten Sie über eine Revision nachdenken Control System in Ihren Maschinen. Auf diese Weise können Sie Ihre lokalen Kopien auf Ihrem eigenen Computer mit der Software Ihrer Wahl ändern, die Änderungen festschreiben und dann einfach die lokalen Kopien auf dem Zielcomputer aktualisieren. Neben der Bearbeitung der Dateien mit der Software, mit der Sie sich wohl fühlen, haben Sie den Mehrwert, dass für jede Datei ein Änderungsverlauf Bezogen ist, was immer gut ist.

Hier ist eine Liste von Revisionskontrollsoftware , nur für den Fall.

2
jimm-cl

Um die Antwort von Mr. Potts zu erweitern: Sie können auch die oben genannten Schritte ausführen und dann so etwas in .bash_profile (oder was auch immer Ihre Shell verwendet) einfügen:

if [[ "$(who mom loves | awk ' { print $1 }' )" == "Loom" ]]; then 
         alias vim="vim -u ~/.Loom_vimrc"  
         fi  

dabei ist Loom Ihre Original Benutzer-ID, unter der Sie sich anmelden.

Wenn Sie sich als gemeinsames Konto anmelden (und nicht als einzelnes Konto, wenn Sudo klagt), kann Von Neuman Ihrer Seele gnädig sein, denn Sie sind verloren.

Ich hätte dies in einen Kommentar eingefügt, aber ich konnte den Code überhaupt nicht formatieren.

1
Petro

Wenn Sie eine vim-Sitzung haben, die bereits ausgeführt wird, verwenden Sie

:silent e scp://[email protected][:port]//path/to/file.txt

Das vordere :silent Unterdrückt die Meldung Press Enter to Continue

und

e scp://[email protected][:port]//path/to/file.txt Ist der Befehl Ex mode zum Bearbeiten der Remnotendatei.

Getestet mit BitVise SSHD Unter Windows 10 und mit VIM unter Ubuntu 16.04)

1
alpha_989