Vim: Bagaimana cara memasukkan dalam mode blok visual?

154

Bagaimana Anda dapat memasukkan ketika Anda berada dalam mode blok visual (dengan menekan ctrl-V) di Vim?

ovatsug25
sumber
4
kemungkinan duplikat VIM Blockwise Insert
Conner
1
RINGKASAN CEPAT DARI JAWABAN: Saya akan memberikan jawabannya di sini dalam bentuk sederhana. Ada begitu banyak komentar, sehingga utas ini tenggelam. 1) Periksa apakah Anda telah mengaktifkan + visualextra di versi Vim Anda, dengan mengetik: ver di Vim. 2) Anda memasukkan dengan terlebih dahulu menandai hal-hal yang ingin Anda edit dan kemudian tekan I (kapital i) - huruf kecil saya tidak akan berfungsi. 3) Setelah Anda melakukannya, maka akan mungkin terlihat seperti Anda hanya menyisipkan pada baris pertama, tetapi setelah selesai, tekan ESC dan j, kemudian teks tersebut akan disalin ke baris lainnya. Begitulah yang terjadi pada saya.
Zeth

Jawaban:

211

Coba ini

Setelah memilih satu blok teks, tekan Shift+ iatau kapital I.

Huruf kecil itidak akan berfungsi.

Kemudian ketikkan hal-hal yang Anda inginkan dan akhirnya terapkan ke semua baris, tekan Escdua kali.




Jika ini tidak berhasil ...

Periksa apakah Anda telah +visualextramengaktifkan versi Vim Anda.

Anda dapat melakukan ini dengan mengetik :verdan menggulir daftar fitur. (Anda mungkin ingin menyalin dan menempelkannya ke buffer dan melakukan pencarian tambahan karena formatnya ganjil.)

Mengaktifkannya berada di luar cakupan pertanyaan ini, tetapi saya yakin Anda dapat menemukannya di suatu tempat.

ovatsug25
sumber
14
Jangan lupa Ajuga!
jmdeldin
43
Anda juga harus menekan escape untuk keluar dari mode penyisipan sebelum teks akan diduplikasi.
Brandon Joyce
20
Adakah yang pernah melihat ini tidak berhasil? Saya memiliki pengaturan vim yang tidak dimodifikasi di CentOS. Saya menekan ctrl + v, tekan ja beberapa kali, dan saya melihat kursor menyorot karakter pertama dari beberapa baris. Saya tekan shift + i. Kursor akan dipindahkan ke karakter pertama dari baris pertama, tapi saya kembali ke mode normal. Saya tahu ini karena jika saya menekan "a", ini akan memindahkan karakter ke kanan, dan bertuliskan "- INSERT -". Jika saya mengetik beberapa karakter dan menekan escape, itu tidak diterapkan ke baris lain.
Tyler Collier
2
@TylerCollier Saya mengalami masalah di Ubuntu 14.04 di digitalocean. Silakan beri komentar jika Anda telah menemukan solusi.
Zack Burt
2
@ZacharyBurt Vim default yang diinstal dengan Ubuntu 14.04 (diinstal sebagai vi) tidak menyertakan visualextrafitur tersebut, jadi penyisipan blok tidak akan berfungsi di sana. sudo apt-get install vimmenghadirkan versi dengan lebih banyak fitur, yang visualextradiaktifkan. @TylerCollier Ini mungkin masalah yang sama pada instalasi CentOS Anda juga: periksa output dari vim --versionuntuk melihat daftar lengkap fitur yang diaktifkan.
Gabriel Grant
43
  1. tekan ctrl dan v // mulai pilih
  2. tekan shift dan i // lalu ketik teks apa saja
  3. tekan esc esc // tekan esc dua kali
dom gratis
sumber
Setelah menekan ctrl + v, Anda dapat menekan juntuk dengan cepat memilih baris di bawah posisi saat ini, atau tekan kuntuk memilih baris di atas posisi saat ini dengan cepat. Anda juga dapat menggunakan shiftkunci dengan kesalahan upatau downuntuk melakukan pemilihan.
tyler.frankenstein
1
Dari semua jawaban, inilah satu-satunya yang berhasil untuk saya. Saya menggunakan Mac menggunakan instalasi bir
Daniel Kaplan
Saya telah mengeluh selama bertahun-tahun bahwa saya tidak bisa dengan mudah saya nsert (seperti c hange) di blok pilih. Jadi dengan modal i, saya terkesima. Saya telah menggunakan :normal iINPUT<CR>input di awal baris. Terima kasih banyak untuk ini!
Tim Visée
Saya tidak berpikir Anda perlu menekan esc dua kali. Jika Anda menekan apapun setelah esc, itu akan secara otomatis memperbarui teks. Jika tidak, itu akan melakukannya dalam setengah detik atau lebih.
Shahbaz
29

Anda mungkin juga memiliki kasus penggunaan di mana Anda ingin menghapus blok teks dan menggantinya.

Seperti ini

Hello World
Hello World

Anda dapat memilih visual blok sebelum "W" dan tekan Shift+ i- Ketik "Cool" - Hit ESCdan kemudian hapus "Dunia" dengan pemilihan blok visual.

Atau, cara yang lebih keren untuk melakukannya adalah dengan hanya memblokir visual pilih "Dunia" di kedua baris. Ketik cuntuk change. Sekarang Anda berada dalam insertmode. Masukkan barang yang Anda inginkan dan tekan ESC. Keduanya tercermin dengan penekanan tombol yang lebih rendah.

Hello Cool 
Hello Cool
Nishant
sumber
langkah terakhir sangat membantu saya, Anda harus menekan ESCmaka semua garis yang ditandai akan menampilkan karakter yang Anda ketik.
Webb Lu
hal-hal hebat, ini sangat membantu
prosti
9

jika Anda ingin menambahkan teks baru sebelum atau sesudah kolom yang dipilih:

  • tekan ctrl + v
  • pilih kolom
  • tekan shift + i
  • tulis teks Anda
  • tekan esc
  • tekan "jj"
rugby82
sumber
2
Terima kasih, jjuntuk menyebarkan perubahan ke semua baris di bawah ini adalah bagian terakhir yang saya lewatkan!
kilogic
jjadalah pembunuh!
Anh Tran