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.
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.
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.
Jawaban:
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
+visualextra
mengaktifkan versi Vim Anda.Anda dapat melakukan ini dengan mengetik
:ver
dan 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.
sumber
A
juga!vi
) tidak menyertakanvisualextra
fitur tersebut, jadi penyisipan blok tidak akan berfungsi di sana.sudo apt-get install vim
menghadirkan versi dengan lebih banyak fitur, yangvisualextra
diaktifkan. @TylerCollier Ini mungkin masalah yang sama pada instalasi CentOS Anda juga: periksa output darivim --version
untuk melihat daftar lengkap fitur yang diaktifkan.sumber
ctrl + v
, Anda dapat menekanj
untuk dengan cepat memilih baris di bawah posisi saat ini, atau tekank
untuk memilih baris di atas posisi saat ini dengan cepat. Anda juga dapat menggunakanshift
kunci dengan kesalahanup
ataudown
untuk melakukan pemilihan.i
, saya terkesima. Saya telah menggunakan:normal iINPUT<CR>
input di awal baris. Terima kasih banyak untuk ini!Anda mungkin juga memiliki kasus penggunaan di mana Anda ingin menghapus blok teks dan menggantinya.
Seperti ini
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 dalaminsert
mode. Masukkan barang yang Anda inginkan dan tekan ESC. Keduanya tercermin dengan penekanan tombol yang lebih rendah.sumber
ESC
maka semua garis yang ditandai akan menampilkan karakter yang Anda ketik.jika Anda ingin menambahkan teks baru sebelum atau sesudah kolom yang dipilih:
sumber
jj
untuk menyebarkan perubahan ke semua baris di bawah ini adalah bagian terakhir yang saya lewatkan!jj
adalah pembunuh!