แทนที่สตริงโดยไม่ต้องเปลี่ยนเคส?


18

เนื่องจากการเล่นโวหารในภาษาเฉพาะโดเมนที่ฉันทำงานด้วยฉันมักเผชิญกับงานของ (เลือกไม่ได้ทั่วโลก) แทนที่termหรือTERMด้วยwordหรือWORDตามลำดับ

วิธีนี้ผมค้นหากรณี insensitively สำหรับterm, และต้องการที่จะแทนที่ด้วยword ขณะที่การรักษาตัวพิมพ์ใหญ่ / ตัวพิมพ์เล็กของเดิมtermเหมือนเดิม

ตั้งแต่การตรวจสอบทั้งtermสำหรับสอดคล้อง / พิมพ์เล็กพิมพ์ใหญ่จะเป็นเรื่องยากและไม่จำเป็นจริงๆผมจะชำระสำหรับพิมพ์ใหญ่ / ตัวพิมพ์เล็กword/ ถูกตัดสินใจเกี่ยวกับอักษรตัวแรกของWORDterm

ฉันจะบรรลุสิ่งนี้ได้อย่างไร


2
หมายเหตุเกี่ยวกับ "เลือกสรร" สำหรับผู้ที่ไม่ทราบเพียงเพิ่มcคำแถลงการเปลี่ยนตัวด้านล่างและ Vim จะถามคุณเกี่ยวกับการแข่งขันทุกนัด
DevSolar

คำตอบ:


16

กล่องเก็บปลั๊กอินของ Michaels Geddes มีทุกอย่างที่คุณต้องการ:

:%SubstituteCase/\cterm/word/g

องค์ประกอบไวยากรณ์อื่น ๆ จาก:substituteยังได้รับการสนับสนุน


5
สดใส ... นี้จะมีนัยสำคัญเพิ่มความเร็วในสิ่งที่สำหรับฉัน ฉันยังแจ้งให้ทราบว่าผมไม่ได้ถามว่า " สามารถนี้ทำได้" แต่ " วิธีการที่จะทำมัน" ดูเหมือนว่าในที่สุดฉันก็มาถึงที่ Vim :-D
DevSolar

16

สิ่งนี้สามารถจัดการได้โดย:Subvertจากปลั๊กอินเลิก :

มีอยู่ครั้งหนึ่งที่ฉันมีแอปพลิเคชันที่มีรูปแบบโดเมนชื่อ "สิ่งอำนวยความสะดวก" ที่จำเป็นต้องเปลี่ยนชื่อเป็น "การสร้าง" ดังนั้นการค้นหาและแทนที่ง่าย ๆ ใช่มั้ย

:%s/facility/building/g

โอ้ แต่แตกต่างกันกรณี!

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

เดี๋ยวก่อนพหูพจน์เป็นมากกว่า "s" ดังนั้นเราต้องได้มันด้วย!

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

Abolish.vim มีหลังของคุณ หนึ่งคำสั่งให้ทำทั้งหกอย่างและคุณสามารถทำซ้ำได้ด้วย & ด้วย!

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.