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.