ข้อความประเสริฐ: ค้นหาและแทนที่ภายในส่วนที่เลือก


21

Sublime Text 2 อนุญาตให้ผู้ใช้ทำการค้นหาและแทนที่ซึ่ง จำกัด อยู่ที่การเลือกปัจจุบันหรือไม่?

ฉันควรคิดว่าต้องมีเพียงฉันเท่านั้นที่ไม่สามารถทำได้หลังจากการค้นหาหลายครั้งเพื่อค้นหาวิธีดำเนินการ

คำตอบ:


23

มีปุ่มสำหรับใช้ใน ST2

ภาพหน้าจอ


4
จริงมีปุ่ม แต่คุณจะใช้มันอย่างไร โดยเฉพาะอย่างยิ่งคุณตั้งค่า "การเลือก" ได้อย่างไร จากประสบการณ์ของฉัน ST2 ใช้การเลือกจากเวลาที่คุณเปิดแถบค้นหา ดังนั้นหากแถบเปิดอยู่แล้วคุณต้องปิดก่อน (Esc) จากนั้นเลือกช่วงของข้อความที่คุณต้องการตรวจสอบแล้วเปิดอีกครั้ง (Ctrl + F หรือ Ctrl + H) เคล็ดลับสำหรับมืออาชีพ: หากการเลือกครอบคลุมหลายบรรทัดจะไม่แทนที่นิพจน์การค้นหาปัจจุบันของคุณ
Robert

3
Cmd + Opt + F บน mac เพื่อเปิดคอนโซล find & replace
คาห์

2
ฉันงงงวยอย่างสมบูรณ์ว่าทำไมไม่มีแป้นพิมพ์ลัดสำหรับที่ "ในการเลือก" โดยเฉพาะเพราะมีตัวเลือกอื่น ๆ ! ฉันต้องขยับมือของฉันไปที่เมาส์เพื่อเปิดใช้งานหรือไม่ ดูเหมือนว่าจะต่อต้าน ST ทั้งหมดหมายถึง ... (ฉันใช้ ST3)
TheStoryCoder

5
@ TheStoryCoder ใช่มันเป็นใบ้ว่าไม่มีแป้นพิมพ์ลัด แต่มันกลับกลายเป็นว่าทำได้ง่ายยกเว้นชื่อของคำสั่งนั้นไม่มีการบันทึกไว้ แต่ฉันโชคดีและเดาถูก นี่คือรหัสที่จะเพิ่มให้กับการโยงคีย์ผู้ใช้ของคุณ: {"keys": ["alt + y"], "command": "toggle_in_selection", "บริบท": [{"คีย์": "การตั้งค่า is_widget", "โอเปอเรเตอร์" : "เท่ากับ", "ตัวถูกดำเนินการ": จริง}]},
Owen_R

หมายเหตุสำหรับคนอื่นที่สับสนเช่นฉัน: เมื่อคุณเลือกข้อความหลายบรรทัดจากนั้นกด Ctrl + H (ซึ่งเปิดการค้นหาและแทนที่) และเริ่มพิมพ์ในฟิลด์ "ค้นหาสิ่งที่" บรรทัดที่เลือกหยุดการค้นหาที่เลือก แต่พวกเขายังคงมี หากไม่ใช่สำหรับปัญหานั้นฉันจะไม่ได้แม้แต่ค้นหาวิธีแก้ไขและพบโพสต์นี้ BTW ฉันดูเหมือนจะจำปัญหาที่ไม่เคยมีมาก่อนดังนั้นอาจหลังจากรีบูตหรือสิ่งที่มันจะหายไป
Stefan Monov

7

หากการเลือกของคุณมีการขึ้นบรรทัดใหม่ปุ่ม "ภายในการเลือก" จะเปิดใช้งานโดยอัตโนมัติใน ST2

การเปิดใช้งานสมาร์ทหายไปใน ST3 ขออภัย คุณสามารถติดตามได้ที่นี่http://www.sublimetext.com/forum/viewtopic.php?f=3&t=11679


10
ตอนนี้เป็นไปได้ที่จะนำฟังก์ชันการทำงานนี้กลับมาโดยใช้: "auto_find_in_selection": จริง
mdrozdziel

ฉันจะเรียกใช้โดยอัตโนมัติเมื่อไม่รวมตัวแบ่งบรรทัดได้อย่างไร ตัวอย่างเช่นเมื่อคุณมีเส้นที่ยาวมาก ๆ ซึ่งครอบคลุม "แถว" จำนวนมาก? ทุกครั้งที่ฉันเลือกบรรทัดนั้นและเรียกใช้การค้นหามันจะปิดใช้งานตัวเลือก "กำลังเลือก"
user2544542

