Comment obtenir vim pour remplacer un personnage dans la sélection visuelle uniquement et pas ailleurs sur la ligne? Exemple:
- Ligne:
int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/};
- Sélection visuelle:
{ 00 01 02 03 04 05 05 /*... lots more like this*/}
- Commander:
:'<,'>s/\ /\,0x/g
- Attendu:
int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};
Cependant, après avoir effectué ces actions, le résultat réel est:
int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};
Existe-t-il un moyen de modifier la commande ci-dessus pour produire le résultat attendu? N'est-ce pas '<
et '>
définir la plage sur laquelle les commandes de recherche (et de remplacement) fonctionnent?
substitute
visual-mode
Bhargav Bhat
la source
la source
:substitute
opérateurs sont ligne par ligne, ce qui explique ce que vous voyez dans votre exemple.Réponses:
%V
correspond à l'intérieur de la zone visuelle. Tu vois:help %V
.la source
Il y a
\%V
pour ça, voir:h %V
:Pour remplacer
foo
parbar
dans la sélection uniquement, utilisez:Dans ce cas particulier:
la source
Si vous souhaitez remplacer au sein d'un bloc visuel , vous pouvez utiliser le
vis.vim
plugin .http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
À installer:
Téléchargez vis.vba.gz depuis http://www.drchip.org/astronaut/vim/index.html#VIS
Une fois installé:
Lorsque vous tapez
:B
, vous verrez ceciC'est bien, c'est juste vim disant que la commande s'appliquera au bloc visuel actuellement sélectionné.
Encore mieux, vous pouvez exécuter n'importe quelle commande Ex sur le bloc visuel, pas seulement des substitutions. Par exemple
:B !sort
.la source