Vim + COPY + Mac über SSH
Ich Zugang zu einem Server über ssh auf dem ich vim zum Bearbeiten von Dateien. Wenn ich versuche, yank text aus vim in einen editor lokal auf meinem mac (lion) entweder mit y ODER "+y funktioniert es nicht. Ich am Ende mit dem text, den ich kopiert im letzten lokal. Es funktioniert, wenn ich nur mit p in vim in Ordnung.
Kommentar zu dem Problem
verwenden Sie Terminal.app oder einen anderen Begriff Programm?
Können Sie ändern den Namen, um vim + KOPIEREN + mac über SSH
InformationsquelleAutor der Frage evolution | 2012-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweitern Ray ' s Antwort...
Wenn Sie mit Vim auf einem remote-server über SSH, alles, was Sie in Vim erfolgt auf dem remote-server. Der remote-server und der Fernbedienung Vim, die Sie ausgeführt haben null praktische Kenntnisse von Ihrem lokalen computer und die system-Zwischenablage.
Deshalb
y
wird niemals den Riss text in Ihre lokale Zwischenablage.Beim kopieren ein Stück text von der Fernbedienung Vim zu Ihrem lokalen Computer die Zwischenablage haben Sie drei Optionen:
Wählen Sie den text mit der Maus und drücken Sie Cmd+C wie in jedem Mac-OS-X-Anwendung.
Offensichtlich scheint es sich um die einfachste, aber es hat mindestens drei Einschränkungen:
Beschränkt sich auf den aktuellen Bildschirm. Wenn Sie den gewünschten text zu ziehen, ist nicht angezeigt, ganz werden Sie nicht in der Lage sein, kopieren Sie alle.
Er nicht gut mit
set mouse=a
. Mit dieser option, wird bei jedem Versuch etwas auszuwählen mit der Maus wird in einem visual Modus-Auswahl, die nicht kopiert werden können mit Cmd+C. Als workaround kann man mit Alt+Maus, um den text auszuwählen, ohne die Eingabe visual - Modus oder entfernen Sie einfach diese Einstellung vom remote -~/.vimrc
.Werden Zeilennummern mit kopiert.
Setzen Sie den Riss text in eine temporäre Datei
scp
es auf Ihrem lokalen Computer und verwenden Siepbcopy
setzen Sie es in Ihrem system-Zwischenablage.Diese Lösung scheint ein wenig verworren, aber es funktioniert (und das problem selbst ist auch ein wenig verworren). Über die Jahre habe ich gesehen viele verschiedene Implementierungen reichen von einfachen one-Linern bis hin zu client/server-Installationen. Hier ist einer, fühlen Sie sich frei, um google herum für andere.
Verwenden Sie X-forwarding verbinden Ihre lokalen Zwischenablage an die entfernte Zwischenablage, wenn verfügbar.
InformationsquelleAutor der Antwort romainl
Mein go-to-Lösung ist das Bearbeiten der Datei mit vim via scp.
Dieser hält Sie Ihre Puffer lokalen und macht es einfach, um eine Kopie auf Ihrer lokalen Zwischenablage.
Der andere Vorteil ist, dass Sie mit Ihren lokalen vim setup (.vimrc Einstellungen, plugins, etc).
InformationsquelleAutor der Antwort Dean
Hatte dieses problem - log-in von OSX aus über SSH auf eine linux-Kiste und kann nicht kopieren Sie text aus einer Datei mit vim geöffnet.
Mein workaround ist
:set mouse=i
Durch Standard-Maus wird aktiviert in allen Betriebsarten. Wenn Sie es aktiviert werden, nur im Einfüge-Modus können Sie scrollen und kopieren, wenn Sie Sie nicht Bearbeiten (normaler Modus), aber wenn Sie mit der Bearbeitung beginnen (durch drücken der I oder Einfg-Taste) und geben Sie den Einfüge-Modus die Maus fungiert als cursor-Platzierung und Sie können keine Kopie von terminal.
Können Sie einstellen, dass die option in ~/.vimrc
Finden Sie :helfen Sie die Maus für mehr Informationen über die Werte, die Sie einstellen können und die Modi.
InformationsquelleAutor der Antwort Dimitar K
Meine erste Antwort auf stackoverflow, aber ich finde es ist eine Coole (wenn auch kleinen) trick, und es lohnt sich die Buchung. Also hier ist was ich tun :
Wenn der text gedruckt ist, auf das terminal, ich markieren Sie den text mit meiner Maus (die Maus-Scrollrad funktioniert nicht, weil wir auf das terminal-Fenster). Dann kopieren Sie diesen text mit
Cmd
+C
and paste in meine lokale text-editor.Der einzige Fehler mit diesem trick ist, dass es unpraktisch ist, zu verwenden, wenn Sie Ihre Dateien sind zig Tausende von Zeilen lang, da die Auswahl alle Linien mit Ihrer Maus wäre eine Aufgabe für sich. Aber für eine Datei von ~2k Zeilen funktioniert es auch.
InformationsquelleAutor der Antwort Mohit Gianani
Riss innerhalb
vi
in eine Klemme auf, die Sie über ssh in kopiert die Zeilen in vi internen Puffer auf dem remote-Computer, nicht die in Ihrem Mac-Zwischenablage.Verwenden Sie Ihre Maus. 🙂
InformationsquelleAutor der Antwort Ray Toal
Hier ist ein update auf die Lösung #2 von romainl. Es schafft und den alias der ssh-Befehl und startet die remotecopyserver, wenn es nicht läuft, und installiert die remotecopy(rclip) in der Fernbedienung server. Kurz gesagt, Sie brauchen nichts zu tun, außer, fügen Sie das code-snippet unten in Ihre bash_profile.
Einmal den alias aktiviert ist, können Sie normalerweise verwenden, ssh und Wann immer Sie brauchen, zu kopieren, zu lokalen Zwischenablage von vim
kopieren die gesamte Datei in die Zwischenablage
kopieren ausgewählte Zeilen visual-Modus. Drücken Sie "Cmd+V" oder "Strg+V", wenn es fragt nach dem Schlüssel.
Bonus
Für diejenigen, die arbeiten auf Vagrant, es gibt einen wrapper vssh der ausgeführt wird, vagrant ssh aber auch startet und die benötigten Komponenten installieren.
Referenz
Neuesten code-snippet hier - https://gist.github.com/ningsuhen/7933b206b92fc57364b2
http://endot.org/2011/12/04/remotecopy-copy-from-remote-terminals-into-your-local-clipboard/
https://github.com/justone/remotecopy
Vorbehalte
Den alias umschließt den ssh-Befehl und es könnte einige unerwartete Probleme.
ssho
ist verfügbar, wenn Sie ausführen müssen, ssh, ohne die ganze remotecopyserver Sache. Alternativ können Sie den alias verwenden ssh2 und halten Sie den ssh-Befehl, wie es ist.InformationsquelleAutor der Antwort ningsuhen
Einen trick, mit dem ich oft beim kopieren der vim text mit der Maus, wenn die Anzahl der Zeilen bekommen etwas mehr-geflogen, mein Bildschirm ist zu minimieren (Cmd + '-') den text. 🙂 Zu minimieren, so viel, dass man nicht sehen durch die Augen, aber Sie können kopieren Sie den text in einem Rutsch.
InformationsquelleAutor der Antwort mdev
Oder vom terminal, schreiben
less [filename]
man es geschrieben, um das terminal. Dann starten byt Auswahl mit der Maus, während Sie haltendown-arrow
-Taste gedrückt. Dann können Sie die ganze Reihe.InformationsquelleAutor der Antwort Zeth
Versuchen, den anderen die Zwischenablage register -
"*y
.InformationsquelleAutor der Antwort Idan Arye