103 votes

Comment puis-je spécifier "le mot sous le curseur" sur la ligne de commande de VIM ?

Je veux écrire une commande qui spécifie "le mot sous le curseur" dans VIM. Par exemple, disons que j'ai le curseur sur un mot et que je le fais apparaître deux fois. Par exemple, si le mot est "abc" et que je veux "abcabc", je pourrais taper :

:s/\(abc\)/\1\1/

Mais ensuite, j'aimerais pouvoir déplacer le curseur sur "def" et utiliser la même commande pour le changer en "defdef" :

:s/\(def\)/\1\1/

Comment puis-je écrire la commande dans la ligne de commande pour qu'elle fasse cela ?

:s/\(*whatever is under the commandline*\)/\1\1

1voto

bmb Points 2995
ywPx

fera ce que vous décrivez.

ywPxw

fera également avancer le curseur au mot suivant.

0voto

@ utilisateur11211 a le moyen le plus simple pour dupliquer le mot sous le curseur :

yiwP

yank inner word (déplace le curseur au début du mot), paste (devant le curseur).

par exemple : straigh[t]forward ----> straightforwar[d]straightforward

[] est un curseur

Pour élaborer...

Vous voulez probablement que le curseur suive votre mot dupliqué :

yiwPea

straightforward[t]forward ----> straightforwardstraightforward[]

NOTE :

yiw

est un mot intérieur yankee (sans espace)

yaw

est le retrait de tous les mots (y compris les espaces à la fin).

yawPea

est donc un mot en double, y compris les espaces, et positionne le curseur.

straigh[t]forward ----> direct straightforward straightforward[]

-1voto

user2571881 Points 1787
" count word  (case sensitive)
nmap <F4> :%s/\(<c-r>=expand("<cword>")<cr>\)//gn<cr>

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