À la suite d'une question précédente, pas tout à fait LaTeX mais tout de même... Voici une expression rationnelle qui remplace alternativement les paires de guillemets de machine à écrire ("...") en vrais guillemets de typographie française («...»), 1er ouvrant, 2e fermant etc. Avec vim: :[range]s/"\([^"]*\)"/«\1»/g [range] avec vim c'est Rien = : s'applique sur la ligne active, :% = sur tout le fichier, :x,y = sur les lignes N° x à y, :<,'> = sur les lignes préalablement sélectionnées en mode normal, :g/<regex>/ = sur les lignes contenant <regex>. Le g final (/g) répète la substitution, sinon elle ne s'applique que sur la première paire de ". Posée 22 Aoû '20, 16:45 joseph-tux Pathe ♦♦
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
@joseph-tux. La même manipulation m'intéresserait pour Emacs : si quelqu'un la connaît, cela me rendrait service
En mode interactif : M-x query-replace-regexp \"\([^"]+\)\" RET «\1» RET. (M-x query-replace-regexp = C-M-%). On peut préférer \\og{} et \\fg{} à '«' et '»' pour la substitution.
Notons que les guillemets ouvrant et fermant placés sur des lignes différentes ne seront pas remplacés. Cela arrive fréquemment si l’on n’a pas activé les lignes visuelles… Pour éviter ces cas de figure sur vim, j’ai recours aux raccourcis pour taper directement des guillemets:
iabbrev gf «»
J’ai aussi adapté un truc et astuces pour saisir les expressions entre guillemets français vnoremap ag :silent! normal! F«vf»
onoremap ag :normal vag
Sinon, le bépo permet de taper directement les guillemets…
La solution Emacs marche que les guillemets ouvrants et fermants soient sur la même ligne ou non.
@sztruks
Pour ma part, j'entre directement au clavier les « guillemets français »:
« = AltGr+w et » = AltGr+x
Le clavier s'appelle: «Français Français (variante)» dans la rubrique «agencement» (Système→clavier→Onglet Agencement) et le modèle: «PC générique 105 touches (intl)»
En plus les guillemets "machine" sont directement remplacés, avec les 2 lignes suivantes du .vimrc, (Ctrl-v " pour imprimer «"»):
let g:Tex_SmartQuoteOpen="«"
let g:Tex_SmartQuoteClose="»"
J'ai renoncé à \og et \fg qui posaient des problèmes, peut-être avec une ancienne version de french / babel?
@sztruks bien vu.
Cette regex (incomplète) peut aussi servir en d'autres circonstances, (comme avec les raccourcis verb de l'extension shortvrb, par exemple).