Ich weiß, dass Vim einen Client-Server-Modus zulässt ( :h clientserver
): Es ist möglich, ihn in einen Server zu verwandeln, der einige Befehle erhält und diese ausführt, und als Client, der die Befehle an den Server sendet.
Ich verstehe, wie es funktioniert, kann mir aber keinen praktischen Einsatz dieser Funktion vorstellen: In welchen Fällen ist es nützlich und welcher Workflow kann mit dieser Funktion erstellt werden?
Meine Frage ist also einfach: Wozu dient der Client-Server-Modus von Vim?
(Ich weise erneut darauf hin, dass es bei meiner Frage nicht darum geht, wie es funktioniert oder wie es funktioniert, sondern warum es verwendet wird.)
clientserver
statox
quelle
quelle
Antworten:
Vor der Channel- / Job-Recent-Funktion von Vim 7.4 war die Client-Server-Funktion die einzige Möglichkeit, eine ordnungsgemäße Hintergrundkompilierung durchzuführen - ohne Abhängigkeit von Python. Wir starten die Kompilierung als Hintergrundjob, und wenn sie abgeschlossen ist, wird vim dank des Client-Server-Kanals darüber informiert, dass sie abgeschlossen ist.
Es wird auch indirekt von "Plugins" wie pyclewn verwendet, um einen Debugger in vim zu integrieren. Tatsächlich verwendet pyclewn die Funktion + netbeans (die auf + clientserver aufbaut). Andere bemerkenswerte Projekte verwenden diese NetBeans-Schnittstelle, um vim in eine IDE zu integrieren - siehe
:h netbeans-intro
.Es wird auch von einigen Test-Plugins wie vimrunner verwendet, um Tests in Vim über die Befehlszeile auszuführen. Ich benutze es, um meine Plugins auf Travis zu testen.
Ich erinnere mich auch, dass ich dank + clientserver meine Klicks in der xdvi-Oberfläche mit meinem LaTeX-Quellcode synchronisiert habe.
quelle
Mein Gebrauch davon ist etwas simpler (und vielleicht alltäglicher) als der von Luc Hermitte.
Wenn Sie eine Instanz von gvim mit dieser kompilierten Version starten (und dies ist und war für eine lange Zeit, zum Beispiel auf großen Linux-Distributionen wie Fedora und Debian), wird sie im Servermodus gestartet. Ich habe "gvim" hervorgehoben, weil das, was ich hier beschreibe, nicht auf eine einzelne
vim
Instanz in einem GUI-Terminal zutrifft (obwohl ich vermute, dass dies der Fall sein könnte, wenn Sie den Parameter entsprechend verwenden).Wie auch immer, Sie können dann jede Datei von überall in dieser gvim-Instanz mit
gvim --remote [file path]
(ohne--servername
Angabe) öffnen . Ich bin ein Fan davon, weil ich mit vim nicht viel direkt im Dateisystem navigiere. Stattdessen verwende ich einen orthodoxen Dateibrowser (Midnight Commander) - oder vielmehr Stapel von ihnen öffnen sich zu verschiedenen Orten, da siemc
leichtgewichtig sind und verschiedene Farbschemas ermöglichen, um die Unterscheidung zwischen ihnen zu vereinfachen Tabs in mindestens einem GUI-Terminal). Ich denke jedoch, dass das gleiche Prinzip für jeden Dateibrowser gilt, der Ihnen eine Form von benutzerdefiniertem Tastenkürzel ermöglicht, mit dem Sie sich verbinden könnengvim --remote %f
. Inmc
ich es im Benutzermenü, also F2 + e und die markierte / ausgewählte Datei wird auf die Gvim Instanz gesendet.Dies wird ein wenig besser: Wenn Sie eine zweite Instanz von gvim öffnen, z. B. auf Monitor 2 desselben Desktops, oder auf einem separaten Desktop und möglicherweise einem anderen Farbschema in diesem, und diesmal explizit angeben
--servername foo
, können Sie senden Dateien zu dieser Instanz stattdessen mit:Etwas, das sich je nach Umfang Ihrer Tätigkeit als nützlich erweisen kann oder auch nicht.
quelle
less
, der sofort und einer ist) Taste zum Beenden) und möglicherweise an andere Anwendungen als vim senden, die ebenfalls einen Remote-Modus wie diesen haben (viele Dinge tun dies jetzt, einschließlich anderer "Editoren", die ich manchmal verwende, um gestapelte Registerkarten von Headern zum Anzeigen zu belassen, und auch an Webbrowser) . Anders ausgedrückt, ich würde sagen, das Navigieren im fs mit vim scheint einemc
--remote
Embedded-Entwicklung. In der Embedded-Entwicklung haben Sie häufig einen IP-Socket, aber nur begrenzten lokalen Festplattenspeicher oder keinen nichtflüchtigen Speicher oder eine Reihe anderer Dinge. Sie können einen Server auf der eingebetteten Karte starten und dann auf Ihrem Entwicklungscomputer mit dem Client verbinden und alle Konfigurations- und Tag-Einstellungen lokal vornehmen.
quelle
Ich habe meine Masterarbeit mit Vim, LaTeX und BibTeX geschrieben. Um meine BibTeX-Referenzen zu verwalten, habe ich ein Programm namens JabRef verwendet . JabRef verfügt über eine nette kleine Funktion, mit der Sie eine Verbindung zu einer Vim-Serverinstanz herstellen können. Anschließend können Sie die BibTeX-Referenz von JabRef auf das in Vim bearbeitete LaTeX-Dokument "pushen".
quelle
Mein Arbeitsablauf ähnelt dem, was Goldlöckchen in seiner Antwort gesagt haben. Ich verwende die
:terminal
Funktion von vim8 in Kombination mit der--remote
Option. Ich halte 2 Fensterlayout in vim. Code im linken Fenster und Terminal rechts. Ich verwende das rechte Fenster (Terminal), um Kompilierungen auszuführen, im Dateisystem zu navigieren und Dateien in der aktuellen vim-Instanz (vom Terminal aus) zu öffnen. Dieser Ablauf ermöglicht es mir, mit sehr wenig Mausbeteiligung zu arbeiten.Ich benutze gvim und icewm (jeder Fenstermanager sollte das tun)
Starten Sie eine gvim-Instanz
Öffnen Sie in gvim das Terminal in vertikaler Aufteilung
Im Terminalfenster geteilt
Sie können Aliase für diese langen Befehle in Ihrem .zshrc / .bashrc erstellen und sie nach Ihren Wünschen kürzen.
Mit diesem Workflow verlasse ich meine gvim-Instanz selten und benutze selten die Maus.
quelle