Si cela ne vous dérange pas d'appuyer sur une combinaison différente cw
, je pense que vous pouvez obtenir ce que vous voulez facilement, en définissant un raccourci. Ce que vous pouvez faire est de placer les éléments suivants
nmap <leader>a "1yiw:let @/=@1^Mciw
dans votre .vimrc
dossier. Notez qu'il ^M
s'agit d'une capture de la touche retour, et non des caractères ^
et M
. Vous l'obtenez en appuyant sur Ctrl+ Ven mode insertion suivi de Enter. Maintenant, avec cette définition, en appuyant sur <leader>a
fera la même chose que cw
, mais maintenant le mot (avant le changement) sera dans votre "dernier registre de recherche" (c'est-à-dire le /
registre), donc en appuyant sur naprès avoir fait le changement et retourné en mode normal vous amènera à la prochaine occurrence. De même, appuyer sur Nvous ramènera à l'occurrence précédente.
Le raccourci Vous pouvez bien sûr choisir un raccourci différent de <leader>a
, mais je trouve juste que c'est un raccourci très accessible. Personnellement, je me suis fixé <leader>
pour ,
que je doive juste appuyer sur ,suivi a, mais c'est parce que je n'utilise pas de clavier américain, de sorte que mon \est quelque peu caché (je crois que \c'est le défaut <leader>
).
Explication L'idée est vraiment simple. Tirez le mot sous le curseur vers le registre de recherche /
, puis faites cw
. C'est nmap <leader>a "/yciw
ce que je visais, mais malheureusement je ne pense pas que vous puissiez tirer sur le registre de recherche, donc la solution de contournement est de tirer le mot sous le curseur sur le 1
registre, puis de définir le /
registre égal à cela, puis de le faire cw
. Il en "1yiw
est de même de la partie qui tire le mot intérieur sous le curseur vers le registre 1
. Si vous ne connaissez pas les mots intérieurs, vous pouvez vérifier :help iw
. Ensuite, :let @/=@1
une capture de Entermet le contenu du 1
registre dans le /
. À ce stade netNfonctionne comme l'occurrence suivante et précédente du mot sous le curseur, puis a ciw
est fait pour que le mot sous le curseur soit supprimé et que Vim soit mis en mode insertion.
mot contre mot intérieur Je viens de réaliser que je supposais que vous vouliez le mot entier sous le curseur, et pas seulement du point du curseur et ainsi de suite. C'est pourquoi j'ai utilisé iw
au lieu de w
partout. Si ce n'est pas le cas, vous devez utiliser
nmap <leader>a "1yw:let @/=@1^Mcw
au lieu. Si le curseur se trouve sur la première lettre du mot, il n'y a aucune différence.
Avertissement Cette solution ne sera probablement pas fonctionner correctement si vous essayez d'utiliser quelque chose qui contient des choses différentes de lettres, par exemple en ayant la position du curseur sur un \
ou en remplaçant iw
par iW
, ib
, is
ou ip
ou quelque chose (bien que je ne sais pas pourquoi vous veulent cette fonctionnalité avec des phrases entières)
*
recherche. Surtout, il permet de*
sélectionner visuellement le mot actuel sans déplacer votre curseur. Une fois qu'il est installé, vous pouvez faire*ciw
pour mettre l'ancien mot dans le registre de recherche et changer le mot. Ensuite, vous pouvez utilisern
et.
.