Ganti string tanpa mengubah kasing?


18

Karena kekhasan dalam bahasa khusus domain yang saya gunakan, saya sering menghadapi tugas (secara selektif, tidak global) mengganti termatau TERMdengan wordatau WORD, masing-masing.

Ini berarti, saya mencari kasus-insensitively untuk term, dan ingin mengganti bahwa dengan word tetap menjaga huruf besar / huruf kecil dari aslinya termutuh .

Karena memeriksa seluruh termuntuk huruf besar / kecil yang konsisten akan sulit dan tidak benar-benar diperlukan, saya akan puas dengan huruf besar / kecil dari word/ WORDsedang diputuskan pada huruf pertama term.

Bagaimana saya bisa mencapai ini?


2
Catat tentang "selektif" bagi mereka yang tidak mengetahuinya: Cukup tambahkan cdi akhir pernyataan substitusi di bawah ini, dan Vim akan bertanya tentang setiap pertandingan.
DevSolar

Jawaban:


16

Koper plugin Michaels Geddes memiliki semua yang Anda butuhkan:

:%SubstituteCase/\cterm/word/g

Elemen sintaksis lain dari :substitutejuga didukung.


5
Cemerlang ... ini secara signifikan akan mempercepat saya. Saya juga memperhatikan bahwa saya tidak lagi bertanya " dapatkah ini dilakukan", tetapi hanya " bagaimana melakukannya". Sepertinya saya akhirnya "tiba" di Vim. :-D
DevSolar

16

Ini dapat ditangani oleh :Subvertdari plugin abolish :

Suatu kali saya memiliki aplikasi dengan model domain yang disebut "fasilitas" yang perlu diganti namanya menjadi "bangunan". Jadi, cari dan ganti yang sederhana, bukan?

:%s/facility/building/g

Oh, tapi varian kasingnya!

:%s/Facility/Building/g
:%s/FACILITY/BUILDING/g

Tunggu, bentuk jamak lebih dari "s" jadi kita juga perlu mendapatkannya!

:%s/facilities/buildings/g
:%s/Facilities/Buildings/g
:%s/FACILITIES/BUILDINGS/g

Abolish.vim mendukung Anda. Satu perintah untuk melakukan semua enam, dan Anda dapat mengulanginya dengan & juga!

:%Subvert/facilit{y,ies}/building{,s}/g

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.