Navigieren mit SSH

10

Ich weiß, dass man vim scp://host/path/to/filelokal entfernte Dateien bearbeiten und dann den entfernten Computer beim Speichern aktualisieren kann ( :w). Ich würde jedoch gerne wissen, ob es möglich ist, mit ssh durch Verzeichnisse zu navigieren (oder ob es ein Plugin dafür gibt).

NERDTree unterstützt dies nicht, und wenn ich in einen Ordner gehe, funktioniert das Öffnen einer Datei nicht, obwohl ich mit netrw in Verzeichnisse navigieren kann.

lesurp
quelle

Antworten:

13

Anstatt Vim / Netrw auf eine Datei zu verweisen:

scp://host/path/file

Zeigen Sie auf ein Verzeichnis:

scp://host/path/

Auf diese Weise erhalten Sie dieselbe Liste und dieselben Verknüpfungen, als würden Sie Ihren Computer durchsuchen.

romainl
quelle
Haben Sie dies versucht, als Sie von Ihrem UnixComputer aus ein Remoting durchgeführt haben, um auf Ordner auf einem Windows-Computer zuzugreifen? Ich habe es gerade versucht vim scp://[email protected]//C:/Users/user/Desktop/tmp/und es gab mir nur einen leeren Bildschirm mit dem Fehler, 'ls' is not recognized as an internal or external commandwenn ich versuche: vim scp://[email protected]//C:/Users/user/Desktop/tmp/filename.. es funktioniert einwandfrei.
Alpha_989
Daraus vimergibt sich, dass ein Befehl ausgegeben wird ls, wenn er sich beim Remote-Computer anmeldet. Da es sich um einen Windows-Computer handelt, gibt es keinen lsBefehl. Der Befehl schlägt fehl. Ist es vim möglich, windowsVerzeichnisse mit dem netrwPlugin oder etwas anderem über ssh zu durchlaufen ? Ich benutzeVIM 8.1
alpha_989
2
Bitte beachten Sie, dass der nachfolgende Schrägstrich danach scp://host//path/erforderlich ist, damit dies funktioniert. Andernfalls versucht vim, den Pfad als reguläre Datei zu öffnen, die leer geladen wird.
Koyae
1

Hoppla, ich habe vergessen, dass ich diese Frage geöffnet habe!

Das Problem war also, dass mit der netrw-Version, die ich hatte (gepackt mit vim-gnome auf Debian Jessie), das Ändern einer Datei aus dem Explorer (über ssh) nicht den richtigen URI verwenden würde (aus dem Speicher das '@' im ' user @ host 'fehlte). Es wurde eine leere Datei geöffnet (weil nichts gefunden wurde), aber die neue Datei wurde weiterhin mit dem guten URI gespeichert (wodurch die Originaldatei effektiv überschrieben wurde).

Die Antwort von @ user21497 hat mir jedoch auch geholfen, da ich diese Verknüpfung "Neue Datei" nie gefunden habe. Dies ist sehr praktisch, da die Datei mit ": e" lokal erstellt wird.

Schließlich hat mir diese Frage geholfen, mit netrw besser zu navigieren (nach dem Öffnen einer Datei mit: Ex zum Explorer zurückkehren)

Vielen Dank für Ihre Hilfe Jungs!

lesurp
quelle
0

Ich bin mir nicht sicher, was Sie unter "Neue Datei benachrichtigen" verstehen. Wenn Sie eine neue Datei erstellen möchten, drücken Sie beim Surfen über scp: // Hostname / Verzeichnis einfach "%", wie Sie es in einem lokalen Verzeichnis tun würden, um eine neue Datei zu erstellen. Siehe: help netrw-%. Sie können ein Verzeichnis mit d (: help netrw-d) erstellen. Wenn Sie eine bereits vorhandene Datei ändern möchten, wählen Sie sie mit dem Cursor über dem Dateinamen in der Netrw-Anzeige aus und drücken Sie <cr>(es gibt auch andere Auswahlmethoden, einschließlich v, o, t usw.). Eine Übersicht hierzu finden Sie unter: help netrw-quickmap. Ich habe es gerade versucht und keine leere Datei erhalten (wenn bereits vorhanden). Eine neue Datei ist natürlich leer.

user21497
quelle