J'essaie de comprendre comment utiliser l'opérateur avec un mouvement ultérieur dans un mappage. Par exemple:
nmap /c c{here we pending for a motion}/<C-r>"<CR>
La carte doit procéder comme suit:
- Activez l'
c
opérateur et écoutez le mouvement suivant; - Par exemple, je peux taper ici
t,
pour tout changer avant la prochaine virgule; - Passez en mode insertion en supprimant tout entre le curseur et la virgule;
- Le texte supprimé est automatiquement recherché en tant que motif
Donc, pour faire simple, une fois le texte de mouvement supprimé, je quitte le mode d'insertion avec les occurrences en surbrillance du texte supprimé. Je serais très reconnaissant si quelqu'un m'aide à résoudre ce cas.
MISE À JOUR
Les réponses sont presque ce que je veux. Mais! Lorsque j'appuie sur /cw
, saisissez quelque chose au lieu du mot, puis appuyez sur <Esc>
. Après je m'attends à faire de même avec les prochaines occurrences. Mais après avoir pressé n
(passer à l'occurrence suivante) et .
(répéter la dernière commande), il ajoute simplement le dernier texte tapé au lieu de le remplacer. L'objectif principal de la cartographie est de l'utiliser avec n/N
et .
pour répéter. Ai-je raté quelque chose?
la source
/c
eti
) vim ne font.
que répéter le dernier. Si vous souhaitez l'étendre, vérifiez lerepeat
plugin. @TimurFayzrakhmanov existe également:g
et les:s
commandes peuvent également vous aider."
dans votre code'let @/=@""'
? J'ai pensé que c'était possible, par exemplesilent exec 'normal!
[v]c'
, parce que l'c
opérateur fait ce que j'attends, sauf qu'il n'ajoute pas le texte modifié au modèle de recherche.""
était une faute de frappe .. correction .. Je suis venuc
aussi, mais il a ajouté un espace, car il y a un changement de mode,n-i-n-i
je suppose ... faites un test que vous verrez.d
versy
etstartinsert
verscall feedkeys("cgn", 'n')
(voir ma réponse ci-dessous)Il est plus facile d'implémenter (et de documenter) des mappages complexes en utilisant des fonctions:
Ensuite, faites votre appel de mappage cette fonction:
Éditer:
Si votre intention est d'effectuer une recherche et remplacer dans un grand nombre d'endroits où vous devriez essayer la commande de substitution:
:s
. Vous pouvez modifier votre mappage pour copier la sélection visuelle dans le modèle de recherche:la source
enter motion:
, il a donné:t,ggVGJZZ
^ _ ^ C'est un problème commun pour la concaténation de commandes/cw
puis tape quelque chose au lieu du mot, puis appuie sur<Esc>
. Après je veux faire la même chose avec les prochaines occurrences. Mais après avoir pressén
(passer à l'occurrence suivante) et.
(répéter la dernière commande), il ajoute simplement le dernier texte tapé au lieu de le remplacer. L'objectif principal de la cartographie est de l'utiliser avecn/N
et.
pour répéter. Ai-je raté quelque chose?.
répéter votre commande.<CR>
deinput()
).Cette solution fonctionne avec "répéter la dernière commande" (aka
.
):Lors de la répétition, vous n'avez même pas besoin d'utiliser
n
, vous pouvez simplement utiliser.
pour récupérer directement et remplacer la prochaine occurrence si vous voulez aller plus vite.Facultativement, si vous aimez avoir les reflets des mots correspondants, vous pouvez les remplacer
'cgn'
par'n``cgn'
.la source