การแทนที่โกลบอลกลุ่มนั้นไม่ได้แทนที่ทุกการแข่งขัน


12

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

ผมใช้gหรือพารามิเตอร์การดำเนินงานในไฟล์ทั้งหมดที่มีgc%

ในไฟล์นี้:

hello hello
hello
hello hello hello
hello

ถ้าฉันจะ%s/hello/goodbye/gได้รับ

goodbye hello
goodbye
goodbye hello hello
goodbye

สิ่งที่ฉันมีในการ.vimrcค้นหา / แทนที่คือ

set hlsearch
set ignorecase
set incsearch

3
ได้โปรดยกตัวอย่างโลกแห่งความจริงและแสดงให้คุณvimrcเห็น
romainl

2
ผลลัพธ์คืออะไร:echo &gdและจะเกิดอะไรขึ้นหากคุณเพิ่มการgตั้งค่าสถานะที่2 เช่นนี้%s/hello/goodbye/ggหรือหากคุณลบการgตั้งค่าสถานะทั้งหมด หากการส่งออกของ:echo &gdมี1ลองเพิ่มในตอนท้ายของคุณset nogdefault vimrc
user9433424

1
ละเอียด! ฉันไม่รู้ว่าทำไม แต่โดยค่าเริ่มต้นมันถูกตั้งค่าเป็น 0 ดังนั้นฉันจึงเพิ่มset nogdefaultเหมือนที่คุณพูดและใช้งานได้ตอนนี้ ขอบคุณ!
Nicolas Scotto Di Perto

คำตอบ:


12

'gdefault'บางทีคุณอาจจะหรือปลั๊กอินที่มีการเปิดใช้งานตัวเลือก ตัวเลือกนี้จะเพิ่มการตั้งค่าสถานะgโดยอัตโนมัติเมื่อใดก็ตามที่คุณทำการทดแทน

ดังนั้นเมื่อคุณเพิ่มการตั้งค่าสถานะด้วยตนเองgขณะที่'gdefault'เปิดใช้งานอยู่ราวกับว่าคุณมี 2 gสถานะที่มีผลเหมือนกับไม่มี ดังนั้น Vim จะแทนที่การเกิดขึ้นครั้งแรกของลวดลายบนทุกบรรทัดเท่านั้น

โดยค่าเริ่มต้นตัวเลือกนี้จะปิดการใช้งาน แต่เพื่อให้แน่ใจว่ามันคือคุณสามารถเพิ่มในตอนท้ายของคุณ:vimrcset nogdefault

หรือหากคุณสงสัยว่าปลั๊กอินอาจเปิดใช้งานตัวเลือกคุณสามารถติดตามด้วย: verb set gd?

หรือคุณอาจคุ้นเคยกับตัวเลือกซึ่งหมายความว่าเมื่อคุณต้องการแทนที่สิ่งที่เกิดขึ้นทั้งหมดของรูปแบบคุณจะไม่เพิ่มgแฟล็ก (เพราะgdefaultทำไปแล้ว) และเมื่อคุณต้องการแทนที่รูปแบบที่ 1 เท่านั้น บนบรรทัดคุณเพิ่มการgตั้งค่าสถานะ (เนื่องจาก 2 gสถานะเหมือนกันกับไม่มี)

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