Disons que j'ai un mot sélectionné en mode visuel. Je voudrais effectuer une substitution sur ce mot et toutes les autres instances de ce mot dans un fichier en utilisant s //. Est-il possible d'utiliser le texte en surbrillance dans la partie s/<here>/stuff/
sans avoir à le retaper?Dans VIM, est-il possible d'utiliser le texte sélectionné dans la clause de remplacement sans le retaper?
Répondre
Bien sûr. Si vous avez sélectionné le mot, juste « y » ank, puis tapez:
:%s/<ctrl-r>"/something else/g
Où est appuyant sur la touche ctrl avec la touche r, et « est juste » caractère.
: Toutes les pressions sur les touches
y:%s/<ctrl-r>"/what to put/g<enter>
Wow, cool! Où puis-je trouver cette astuce dans la documentation de vim? – innaM
Incertain. Ctrl-r est une chose assez connue. –
@Manni:: h c_CTRL-R –
Si vous avez cherché votre texte avant de pouvoir utiliser
CTRL-R/
pour insérer le dernier élément de recherche dans votre recherche et chaîne de remplacement.
Vous pouvez consulter cette page pour d'autres trucs similaires:
Une autre façon d'accéder à enregistrer le contenu de la ligne de commande est par @
des variables. Donc, si vous tirez du texte dans le registre par défaut, il sera dans une variable appelée @"
.
:exe '%s/' . @" . '/stuff/'
Voici une carte pour rendre cela facile à saisir:
vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>
vous pouvez maintenant mettre en évidence quelque chose en mode visuel, le type \s
, tapez votre remplacement et cliquez sur Enter
. La version de depesz fait aussi une bonne cartographie (presque exactement comme il l'a tapée):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>
Vous ne devez pas tirer sur le mot, placez votre curseur sur le mot, puis:
:%s/<C-r><C-w>/bar/g
Doux! C'est un autre dont j'étais curieux! –
J'ai toujours trouvé gênant que la ligne de commande de vim n'ait accès à aucun registre, etc. – inkedmn
Je suis entièrement d'accord avec cela. Cela ferait une énorme différence. –
@inkedmn: Que voulez-vous dire qu'il n'a pas accès aux registres? ctrl-r vous permet clairement d'accéder aux registres de copier/coller. –