#1 Le 20/06/2019, à 15:12
- anthonyB
[Resolu] Configuration .vimrc
Bonjour à tous,
Je cherche à écrire une fonction vim pour nettoyer un code FORTRAN.
Par exemple je voudrais indenter entre les mots SUBROUTINE et END SUBROUTINE.
Dans ce cas, j'adopterai la stratégie suivante:
1) Je cherche les mots SUBROUTINE et END SUBROUTINE
2) Je remplace les débuts de ligne par les indentations.
Le problème: Comment fait-on pour récupérer les lignes de la recherche pour l'étape d'après.
Si vous avez de la documentation sur comment on code dans .vimrc, je suis preneur.
Merci d'avance
Anthony
Dernière modification par anthonyB (Le 25/06/2019, à 15:10)
Hors ligne
#2 Le 21/06/2019, à 14:44
- DonutMan75
Re : [Resolu] Configuration .vimrc
Bonjour anthonyB,
Je suppose que ton fichier ressemble à ça :
SUBROUTINE
un
deux
trois
END SUBROUTINE
SUBROUTINE
quatre
cinq
six
END SUBROUTINE
SUBROUTINE
sept
huit
neuf
END SUBROUTINE
une première piste incomplète (via ex) :
:/SUBROUTINE/+1,/END SUBROUTINE/-1s/^/\t/
Mais ça ne marche que sur la première occurrence trouvée à partir de la position courante du curseur dans le fichier.. et ça suppose qu'il n'y a aucune indentation préexistante...
Il y a peut-être une autre façon d'aborder le problème à partir des fonctions codées dans .vimrc
Mon livre de référence à ce sujet c'est "Vi and Vim" aux éditions O'Reilly
Bon courage pour la suite,
Donut
Hors ligne
#3 Le 24/06/2019, à 07:03
- DonutMan75
Re : [Resolu] Configuration .vimrc
Ce code est légèrement mieux :
:map <F2> :./SUBROUTINE/+1,/END SUBROUTINE/-1s/^/\t/^Mjj
Des appuis successifs sur <F2> remplacent les différents blocs.
La doc de référence à ce sujet se trouve ici (du moins dans ma distrib 18.04LTS) : /usr/share/vim/vim80/doc/usr_40.txt
Il y est notamment question de mapping récursif, à savoir quelque chose comme (NE MARCHE PAS !!)
:map <F2> :./SUBROUTINE/+1,/END SUBROUTINE/-1s/^/\t/^Mjj<F2>
Mais il faudrait un critère d'arrêt lorsqu'on atteint la fin du fichier sinon ça boucle au début et ça ne fait que rajouter des tabs sur des tabs...
Bon courage pour la suite,
Donut
Hors ligne
#4 Le 25/06/2019, à 15:10
- anthonyB
Re : [Resolu] Configuration .vimrc
Merci pour avoir pris le temps de chercher.
Ta solution me fait progresser pas mal. Je pense faire une fonction qui va boucler jusqu'à la fin du fichier sur:
:/SUBROUTINE/+1,/END SUBROUTINE/-1s/^/\t/
et je vais l'intégrer dans une autre boucle avec d'autre mots cles [SUBROUTINE, IF, ...]
Merci pour le livre, je vais essayer de me le procurer, ça va m'être utile.
Hors ligne