6

นี่คือสิ่งที่คุณต้องเพิ่มในการผูกคีย์ผู้ใช้ของคุณ:

{ "keys": ["alt+y"], "command": "toggle_in_selection", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

ใช่มันเป็นใบ้ที่ไม่มีชุดปุ่มลัดเริ่มต้น

ชื่อคำสั่ง " toggle_in_selection" ก็ไม่ได้จัดทำเป็นเอกสาร แต่ฉันเดาและโชคดี


แก้ไขเพื่อเพิ่ม:

/*
btw, the way i want to use find by default
(actually, i use replace by default, but same dif),
is for "in_selection" to be true by default,
*unless* the selection is empty.
(
the default is that "in_selection" is *false* by default,
unless the selection contains a newline.
)
i finally got around to digging up how to get that,
which is apparently by changing the *keybindings* you use to pop open the find(/replace) panel?
*/
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": true}},
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": false},
    "context":
        [
            { "key": "selection_empty", "operator": "equal", "operand": true}
        ]
    },

การผูกกุญแจมีอยู่แล้วตามค่าเริ่มต้น
elsadek

ฮะ. สงสัยว่าทำไมฉันถึงหายไปจากนั้น ... สิ่งเดียวที่ "toggle_" ที่ฉันมีในการผูกค่าเริ่มต้นคือ:toggle_side_bar toggle_full_screen toggle_distraction_free toggle_overwrite toggle_record_macro toggle_setting toggle_comment toggle_case_sensitive toggle_regex toggle_whole_word toggle_preserve_case
Owen_R

3

(พร้อมทางลัดเฉพาะ Mac OS X) เพื่อแทนที่some nameด้วยnew name:

  1. วางเคอร์เซอร์ไว้เหนือข้อความ
  2. ค้นหาsome name: cmdfพิมพ์some name(บางครั้งต้องกดreturn)
  3. ระบุแทนที่: shiftcmdr, tabtabที่จะได้รับที่จะมาแทนที่ฟิลด์ชนิดnew name, ทำไม่ได้กดreturn
  4. ทำซ้ำaltcmdeจนกว่าจะเสร็จ

ไม่มีใครรู้วิธีที่เร็วกว่าในการทำเช่นนี้! มันค่อนข้างไร้สาระและยากที่จะจำโดยไม่จำเป็น
AJP

ดูคำตอบของ @ oliver-g - ST2 ทำตามค่าเริ่มต้นและหากคุณปิดใช้งานให้คลิกctrl+Hและจากนั้นไปที่ "ค้นหาอะไร:" มีปุ่มที่ใส่เครื่องหมาย "ในรายการ"
Peter

2

เพียงเลือกข้อความที่คุณต้องการค้นหาจากนั้นคลิกแทนที่จากเมนูค้นหา มันจะทำโดยอัตโนมัติในการเลือกของคุณ


0

กุญแจสำคัญในการทำงานกับการแทนที่ภายในการเลือกคือการเลือกข้อความแรกแล้วไปหา> แทนที่แล้วกรอกข้อความสำหรับสิ่งที่คุณจะได้พบ & แทนที่จากนั้นตรวจสอบเครื่องมือปุ่ม "ในการเลือก"จากนั้นคลิกที่ "แทนที่ทั้งหมด" ..


0

ฉันกำลังเพิ่มคำตอบอื่นเป็นทางออกที่ดีที่สุดและเป็นประโยชน์มากที่สุด (ในความคิดของฉัน) ถูกซ่อนอยู่ในความคิดเห็นและฉันเกือบจะพลาด (ขอบคุณ @mdrozdziel)

เลือกข้อความที่คุณต้องการค้นหากดShift+ Hเพื่อเรียกใช้แถบเครื่องมือค้นหาและแทนที่ มีปุ่มทางด้านขวาของปุ่มธนาคารทางด้านซ้ายซึ่งจะเปิดใช้งานการค้นหาภายในตัวเลือก

นี้ปิดโดยค่าเริ่มต้นใน ST3 แต่คุณสามารถตั้งค่าให้เริ่มต้นในเมื่อคุณเลือกมากกว่าหนึ่งบรรทัดโดยการเพิ่ม"auto_find_in_selection": trueไปยังไฟล์ตั้งค่าของคุณ (ที่พบโดยป้อนAlt, N, S, Enter)

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