Ich werde keinen detaillierten Vergleich anstellen, da ich nur begrenzte Erfahrung mit den verschiedenen Plugins habe. Ich kenne einige Plugins gut ( LaTeX-Box und LaTeX-Suite ) und kenne ein Plugin sehr gut, da ich es selbst entwickle : vimtex . Daher werde ich hauptsächlich über vimtex schreiben. Ich werde jedoch zunächst auf einige Verweise hinweisen, die für andere von Interesse sein könnten.
Einige Überblicke und Referenzen
Es gibt eine Menge Plugins für Vim. Dies sind die, die ich als mindestens halb beliebt erkannt habe:
Auf tex.stackexchange.com gibt es eine riesige Liste von LaTeX-Editoren und -IDEs. Es gibt einen schönen Überblick im Allgemeinen, aber es gibt auch einen Überblick über Plugins für Vim:
vimtex
vimtex basiert auf LaTeX-Box. Es fing an, nachdem ich einige Zeit Fehlerbehebungen und Updates für LaTeX-Box beigesteuert hatte. Ich erkannte, dass das Plugin viel moderner geschrieben werden könnte, wenn ich es von Grund auf neu geschrieben hätte. Ich habe zuerst die meisten Funktionen entfernt und einen robusteren und modularen "Motor" gebaut. Ich habe dann Funktionen hinzugefügt und ich denke, dass es heute die meisten Funktionen von LaTeX-Box und noch einige mehr gibt.
Anstatt eine vollständige Liste der Funktionen zu geben (siehe stattdessen hier ), werde ich lieber versuchen, einige der Unterschiede zwischen vimtex und anderen Plugins herauszustellen. Ich möchte jedoch einige kühne Behauptungen aufstellen:
- vimtex ist das derzeit modernste Vim-Plugin für LaTeX
- Der Code ist von hoher Qualität und wird derzeit von mir selbst aktiv gepflegt
- Das Plugin ist größtenteils stabil, obwohl einige Funktionen noch in der Entwicklung sind (und daher Änderungen und Aktualisierungen unterliegen können).
vimtex gegen LaTeX-Box
Da vimtex auf LaTeX-Box basiert, hat es offensichtlich ähnliche Prinzipien. Die Idee ist, die Dinge einfach zu halten und Probleme zu lösen, die noch nicht von anderen, besseren Plugins gelöst wurden. Es verwendet latexmk zum Kompilieren der LaTeX-Dokumente und baut auf dem internen Vim-Plugin zur Hervorhebung der Syntax auf.
Momentan gibt es in LaTeX-Box eine wichtige Funktion, die in vimtex fehlt: Single-Shot-Compilation mit Callback . Der Grund dafür, dass diese Funktion nicht in vimtex enthalten ist, liegt einfach daran, dass sie kompliziert ist und dass ich nie einen für meine Vorlieben einfachen Weg gefunden habe, sie zu implementieren (Vorschläge sind willkommen, bitte zögern Sie nicht, Probleme zu eröffnen oder Anfragen zu stellen ).
vimtex vs LaTeX-Suite
Der Hauptunterschied zwischen vimtex und LaTeX-Suite besteht wahrscheinlich darin, dass vimtex nicht versucht, eine vollwertige IDE für LaTeX in Vim zu implementieren. Z.B:
- Vimtex bietet keine vollständige Snippet-Funktion, da dies besser von UltiSnips oder Neosnippet oder ähnlichen Snippet-Engines gehandhabt wird .
- vimtex baut auf Vim-Prinzipien auf: Es stellt Textobjekte für Umgebungen, Inline-Mathematik und Bewegungen für Abschnitte und Absätze bereit
- vimtex verwendet
latexmk
für die Kompilierung eine Rückruffunktion, um sofortiges Feedback zu Kompilierungsfehlern zu erhalten
- vimtex ist sehr modular aufgebaut: Wenn Ihnen eine Funktion nicht gefällt, können Sie sie deaktivieren.
vimtex
kann Seite an Seite arbeitenLatex-Suite
, was bedeutet, dass Sie gleichzeitig das Beste aus den beiden Plugins herausholen können . :)Ich kann keinen Vergleich anstellen, da Vim-LaTeX das einzige LaTeX-Plugin ist, das ich verwendet habe. Ich benutze Vim-LaTeX seit fast einem Jahr. Ich werde also nur über Vim-LaTeX sprechen.
Es gibt viele Funktionen , die in Vim-LaTeX. Ich kann mich nicht an alle erinnern. Ich werde nur über Funktionen sprechen, die ich kenne und ständig benutze.
Hinweis: Dies ist meine eingeschränkte Benutzererfahrung , die möglicherweise sehr irreführend ist . Ich bin kein erfahrener Vim-Benutzer. Und ich weiß nichts über Vimscript.
IMAP () und
<C-j>
JumppingIMAP()
Die Funktionen function und<C-j>
jumpping werden separat als Pluginimaps.vim
im Vim-LaTeX-Bundle bereitgestellt . Sie sind leistungsstarke Funktionen und können sehr nützlich sein, auch wenn Sie nicht mit LaTeX arbeiten.IMAP()
Die Funktion bietet eine natürlichere Möglichkeit, Einfügemodus-Zuordnungen und Vorlagen im Allgemeinen zu erstellen als die integrierteimap
und dieiabbrev
IMO-Funktion.<C-j>
Das Springen wird von vielen Vim-LaTeX-Vervollständigungsfunktionen verwendet. Ein Sprungpunkt ist durch gekennzeichnet<++>
.Eingebaute Tastenzuordnungen im Einfügemodus werden als
IMAP()
Anrufe implementiert . Beispielsweise finden Sie eine lange Liste nützlicherIMAP()
Anrufe in dermain.vim
Datei:Wenn Sie dann say
()
eingeben, befindet sich der Cursor automatisch zwischen den Klammern und ersetzt die erste<++>
. Nachdem Sie die Eingabe beendet haben, treten<C-j>
und schlagen Sie, der Cursor bewegt sich aus der Klammer heraus und Sie tippen einfach weiter vorwärts. Sobald Sie sich daran gewöhnt haben, beginnt sich ein Schreibfluss zu bilden, der irgendwie süchtig macht ...Sie sehen von oben, dass ein
\left
\right
Paar leicht mit einem Doppelhub der öffnenden Klammer eingegeben werden kann. Und das<C-j>
Springen bringt das Tippen zum Fließen.Ein großer Fehler von
IMAP()
und<C-j>
ist, dass sie Ihre letzte Änderungshistorie durcheinander bringen . (Ein Fehler, den ich schon lange beheben möchte.) Daher kann es zu unerwartetem Verhalten kommen, wenn Sie versuchen, Ihre letzte Änderung zu wiederholen, indem.
Sie diese Funktionsaufrufe in Ihrer "vermuteten letzten Änderung" speichern.Sie können alle Arten von Zuordnungen verwenden
IMAP()
, von einfachen Tastenzuordnungen bis hin zu komplexeren Vorlagen. Hier sind einige Beispiele für meine Zuordnungen (ftplugin/tex.vim
):Eine interessante Tatsache über
imaps.vim
Plugin ist, dass es sich um ein globales Plugin handelt, das seine potenzielle Verwendung über LaTeX hinaus impliziert. In der Tat verwende ich<++>
und<C-j>
Jumppings (in Kombination mit anderen Plugins), um Code-Snippet-Vorlagen in C zu erstellen.<F5> <F7>
Einfügen von Befehlen und UmgebungenEin Nachteil
IMAP()
ist, dass die Tastenkombination nicht mehr im normalen Text verwendet werden kann (es sei denn, Sie machen die Zuordnung rückgängigu
). In den Fällen, in denen Sie das Mapping nur wie gewünscht auslösen möchten, ist das<F5>
und<F7>
praktisch. Diese beiden Tasten dienen zum Auslösen von Umgebungen bzw. zum Einfügen von Inline-Befehlen. Und sie verhalten sich je nach Modus und Anpassungen des Benutzers unterschiedlich.Wenn der Cursor im
<F5>
Einfüge- / Normalmodus ein Wort anfügt oder sich im Wort befindet, wird durch Drücken von standardmäßig eine Basisumgebung des Formulars eingefügtbasierend auf dem Wort; Durch Drücken von
<F7>
wird standardmäßig ein grundlegender Inline-Befehl des Formulars\word{}<++>
basierend auf dem Wort eingefügt."Standardmäßig" bedeutet, dass Sie das Verhalten eines bestimmten Wortes anpassen können, wenn es von
<F5>
/ ausgelöst wird<F7>
. Hier sind einige meiner Einstellungen (.vimrc
):In Insert / Normal - Modus, wenn die Cursor nicht an irgendetwas (aka angebracht allein ), Press-
<F5>
/<F7>
werden Sie aufgefordert , ein Menü zu Umwelt / Befehl zum Einsatz wählen. Oder Sie können den Namen der gewünschten Umgebung / des gewünschten Befehls unten eingeben. Persönlich benutze ich selten<F5>
/ auf<F7>
diese Weise.Durch Drücken von
<F5>
/<F7>
nach dem visuellen Auswählen eines Textstücks wird ein Menü zum Umbrechen von Text angezeigt . Dann wird der ausgewählte Text in die von Ihnen ausgewählte oder eingegebene Umgebung / den Befehl eingeschlossen.Wenn sich der Cursor im Einfüge- / Normalmodus im Bereich einer Umgebung / eines Befehls befindet, wird durch Drücken von
<Shift>+<F5>/<F7>
ein Menü zum Ändern der Umgebung / des Befehls aufgerufen .Verschiedene Tastenzuordnungen
`a
zu`z
und entsprechende Hauptstädte.`8
für\infty
,`<
für\le
,`I
für\int_{<++>}^{<++>}<++>
usw."
zweimaliges Drücken erhalten Sie zwei TeX-Anführungszeichen. Um also wörtliche"
Zeichen einzugeben , müssen Sie verwenden.\item
Tag eingefügt.\left
\right
paarweise mit`(
,`[
und einschließen`{
.Tex_FoldedSections
,Tex_FoldedMisc
, undTex_FoldedEnvironments
.Manchmal sind die eingebauten Zuordnungen einfach zu weit gegangen oder es wird nicht beendet, was Sie wollen. Sie können die integrierten Zuordnungen überschreiben, indem Sie sie neu definieren in
after/ftplugin/tex.vim
:Stellen Sie die Multiple Compilation Engine ein
Ich muss immer zwischen
pdflatex
undxelatex
Motor wechseln . Somit habe ich folgende Zeilen in meinem.vimrc
:PDF anzeigen, Vorwärts- und Rückwärtssuche zwischen Vim und PDF-Viewer
Dies ist ein chaotisches und kompliziertes Thema. Mit einem bestimmten PDF-Viewer und einer gewissen Menge Glück kann es sehr einfach sein. Aber es geht hauptsächlich um die Google-Suche.
Vorschläge
Insgesamt denke ich, dass es gut funktionieren wird, wenn Sie bereit sind, etwas Zeit zu investieren, um das Biest zu zähmen. Vorausgesetzt, ich habe Zeit und ausreichende Kenntnisse, werde ich mit Sicherheit die Overhead-Funktionen abschwächen und die Integrationsmöglichkeiten mit anderen Plugins untersuchen.
Verweise
quelle