Vous pouvez définir des marques au début et à la fin de votre bloc à l'aide m
(par exemple ma
, mb
) et puis se référer à eux dans la gamme d'une commande ex comme :'a,'b
.
Comme bignose said vous pouvez utiliser un bloc visuel pour créer une région implicite pour une commande qui peut être transmis à une commande ex en utilisant :'<,'>
Vous pouvez également utiliser des expressions rationnelles pour délimiter un bloc (par exemple, pour toutes les lignes entre start
et end
utilisation :/start/,/end/
Par exemple, pour faire une substitution dans une gamme de lignes:
:'<,'>s/foo/bar/g
:'a,'bs/baz/quux/g
:/harpo/,/chico/s/zeppo/groucho/g
Le dernier visuellement La plage sélectionnée est mémorisée afin que vous puissiez la réutiliser sans la resélectionner.
Pour en savoir plus sur les gammes, voir :help range
Vous pouvez encore vous limiter dans une plage en utilisant g//
. Par exemple, si vous vouliez remplacer foo avec bar uniquement sur les lignes contenant baz dans la plage sélectionnée:
:'<,'>g/baz/s/foo/bar/g
Lorsque vous définissez une nouvelle commande ex, vous pouvez passer la plage donnée à l'ex-commande en utilisant comme <line1>,<line2>
. Voir :help user-commands
pour plus d'informations sur la définition des ex-commandes.Dans une fonction vimscript, vous pouvez accéder à une plage implicitement transmise en utilisant a:firstline
et a:lastline
. Vous pouvez détecter votre numéro de linge actuel en utilisant line('.')
et détecter si vous êtes à l'intérieur du bloc en utilisant une logique booléenne normale (a:firstline <= line('.') && line('.') <= a:lastline
). Voir :help functions
pour plus d'informations sur les fonctions de vimscript.
Une autre approche consiste à utiliser i
internes vim et simples a
sélecteurs. Par exemple, pour supprimer l'intégralité d'une chaîne entre guillemets doubles, utilisez da"
en mode normal. Pour laisser les guillemets, utilisez di"
. Voir :help object-select
pour plus.
@Closers: Comme il s'agit d'utiliser vim pour manipuler le code source, SO peut être plus approprié que SU. Voir http://meta.stackexchange.com/questions/43198/emacs-questions-superuser-or-stackoverflow. –