100 votes

Dans Vim, remplacer toutes les occurrences du terme courant sous le curseur

Si vous appuyez sur * dans Vim, l'éditeur recherchera la prochaine occurrence du terme dans le même fichier. Cela vous évite d'avoir à taper le terme.

Existe-t-il un moyen rapide de remplacer le terme actuellement sous le curseur par un nouveau terme ? Un seul caractère pour lancer la commande, en tapant le nouveau terme, puis Enter .

0 votes

Vous pouvez également utiliser n pour suivant et b pour retour (précédent) match.

0 votes

@Orwellophile seulement n fonctionne pour moi b revient à la valeur par défaut (début du mot) # fonctionne pour moi comme prévu, ce qui remonte au mandat précédent.

0 votes

@JohnnyQ Désolé Johnny, je devais être sous l'emprise de la colle. n pour le prochain et N pour le précédent. C'est écrit sur mon clavier, je ne sais donc pas comment j'ai pu me tromper.

0voto

Marc Moreaux Points 73

C'est une fonction que je souhaitais également ! Mais pas seulement pour le mot sous le curseur, aussi pour une sélection visuelle ou un mouvement.

En conséquence (et en m'appuyant sur vos réponses), j'ai ajouté ceci à mon fichier .vimrc :

nnoremap <leader>g :set operatorfunc=SubstituteOperator<cr>g@
vnoremap <leader>g :<c-u>call SubstituteOperator(visualmode())<cr>

function! SubstituteOperator(type)
    if a:type ==# 'v'
        execute 'normal! `<v`>"my'
    elseif a:type ==# 'char'
        execute 'normal! `[v`]"my'
    else
        return
    endif

    let sub = input("substitute '".getreg("m")."' with ... : ")
    execute "%s/".getreg("m")."/".sub."/gc"
endfunction

Je peux maintenant appuyer sur des éléments tels que \sw , \sf; o \si( en mode normal ou \s en mode visuel et j'obtiens une invite me demandant si je veux remplacer ma sélection par quelque chose d'autre.

(Pour l'instant, je ne sais pas si je veux le même message que @Lieven...)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X