Je trouve que si vous entrez un préfixe numérique avant d'exécuter une commande ex, la convention qui s'applique est de configurer la commande pour préparer une opération sur une plage de lignes. Il est expliqué dans la documentation,
UN NOMBRE DE LIGNES
Lorsque vous savez combien de lignes vous souhaitez modifier, vous pouvez taper le nombre puis ":". Par exemple, lorsque vous tapez "5:", vous obtenez:
:.,.+4
Vous pouvez maintenant saisir la commande que vous souhaitez utiliser. Il utilisera la plage "." (ligne actuelle) jusqu'à ". + 4" (quatre lignes plus bas). Ainsi, il s'étend sur cinq lignes.
Maintenant, ce dont je parle est une de mes fonctions personnalisées, celle-ci:
function! MyAmazingEnhancedDot()
if v:hlsearch == 1
:normal! .n
else
:normal! .j
endif
endfun
Il s'agit simplement d'un moyen de rationaliser les tâches répétitives qui incluent la répétition d'une opération sur une plage de lignes ou sur une série de correspondances de recherche.
Cette fonction est liée à un raccourci clavier. Tels que Alt+ .ou autre chose.
Mon objectif est de pouvoir faire quelque chose de très puissant: je devrais pouvoir taper /varName<CR>ciwnew-var<ESC>n9<Alt+.>
pour réussir à renommer 10 instances de varName
to new-var
.
Ce qui se passe réellement si je fais cela, c'est qu'il n'effectue pas le changement de nom et que les 9 lignes sont manipulées avec mon .
opération d'édition enregistrée à partir de la colonne 0.
Je ne peux que supposer que Vim interprète donc mes frappes: :.,.+8 normal! .n
.
Du côté du verre à moitié plein, le :normal! .j
cas de la liaison fonctionne réellement, car le j
mouvement sans effet n'a aucune conséquence dans cette situation. (J'ai encore besoin de j
pour le faire fonctionner dans un cas d'utilisation interactif non préfixé numérique).
Ma question est donc de savoir comment puis-je remplacer le comportement d'extension de ligne que Vim applique à ma liaison? Ce qui serait fantastique, c'est que je puisse lire le préfixe numérique comme argument ou quelque chose comme ça.
nnoremap <M-.> :<C-u>call MyAmazingEnhancedDot(v:count1)<cr>
et de sauter lecommand -count=1 EDot call MyAmazingEnhancedDot(<count>)
?