La question concerne vim, et non directement LaTeX: comment intégrer dans une macrocommande une séquence qui supprime une indentation, reconduite automatiquement par un retour à la ligne. Suite à ma question précédente «Où mettre les macrocommandes de vim», j'ai fini par trouver ici ($VIM/ftplugin/tex.vim) et réalisé la macro souhaitée. Cette page montre l'intérêt et explique comment réaliser une macro plus pratique avec la syntaxe «IMAP('raccourci', "développé avec <+place holder+>", 'type') Malheureusement, je ne parviens pas à reproduire parfaitement la macro standard de vim (avec imap) qui est parfaite, avec la syntaxe IMAP() de la suite vim-latex. Cette macro prépare l'écriture d'une footnote en l'isolant de sa ligne d'appel: La macro standard et qui fonctionne bien est la suivante: imap FTN %<CR><ESC>V<.....I\footnote{%<CR>%<CR>}<CR><++><ESC>2kI Elle est un peu bricolée: la séquence « V<..... » sélectionne la ligne pour supprimer son indentation par la commande « < », répétée par chaque point. la séquence « 2kI » renvoie à la ligne qui suit l'appel de note. Le système des place holder de vim-latex est un réel avantage, plus sur et plus confortable (visible). En revanche, je ne trouve pas le moyen d'appliquer cette fonction avec la forme trouvée avec la syntaxe IMAP: :call IMAP('ftn', "%\< CR>\< ESC>I\\footnote{%\< CR><++>%\< CR>}\< CR><++>\ <ESC> <++>", 'tex') Cette fonction manquante devrait se trouver juste avant la commande « I », qui ouvre en écriture au début du texte écrit sur la ligne (après les espaces de tabulation) et non au début absolu de la ligne comme je le croyais. (Les blancs qui suivent la séquence «< » ne sont pas dans la macro, ajoutés pour que le code soit correctement affiché ici) Les lignes 8 à 12 montrent le résultat souhaité, réalisé par la commande standard imap Les lignes 2 à 6 montrent le résultat insatisfaisant, réalisé par la commande IMAP(). Posée 25 Oct '21, 14:51 joseph-tux |
La macro qui marche: :call IMAP('ftn', "%\< NL>\< ESC>I\\footnote{%\< NL><++>%\< CR>}\< CR><++>", 'tex') Publiée 25 Oct '21, 15:30 joseph-tux |
La macro idéale devrait, en plus, rétablir le niveau de tabulation à la sortie de la note.
La réponse existe: il suffit de remplacer le premier carriage return: \< CR>
par un new line: \< NL>