Comment bloquer le remplacement du code en mode visuel?

26

J'ai une liste d'articles où je veux remplacer les deux premiers caractères:

a) item 1
b) item 2
c) item 3

Quelle est la façon la plus rapide de procéder:

* item 1
* item 2
* item 3

J'ai une approche en mode visuel (Ctr-v, jjj, mais j'ai besoin de faire deux commandes de remplacement. Iirc, ce remplacement peut se faire avec 1 commande)

poseid
la source
1
Comme .,.+2s/^../*/(ou de manière équivalente dans une sélection visuelle)? Pourquoi deux commandes de remplacement? 2cremplacerait deux caractères.
muru
parfois seule la première ligne de la sélection visuelle est modifiée, en répétant ensuite avec. car les autres lignes gâchent les choses.
poseid
2
@poseid avez-vous l'habitude d'appuyer sur Ctrl-Cau lieu de Esc? Cela empêche, entre autres, d'appliquer des modifications à chaque ligne d'une sélection de bloc visuel.
tommcdo
cela pourrait être le principal motif de confusion! Merci!
poseid

Réponses:

26

Sélection du bloc visuel:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Substitution:

:,+2s/^.\{2}/*

Formule à points:

cE*<Esc>
j.
j.
romainl
la source
1
Approche folle: en utilisant textobj-word-column.vim, vous pouvez faire ciC*<esc>et être fait. Remarque: ce plugin est un plugin "fais ce que je veux dire" donc il échoue dans des endroits et des façons inattendus, mais le plugin est toujours utile dans certains cas faciles comme celui-ci.
Peter Rincker
intéressant la formule normale et point!
poseid
3
Notez que pour la solution Visual-block, vous ne verrez que du texte tapé sur la première ligne. Une fois que vous frappez <Esc>, il remplira les lignes restantes.
tommcdo
Des suggestions pour vous rappeler que c va remplacer? Comme comment ctrl + D (propre)
Jordan Mackie
2
@JordanMackie cest pour le "changement".
romainl
17

Voici une façon plus efficace de procéder:

  1. Ayant le curseur sur le premier élément et la 1ère lettre ( 0), entrez en mode visuel 'bloc Ctrl+' vet sélectionnez la 1ère colonne de votre paragraphe actuel par }(si votre liste est terminée par une nouvelle ligne), sinon utilisez différentes méthodes comme les touches fléchées (pour vous déplacer autour de la sélection), ou recherche de motifs /c)où se ctrouve votre dernier élément).
  2. Accédez au dernier symbole de votre liste par ket l(ou à l'aide des touches fléchées ), de sorte que deux colonnes soient sélectionnées que vous souhaitez modifier.
  3. Modifiez le texte sélectionné en appuyant sur cet tapez votre symbole de puce ( *) et terminez en appuyant sur Esc.

Fonctionne plus efficacement, en particulier dans les listes plus longues.

kenorb
la source