Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/06/2019, à 16: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, à 16:10)

Hors ligne

#2 Le 21/06/2019, à 15: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, à 08: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, à 16: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