{"id":26,"date":"2009-07-18T11:58:24","date_gmt":"2009-07-18T09:58:24","guid":{"rendered":"http:\/\/www.martoni.fr\/wordpress\/?p=26"},"modified":"2009-07-18T11:58:24","modified_gmt":"2009-07-18T09:58:24","slug":"chercher-remplacer-dans-un-lot-de-fichiers","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/wordpress\/2009\/07\/18\/chercher-remplacer-dans-un-lot-de-fichiers\/","title":{"rendered":"Chercher remplacer dans un lot de fichiers"},"content":{"rendered":"<p>Un probl\u00e8me classique quand on fait de la programmation est de pouvoir chercher et remplacer un mot. Par exemple quand on se rend compte que le nom d&rsquo;une variable n&rsquo;est pas suffisament significatif ou qu&rsquo;il ne respecte pas les conventions de codage.<\/p>\n<p>Pour faire un chercher remplacer dans le fichier courant sous <a href=\"http:\/\/www.vim.org\/\">vim<\/a>, il suffit d&rsquo;utiliser la commande suivante :<\/p>\n<p><code>:%s\/mot\u00e0remplacer\/nouveaumot\/gc<\/code><\/p>\n<p>Avec :<\/p>\n<ul>\n<li>% : sur tout le fichier courant<\/li>\n<li>s : la commande (diminutif de search)<\/li>\n<li>mot\u00e0remplacer : On peut ici utiliser la puissance des <a href=\"http:\/\/www.vim.org\/htmldoc\/pattern.html\">expressions r\u00e9guli\u00e8res<\/a> pour am\u00e9liorer la recherche.<\/li>\n<li>nouveaumot : ideme.<\/li>\n<li>g : diminutif de \u00abglobal\u00bb signifie que la recherche ne s&rsquo;arr\u00eatera pas au premier mot trouv\u00e9.<\/li>\n<li>c : diminutif de \u00abheu je ne sais pas ;-)\u00bb  demande l&rsquo;autorisation d&rsquo;effectuer le remplacement \u00e0 chaque occurrence.<\/li>\n<\/ul>\n<p>Cette commande est particuli\u00e8rement utile, on l&rsquo;utilise tout le temps.<\/p>\n<p>Vient ensuite le moment o\u00f9 l&rsquo;on souhaite faire la m\u00eame chose mais sur un ensemble de fichier, c&rsquo;est la qu&rsquo;intervient la commande magique \u2026 vim !<\/p>\n<p><code>:vim \/mot\u00e0trouver\/ **\/*<\/code><\/p>\n<p>Avec :<\/p>\n<ul>\n<li>vim : la commande de recherche<\/li>\n<li>\/mot\u00e0trouver\/ : le mot que l&rsquo;on cherche, qui peut bien s\u00fbr \u00eatre agr\u00e9ment\u00e9 d&rsquo;expression r\u00e9guli\u00e8re<\/li>\n<li>**\/* : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Wildcard_character\">wilcard<\/a> signifiant que l&rsquo;on souhaite rechercher r\u00e9cursivement dans tous les fichiers du r\u00e9pertoire courant ainsi que dans les sous r\u00e9pertoire<\/li>\n<\/ul>\n<p>Cette commande vas rechercher le mot dans tout les fichiers du r\u00e9pertoire courant ainsi que dans les sous-r\u00e9pertoires. Vim va se positionner sur la premi\u00e8re occurence trouv\u00e9e. Pour naviguer dans les diff\u00e9rentes occurences il suffit d&rsquo;utiliser les commandes :cnext pour la prochaine occurence et :cprev pour la pr\u00e9c\u00e9dente occurence. Personnellement je trouve \u00e7a beaucoup trop long \u00e0 taper, c&rsquo;est pourquoi je les ais mapp\u00e9 sur les touches de fonction F9 et F10 en ajoutant deux petites ligne dans mon <em>.vimrc<\/em><\/p>\n<p><code><br \/>\nmap &lt;F9&gt; :cp&lt;CR&gt;<br \/>\nmap &lt;F10&gt; :cn&lt;CR&gt;<br \/>\n<\/code><\/p>\n<p>C&rsquo;est bien beau de pouvoir trouver les mots mais ce que l&rsquo;on cherche \u00e0 faire c&rsquo;est de les remplacer ! Pour cela il suffit de combiner la derni\u00e8re commande avec le chercher remplacer du d\u00e9but, sauf que cette fois ci on veut remplacer seulement le mot sur lequel on est :<\/p>\n<p><code>:s\/mot\u00e0remplacer\/nouveaumot\/c<\/code><\/p>\n<p>Et puis on est un peu feignasse donc on ne veut pas retapper la fonction, on va donc la mapper sur une touche de fonction :<\/p>\n<p><code>:map &lt;F2&gt; :s\/mot\u00e0remplacer\/nouveaumot\/c&lt;CR&gt;<\/code><\/p>\n<p>De cette mani\u00e8re il suffira d&rsquo;utiliser la touche &lt;F10&gt; pour aller \u00e0 la prochaine occurrence et sur la touche &lt;F2&gt; pour faire le remplacement si on le d\u00e9sire.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un probl\u00e8me classique quand on fait de la programmation est de pouvoir chercher et remplacer un mot. Par exemple quand on se rend compte que le nom d&rsquo;une variable n&rsquo;est pas suffisament significatif ou qu&rsquo;il ne respecte pas les conventions &hellip; <a href=\"http:\/\/www.fabienm.eu\/wordpress\/2009\/07\/18\/chercher-remplacer-dans-un-lot-de-fichiers\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[13,138,12],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-programmation","tag-find-replace","tag-informatique","tag-vim"],"_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":1,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":27,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/26\/revisions\/27"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}