Bagaimana cara mendapatkan vim untuk mengganti karakter dalam pemilihan visual saja dan tidak di tempat lain di telepon? Contoh:
- Baris:
int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/};
- Seleksi Visual:
{ 00 01 02 03 04 05 05 /*... lots more like this*/}
- Perintah:
:'<,'>s/\ /\,0x/g
- Diharapkan:
int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};
Namun setelah melakukan tindakan ini, hasil yang sebenarnya adalah:
int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};
Apakah ada cara untuk mengubah perintah di atas untuk menghasilkan hasil yang diharapkan? Tidakkah '<
dan '>
menentukan kisaran tempat perintah pencarian (dan ganti) bekerja?
substitute
visual-mode
Bhargav Bhat
sumber
sumber
:substitute
operator berdasarkan garis demi garis, yang menjelaskan apa yang Anda lihat dalam contoh Anda.Jawaban:
%V
cocok di dalam area visual. Lihat:help %V
.sumber
Ada
\%V
untuk itu, lihat:h %V
:Untuk mengganti
foo
denganbar
dalam pemilihan saja, gunakan:Dalam kasus khusus ini:
sumber
Jika Anda ingin mengganti dalam blok visual , Anda dapat menggunakan
vis.vim
plugin .http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
Untuk memasang:
Unduh vis.vba.gz dari http://www.drchip.org/astronaut/vim/index.html#VIS
Setelah diinstal:
Saat Anda mengetik
:B
, Anda akan melihat iniTidak apa-apa, itu hanya vim mengatakan bahwa perintah akan berlaku untuk blok visual yang saat ini dipilih.
Bahkan lebih baik, Anda dapat melakukan perintah Ex pada blok visual, bukan hanya substitusi. Sebagai contoh
:B !sort
.sumber