Je ne ferai pas de comparaison approfondie, car je n’ai qu’une expérience limitée des différents plugins. Je connais bien quelques plugins ( LaTeX-Box et LaTeX-Suite ), et je connais très bien un plugin, puisque je le développe moi-même: vimtex . Ainsi, je vais surtout écrire sur vimtex. Cependant, je signalerai d’abord certaines références susceptibles d’intéresser d’autres.
Quelques survol et références
Il y a beaucoup de plugins pour Vim. Ce sont ceux que j'ai reconnus comme étant au moins semi populaires:
Sur tex.stackexchange.com , il y a une liste énorme d'éditeurs et d'EDI LaTeX. Cela donne un bon aperçu en général, mais il donne également un aperçu des plugins pour Vim:
vimtex
vimtex est basé sur LaTeX-Box. Tout a commencé après que j'ai apporté des corrections de bugs et des mises à jour à LaTeX-Box pendant un certain temps. J'ai réalisé que le plugin pourrait être écrit d'une manière beaucoup plus moderne si je l'écrivais à partir de zéro. J'ai d'abord dépouillé la plupart des fonctionnalités et construit un "moteur" plus robuste et modulaire. J'ai ensuite ajouté des fonctionnalités, et je pense qu'aujourd'hui, il possède la plupart des fonctionnalités de LaTeX-Box et plus encore.
Au lieu de donner une liste complète des fonctionnalités (voir plutôt ici pour cela ), je vais plutôt essayer de souligner certaines des différences entre vimtex et les autres plugins. Cependant, je tiens à fournir quelques revendications audacieuses:
- vimtex est le plugin Vim le plus moderne pour LaTeX disponible aujourd'hui
- Le code est de haute qualité et il est actuellement activement maintenu par moi-même.
- Le plugin est généralement stable, même si certaines fonctionnalités sont encore en développement (et en tant que telles peuvent être sujettes à des modifications et à des mises à jour)
vimtex vs LaTeX-Box
Puisque vimtex est basé sur LaTeX-Box, ses principes sont évidemment similaires. L'idée est de garder les choses simples et de résoudre les problèmes qui ne sont pas déjà résolus par d'autres, de meilleurs plugins. Il utilise latexmk pour compiler les documents LaTeX et s’appuie sur le plug-in Vim interne pour la coloration syntaxique.
Il y a actuellement une fonctionnalité importante dans LaTeX-Box qui manque dans vimtex: la compilation en un coup avec rappel . La raison pour laquelle cette fonctionnalité n’est pas disponible dans vimtex est tout simplement parce qu’elle est compliquée et que je n’ai jamais trouvé un moyen de l’implémenter assez simple à mon goût (les suggestions sont les bienvenues, n’hésitez pas à ouvrir des problèmes ou à extraire des demandes. )
vimtex vs LaTeX-Suite
La principale différence entre vimtex et LaTeX-Suite est probablement le fait que vimtex n'essaye pas d'implémenter un IDE à part entière pour LaTeX dans Vim. Par exemple:
- vimtex ne fournit pas une fonctionnalité complète de bout, parce que cela est mieux gérée par UltiSnips ou neosnippet ou moteurs snippet similaire.
- vimtex repose sur les principes de Vim: il fournit des objets texte pour les environnements, des mathématiques en ligne, il fournit des mouvements pour les sections et les paragraphes
- vimtex utilise
latexmk
pour la compilation une fonction de rappel pour obtenir un retour instantané sur les erreurs de compilation
- vimtex est très modulaire: si vous n'aimez pas une fonctionnalité, vous pouvez la désactiver.
vimtex
pouvez travailler côte à côteLatex-Suite
, ce qui signifie que vous pouvez obtenir le meilleur des deux plugins en même temps . :)Je ne peux pas faire de comparaison, car Vim-LaTeX est le seul plugin LaTeX que j'ai utilisé. J'utilise Vim-LaTeX depuis presque un an. Je vais donc parler de Vim-LaTeX seul.
De nombreuses fonctionnalités sont présentes dans Vim-LaTeX. Je ne me souviens pas de tous. Je vais juste parler des fonctionnalités que je connais et utilise constamment.
Remarque: Voici mon expérience utilisateur limitée , ce qui peut être très trompeur . Je ne suis pas un utilisateur expérimenté de Vim. Et je ne sais rien de vimscript.
IMAP () et
<C-j>
JumppingIMAP()
Les fonctions et fonctions de<C-j>
sauts sont fournies séparément en tant que plug-inimaps.vim
dans le groupe Vim-LaTeX. Ce sont des fonctionnalités puissantes et pourraient être très utiles même lorsque vous n’écrivez pas LaTeX.IMAP()
function fournit un moyen plus naturel de faire des mappages et des modèles en mode insertion en général que les fonctions intégréesimap
etiabbrev
, IMO.<C-j>
le saut est utilisé par de nombreuses fonctionnalités de complétion Vim-LaTeX. Un point de saut est indiqué par<++>
.Les mappages de touches intégrés en mode insertion sont implémentés en tant
IMAP()
qu'appels. Par exemple, vous pouvez trouver une longue liste d’IMAP()
appels utiles dans unmain.vim
fichier:Ensuite, lorsque vous tapez say
()
, le curseur résidera automatiquement entre les parenthèses, remplaçant le premier<++>
. Une fois que vous avez fini de taper à l'intérieur, vous donnez des coups de pieds<C-j>
et de poings, le curseur quittera la parenthèse et vous continuerez à taper. Une fois que vous êtes habitué, il commence à former un flux de dactylographie qui crée une dépendance ...Vous voyez ci-dessus, une
\left
\right
paire peut être facilement saisie avec un double trait de son support d’ouverture. Et les<C-j>
sauts facilitent la frappe.Un pépin majeur de
IMAP()
et<C-j>
chose est que ils bousille votre dernière histoire de changement . (Un bogue que je souhaite corriger depuis longtemps.) Par conséquent, vous pouvez rencontrer un comportement inattendu lorsque vous essayez de rétablir votre dernière modification.
si votre "supposée dernière modification" contient ces appels de fonction.Vous pouvez faire toutes sortes de mappages en utilisant
IMAP()
, des mappages de clés simples aux gabarits plus complexes. Voici quelques exemples de mes mappages (ftplugin/tex.vim
):Un fait intéressant à propos du
imaps.vim
plugin est qu’il s’agit d’un plugin global, ce qui implique une utilisation potentielle au-delà de LaTeX. En effet, j’utilise<++>
et<C-j>
jarretières (combinaison avec d’autres plugins) pour construire des modèles d’extraits de code en C.<F5> <F7>
Insertion de commandes et d'environnementsUn inconvénient
IMAP()
est que la combinaison de touches ne peut plus être utilisée en texte normal (à moins d’annuler le mappageu
). Dans les cas où vous souhaitez simplement déclencher le mappage à votre guise, le<F5>
et vous serez<F7>
utile. Ces deux clés servent à déclencher des environnements et à insérer des commandes en ligne, respectivement. Et ils se comportent différemment selon le mode et les personnalisations de l'utilisateur.En mode Insertion / Normal, lorsque le curseur attache un mot ou est dans le mot, le fait d’appuyer
<F5>
insérera par défaut un environnement de base du formulaire.basé sur le mot; appuyez sur
<F7>
pour insérer par défaut une commande en ligne de base du formulaire en\word{}<++>
fonction du mot."Par défaut", je veux dire que vous pouvez personnaliser le comportement d'un mot spécifique lorsqu'il est déclenché par
<F5>
/<F7>
. Voici quelques-uns de mes paramètres (.vimrc
):Dans Insertion / mode normal, lorsque le curseur est pas attaché à quoi que ce soit (aka seul ), en appuyant sur
<F5>
/<F7>
invitera à vous un menu pour sélectionner l' environnement / commande à insérer. Ou vous pouvez taper le nom de l’environnement / commande souhaité en bas. Personnellement, j'utilise rarement<F5>
/ de<F7>
cette façon.Appuyez sur
<F5>
/<F7>
après avoir sélectionné visuellement un morceau de texte, un menu apparaîtra pour envelopper le texte . Ensuite, le texte sélectionné sera encapsulé dans l'environnement / la commande que vous avez sélectionnée ou saisie.En mode Insertion / Normal, lorsque le curseur se trouve dans la portée d'un environnement / d'une commande, appuyez sur pour
<Shift>+<F5>/<F7>
afficher un menu permettant de modifier l'environnement / la commande .Divers mappages de clés
`a
aux`z
capitales correspondantes.`8
pour\infty
,`<
pour\le
,`I
pour\int_{<++>}^{<++>}<++>
, etc."
double appui donne une paire de guillemets TeX. Donc, pour taper un"
caractère littéral , vous devez utiliser.\item
balise appropriée .\left
\right
par`(
,`[
et`{
.Tex_FoldedSections
,Tex_FoldedMisc
etTex_FoldedEnvironments
.Parfois, les mappages intégrés vont trop loin ou ne renoncent pas à ce que vous voulez. Vous pouvez remplacer les mappages intégrés en les redéfinissant dans
after/ftplugin/tex.vim
:Définir plusieurs moteurs de compilation
J'ai toujours besoin de basculer entre
pdflatex
etxelatex
moteur. Ainsi, j'ai les lignes suivantes dans mon.vimrc
:Afficher les fichiers PDF, les recherches en avant et en arrière entre Vim et le visualiseur PDF
C'est un sujet compliqué et compliqué. Avec une certaine visionneuse PDF et une certaine chance , cela peut être très facile. Mais c'est surtout une question de recherche sur Google.
Suggestions
Dans l’ensemble, je pense que cela fonctionnera bien si vous êtes prêt à investir un peu de temps pour apprivoiser la bête. Cela étant dit, si j'avais le temps et les connaissances nécessaires, je vais certainement affiner les fonctionnalités et explorer le potentiel de l'intégration avec d'autres plugins.
Les références
la source