Bagaimana cara memblokir ganti kode dalam mode visual?

26

Saya memiliki daftar item tempat saya ingin mengganti dua karakter pertama:

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

Apa cara tercepat untuk membuat ini:

* item 1
* item 2
* item 3

Saya memiliki pendekatan dengan mode visual (Ctr-v, jjj, tetapi perlu melakukan dua perintah ganti. Iirc, penggantian ini dapat dilakukan dengan 1 perintah)

Poseid
sumber
1
Suka .,.+2s/^../*/(atau setara dalam pemilihan visual)? Mengapa dua perintah ganti? 2cakan mengganti dua karakter.
muru
terkadang hanya baris pertama dalam pemilihan visual yang diubah, diulang kemudian dengan. untuk jalur lain mengacaukan segalanya.
poseid
2
@poseid apakah Anda terbiasa menekan, Ctrl-Cbukan Esc? Ini mencegah, antara lain, perubahan diterapkan ke setiap baris dari pemilihan Visual-blok.
tommcdo
itu bisa menjadi alasan utama kebingungan! Terima kasih!
poseid

Jawaban:

26

Pilihan blok visual:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Pengganti:

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

Rumus dot:

cE*<Esc>
j.
j.
romainl
sumber
1
Pendekatan gila: menggunakan textobj-word-column.vim yang dapat Anda lakukan ciC*<esc>dan lakukan. Catatan: plugin ini adalah plugin "lakukan apa yang saya maksudkan" sehingga gagal di tempat dan cara yang tidak terduga, tetapi plugin ini masih berguna dalam beberapa kasus mudah seperti ini.
Peter Rincker
menarik rumus normal dan dot!
poseid
3
Perhatikan bahwa untuk solusi Visual-block, Anda hanya akan melihat teks yang diketik di baris pertama. Setelah Anda menekan <Esc>, itu akan mengisi baris yang tersisa.
tommcdo
Ada saran untuk cara mengingat bahwa c akan diganti? Seperti bagaimana ctrl + D (sendiri)
Jordan Mackie
2
@JordanMackie cuntuk "perubahan".
romainl
17

Inilah cara yang lebih efisien untuk melakukan ini:

  1. Memiliki kursor pada item pertama dan huruf 1 ( 0), masukkan mode visual 'blockwise' Ctrl+ vdan pilih kolom 1 paragraf Anda saat ini dengan }(jika daftar Anda selesai dengan baris baru), jika tidak gunakan metode yang berbeda seperti tombol panah (untuk memindahkan sekitar pemilihan), atau pencarian pola di /c)mana celemen terakhir Anda).
  2. Pindah ke simbol terakhir daftar Anda dengan kdan l(atau menggunakan tombol panah ), jadi dua kolom dipilih yang ingin Anda ubah.
  3. Ubah teks yang dipilih dengan menekan cdan ketik simbol peluru Anda ( *) dan selesai dengan menekan Esc.

Bekerja lebih efisien terutama dalam daftar yang lebih panjang.

kenorb
sumber