Vim: come inserire in modalità blocco visivo?


145

Come puoi inserire quando sei in modalità blocco visivo (premendo ctrl-V) in Vim?


4
possibile duplicato di VIM Blockwise Insert
Conner

1
RIEPILOGO RAPIDO DELLA RISPOSTA: Metterò qui la risposta in forma semplice. Ci sono così tanti commenti che questa discussione sta annegando. 1) Controlla se hai + visualextra abilitato nella tua versione di Vim, digitando: ver in Vim. 2) Inserisci prima contrassegnando le cose che vuoi modificare e poi premi I (maiuscolo i) - minuscolo non funzionerà. 3) Una volta che lo fai, allora sembrerà che stai inserendo solo sulla prima riga, ma quando hai finito, premi ESC e j, quindi il testo viene copiato nelle altre righe. Ecco come va per me.
Zeth,

Risposte:


203

Prova questo

Dopo aver selezionato un blocco di testo, premi Shift+ io maiuscolo I.

Le lettere minuscole inon funzioneranno.

Quindi digita gli elementi desiderati e infine per applicarli a tutte le righe, premi Escdue volte.




Se questo non funziona ...

Controlla se hai +visualextraabilitato nella tua versione di Vim.

Puoi farlo digitando :vere scorrendo l'elenco delle funzionalità. (Potresti voler copiarlo e incollarlo in un buffer ed eseguire una ricerca incrementale perché il formato è dispari.)

Abilitarlo non rientra nell'ambito di questa domanda ma sono sicuro che puoi trovarlo da qualche parte.


13
Non dimenticare Aanche!
jmdeldin,

42
Devi anche premere Esc per uscire dalla modalità di inserimento prima che il testo venga duplicato.
Brandon Joyce,

19
Qualcuno l'ha mai visto non funzionare? Ho una configurazione vim non modificata su CentOS. Premo ctrl + v, premo ja alcune volte e vedo il cursore evidenziare il primo carattere di alcune righe. Premo shift + i. Il cursore si sposta sul primo carattere della prima riga, ma sono tornato alla modalità normale. Lo so perché se premo "a", sposta il personaggio a destra e dice "- INSERISCI -". Se scrivo alcuni caratteri e premo Esc, non viene applicato alle altre righe.
Tyler Collier,

2
@TylerCollier Sto riscontrando il problema su Ubuntu 14.04 su digitalocean. Commenta se hai trovato una soluzione.
Zack Burt,

2
@ZacharyBurt Il vim predefinito installato con Ubuntu 14.04 (installato come vi) non include la visualextrafunzione, quindi l'inserimento di blocchi non funzionerà qui. sudo apt-get install vimporta in una versione più completa, su cui visualextraè attivato. @TylerCollier Potrebbe trattarsi dello stesso problema anche sulla tua installazione CentOS: controlla l'output di vim --versionper vedere l'elenco completo delle funzioni attivate.
Gabriel Grant,

41
  1. premere ctrl e v // start select
  2. premere maiusc e i // quindi digitare qualsiasi testo
  3. premere esc esc // premere esc due volte

Dopo aver premuto ctrl + v, è possibile premere jper selezionare rapidamente le righe sotto la posizione corrente oppure premere kper selezionare rapidamente le righe sopra la posizione corrente. È inoltre possibile utilizzare il shifttasto con gli errori upo downper eseguire la selezione.
Tyler.frankenstein,

1
Di tutte le risposte, questa è l'unica che ha funzionato per me. Sono su un mac usando l'installazione della birra
Daniel Kaplan,

Sono stato lamentando per anni che non ho potuto facilmente i NSERT (come c hange) nel blocco selezionare. Quindi è con una capitale i, sono stupito. Ho usato :normal iINPUT<CR>per inserire all'inizio delle righe. Grazie mille per questo!
Tim Visée,

Non penso che sia necessario premere esc due volte. Se si preme qualcosa dopo esc, aggiornerà automaticamente il testo. In caso contrario, lo farà in circa mezzo secondo.
Shahbaz,

29

Potresti anche avere un caso d'uso in cui desideri eliminare un blocco di testo e sostituirlo.

Come questo

Hello World
Hello World

Puoi selezionare il blocco visivo prima di "W" e premere Shift+ i- Digita "Cool" - Premi ESCe poi cancella "Mondo" selezionando il blocco visivo.

In alternativa, il modo migliore per farlo è semplicemente selezionare il blocco visivo "Mondo" in entrambe le righe. Digitare cper change. Ora sei nella insertmodalità. Inserisci le cose che vuoi e premi ESC. Entrambi vengono riflessi con sequenze di tasti minori.

Hello Cool 
Hello Cool

l'ultimo passaggio è utile per me, devi premere, ESCquindi tutta la linea contrassegnata mostrerà il carattere che digiti.
Webb Lu

grandi cose, aiuta molto
prosti

9

se vuoi aggiungere un nuovo testo prima o dopo la colonna selezionata:

  • premi ctrl + v
  • seleziona colonne
  • premi maiusc + i
  • scrivi il tuo testo
  • premere esc
  • premi "jj"

2
Grazie, jjper propagare le modifiche a tutte le righe di seguito è stato l'ultimo bit che mi mancava!
kg

jjè un assassino!
Anh Tran,
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.