Bonjour,
ma question attend 2 types de réponse, un seul me donnerait évidemment satisfaction.
Le premier type serait de trouver les références ou un tutoriel qui me permettrait de trouver par moi-même.
Le deuxième, une solution efficace.
Le problème:
J’ai créé une macro de vim qui a pour objectif de formater une commande \footnote dans un fichier .tex (LaTeX, XeLaTeX).
Cette macro ( FTN) génère le texte suivant, tappée à la fin du mot test:
Un test%
\footnote{%
<++>
}<++>
<++>
L’appel de note (la commande \footnote) doit être au début de la ligne suivante, un signe % collé au mot de l’appel (ici: test).
La commande \footnote{ se termine aussi par un signe % et un retour à la ligne vers un «place-holding» pour placer le texte de la note
Un retour à la ligne pour fermer la note, suivie sans espace d’un autre «place-holding» pour y mettre un éventuel signe de ponctuation,
Puis un retour à la ligne pour reprendre le fil du texte pincipal.
Ma macro réalise incomplètement ce travail, et me pose 2 problèmes:
(1) Le premier est un BUG que je ne parviens pas à éviter ou corriger: lorsque la ligne d’où est appelée la note est indentée, la commande \footnote est également indentée.
Ma macro commence par un réglage noai (no autoindent), inefficace.
J’ai d’ailleurs tester sur une instance de vim sans autoindent, mais l’indentation s’impose toujours (même hors de la macro).
Je pense mettre dans la macro la correction que je suis contraint de faire à la main, en utilisant la suite de commande <ESC>V<.
qui sélectionne la ligne (V) et supprime l’indentation avec <, répétée autant que nécessaire par la commande «.»
C’est cette commande que je ne sais pas introduire dans ma macro.
[EDIT] plus précisément la chaine:
\footnote{%<ESC>V<<CR>i<++><CR>}<++><CR><++>
fait le travail pour une indentation simple, mais pour plusieurs niveaux (V<<< ou V<… , par exemple) ça donne des résultats inattendus.
(2) Le deuxième problème est plus complexe, mais moins pénalisant dans ma pratique.
Comment, après avoir introduit 3 «place-holding», renvoyer le curseur sur la première ligne?
Par exemple enregistrer le numéro de la ligne d’appel dans une
Voici ma macro:
:call IMAP('FTN', "\<ESC>:set nosi\<CR>:set noai\<CR>a%\<CR>\\footnote{%\<NL><++>\<CR>}<++>\<CR><++>\<ESC>:set si\>CR>:set ai\<CR>", 'tex')
[EDIT] version un peu plus avancée:
Avec le marquage de la première ligne (mm) efficace, mais son appel (`m) sans effet, et la correction efficace pour une indentation d’un seul niveau (V<)
"\<ESC>mm\<ESC>:set nosi\<CR>:set noai\<CR>a%\<CR>\\footnote{%\<ESC>V<\<CR>i<++>\<CR>}<++>\<CR><++>\<ESC>:set si\>CR>:set ai\<CR>m"`
Qui produit:
Un test%
\footnote{%
<++>
}<++>
<++>
Le curseur est encore sur la dernière ligne <++>, alors que la commande `m fonctionne hors de la macro.
Merci pour avoir lu jusqu’ici 
PS
Si je me souviens bien, la commande IMAP est une commande de mappage de la suite vim-latex.
La macro proprement dite est la 2e partie entre « guillemets ».