Come bloccare la sostituzione del codice in modalità visiva?


26

Ho un elenco di elementi in cui desidero sostituire i primi due caratteri:

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

Qual è il modo più veloce per farlo:

* item 1
* item 2
* item 3

Ho un approccio con la modalità visiva (Ctr-v, jjj, ma ho bisogno di fare due comandi di sostituzione. Iirc, questa sostituzione può essere fatta con 1 comando)


1
Come .,.+2s/^../*/(o equivalentemente in una selezione visiva)? Perché due comandi di sostituzione? 2csostituirà due personaggi.
Muru,

a volte viene modificata solo la prima riga nella selezione visiva, ripetendo poi con. per le altre righe rovina le cose.
poseid

2
@poseid hai l'abitudine di premere Ctrl-Cinvece di Esc? Ciò impedisce, tra l'altro, l'applicazione di modifiche a ciascuna riga di una selezione di blocchi visivi.
martedì

quello potrebbe essere il motivo principale di confusione! Grazie!
poseid

Risposte:


26

Selezione del blocco visivo:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Sostituzione:

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

Formula punti:

cE*<Esc>
j.
j.

1
Approccio folle: usando textobj-word-column.vim puoi fare ciC*<esc>ed essere fatto. Nota: questo plug-in è un plug-in "fai quello che voglio dire", quindi fallisce in luoghi e modi inaspettati, ma il plug-in è ancora utile in alcuni casi facili come questo.
Peter Rincker,

interessante la formula normale e dot!
poseid

3
Nota che per la soluzione Visual-block, vedrai solo il testo digitato sulla prima riga. Una volta colpito <Esc>, riempirà le righe rimanenti.
Tommaso,

Qualche suggerimento su un modo per ricordare che c sostituirà? Come come ctrl + D (proprio)
Jordan Mackie il

2
@JordanMackie cè per "cambiare".
rom

17

Ecco un modo più efficiente per farlo:

  1. Avendo il cursore sul primo elemento e sulla 1a lettera ( 0), entra in modalità visuale 'blockwise' Ctrl+ ve seleziona la 1a colonna del tuo paragrafo corrente per }(se la tua lista è finita con una nuova riga), altrimenti usa metodi diversi come i tasti freccia (per spostarti attorno alla selezione), oppure cerca pattern /c)dove si ctrova il tuo ultimo elemento).
  2. Passa all'ultimo simbolo del tuo elenco con ke l(o usando i tasti freccia ), quindi sono selezionate due colonne che vuoi cambiare.
  3. Cambia il testo selezionato premendo ce digita il simbolo del proiettile ( *) e termina premendo Esc.

Funziona in modo più efficiente soprattutto negli elenchi più lunghi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.