ฟังก์ชั่นเสมือนจริงสำหรับ Notepad ++?


52

ฉันต้องการฟังก์ชั่น grep คล้าย ๆ กันใน Notepad ++

ในรุ่นที่ง่ายที่สุดฉันต้องการคัดลอกบรรทัดทั้งหมดจากบัฟเฟอร์ปัจจุบันที่มีคำfooไปยังบัฟเฟอร์ใหม่ ฉันสามารถใช้ปลั๊กอิน TextFX เพื่อซ่อนทุกบรรทัดที่ไม่มีfooแต่นั่นไม่ได้ทำทุกอย่างที่ฉันต้องการ (มันหายไปAlt- Tabฉันไม่สามารถคัดลอกเฉพาะบรรทัดที่ตรงกัน ฯลฯ )

คำตอบ:


79

Ctrl+ F-> ไปที่มาร์คแท็บ -> สลับBookmark บรรทัด -> คลิกมาร์คทั้งหมด

เลือกเมนูค้นหา -> ที่คั่น -> คัดลอกเส้นที่คั่นไว้


5
ขอบคุณมาก คุณสามารถ 'ตัดบรรทัดคั่นหน้า' สำหรับคนยากจนgrep -vด้วย
ARRG

2
ในรุ่นที่ใหม่กว่าเช่น 5.4.5 ไม่มีแท็บ "ทำเครื่องหมาย" แต่มีช่องทำเครื่องหมาย "ทำเครื่องหมายบรรทัด" ในแท็บ "ค้นหา" และ "Copy Bookmarded Lines" เป็นอย่างยิ่งในเมนู "ค้นหา"
Peter Mortensen

@ARRG ไม่พบบรรทัดบุ๊กมาร์กแบบตัดหรือคัดลอกบรรทัดบุ๊กมาร์กในเวอร์ชันปัจจุบันอยู่ที่ไหน
Nicolas Thery

ทำงานเหมือน Charm :-)
Sundararaj Govindasamy

12

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

น่าเสียดายที่มันมีข้อมูลที่ไม่เกี่ยวข้องในผลลัพธ์ (หมายเลขบรรทัด ฯลฯ ) แต่คุณสามารถกรองออกโดยใช้โหมดคอลัมน์


1
หมายเลขบรรทัดที่เพิ่มเข้ามาอาจเป็นคุณลักษณะ :)
Frank Meulenaar

2
คุณอาจพบว่าปลั๊กอินนี้มีประโยชน์code.google.com/p/searchplus
Amarghosh

@Amarghosh Nice ปลั๊กอิน แต่ขาดการยศาสตร์ (ทำไมปุ่มและไม่มีแป้นพิมพ์ลัด) Nice catch :)
Benjamin

@Benji Alt-Q จะเปิดตัวปลั๊กอิน แม้ว่าจะไม่มีปุ่มลัดในหน้าต่างปลั๊กอินการเปิดใช้งานการนำทางแท็บพื้นฐานได้ถูกเปิดใช้งาน หากมีความสนใจในปลั๊กอินเพียงพอฉันจะพยายามเพิ่มคุณสมบัติเพิ่มเติมเมื่อฉันมีเวลา ขอบคุณสำหรับความคิดเห็น :)
Amarghosh

2

โซลูชันที่ยอดเยี่ยมอีกวิธีหนึ่งคือการใช้ปลั๊กอิน NppExec เพื่อเพิ่มคำสั่ง grep สำหรับ Notepad ++

ข้อได้เปรียบหลักของโซลูชัน "บุ๊กมาร์ก" คือมันทำงานได้เร็วขึ้นมากโดยเฉพาะอย่างยิ่งสำหรับไฟล์ขนาดใหญ่และคุณไม่จำเป็นต้องแก้ไขไฟล์ต้นฉบับของคุณ โปรดทราบว่าคุณต้องสร้างสคริปต์ขนาดเล็กหนึ่งครั้งเพื่อให้คุณสมบัตินี้มีอยู่ใน Notepad ++ ของคุณ

ตัวอย่างโซลูชันของฉันสำหรับ Windows และฉันใช้findstrซึ่งเป็นเครื่องมือคำสั่งคล้าย grep ที่มีอยู่ในเครื่อง Windows ทุกเครื่อง แต่แน่นอนคุณสามารถใช้โคลน grepอื่น ๆ ที่คุณเลือก

ขั้นตอนที่ 1: ติดตั้งปลั๊กอิน NppExec

ไปที่Plugins / Plugin Manager / Show Plugin Managerเลื่อนลงไปที่ NppExec เลือกปลั๊กอินนี้และคลิกที่ติดตั้ง คุณอาจต้องเริ่ม Notepad ใหม่เพื่อให้กระบวนการติดตั้งเสร็จสมบูรณ์

ขั้นตอนที่ 2: สร้างสคริปต์ขนาดเล็กสำหรับ NppExec

ไปที่Plugins / NppExec / Executeป้อนสคริปต์ต่อไปนี้และบันทึกเป็น "grep":

SET local OUTFILE = "c:\temp\$(FILE_NAME).temp"
INPUTBOX "Input filter string"
cmd /c findstr $(INPUT) "$(FULL_CURRENT_PATH)" >$(OUTFILE)
NPP_OPEN $(OUTFILE)

(โปรดตรวจสอบอีกครั้งว่าเส้นทางสำหรับ OUTFILE นั้นเหมาะกับสภาพแวดล้อมของคุณหรือไม่)

ขั้นตอนที่ 3: เพิ่มรายการเมนูสำหรับสคริปต์ของคุณ (ไม่บังคับ)

ไปที่Plugins / NppExec / Advanced Optionsเลือกสคริปต์ "grep" ใต้Associated scriptและคลิกตกลงเพื่อบันทึก รีสตาร์ท Notepad ตามที่ NppExec ร้องขอเพื่อให้การเพิ่มรายการเมนูใหม่เสร็จสมบูรณ์

ขั้นตอนที่ 4: เพิ่มทางลัดสำหรับสคริปต์ของคุณ (ไม่บังคับ)

ไปที่Settings / Shortcut Mapper / Plugin commandsเลื่อนลงเพื่อค้นหาคำสั่งสคริปต์ "grep" และกำหนดทางลัดให้ เช่นALT-G


ก่อนอื่นขอขอบคุณสำหรับคำตอบที่ยอดเยี่ยมที่รอการอัปโหลดหลายปี ... : -) ฉันคิดว่าฉันมีปัญหากับสคริปต์มันไม่ทำงาน จากนั้นฉันสังเกตเห็นว่าเราควรจะปรับเปลี่ยนเส้นทาง ฯลฯ แต่คุณไม่ได้พูดถึงมันอย่างชัดเจนดังนั้นฉันจึงคัดลอกวางสุ่มสี่สุ่มห้า! ฉันทำงานเร็วมากมันทำให้ฉันช้าลง: -)
pgr

ขอบคุณมากสำหรับความคิดเห็น ฉันจะเพิ่มเข้าไปในคำตอบของฉัน
Erik Kalkoken

บันทึกย่อขนาดเล็กอื่น: $(FULL_CURRENT_PATH)จะไม่ส่งคืนพา ธ ใด ๆ หากไฟล์ยังไม่ถูกบันทึก คุณอาจคาดหวังว่ามันจะอยู่ที่ไหนสักแห่ง (ไดเรกทอรีชั่วคราว?) แต่ไม่ได้จริงๆ สถานการณ์ไฟล์ที่ไม่ได้บันทึกอาจเป็นเรื่องปกติคุณเพียงแค่วางบางอย่างจากบันทึกเพื่อ grep มัน ... เราอาจจะทำสคริปต์นี้ให้สมบูรณ์หากบันทึกไม่ได้ - แต่สำหรับความเรียบง่ายฉันจะเตือนตัวเองให้บันทึก ก่อนทำการ grepping ขอบคุณ
pgr

สิ่งนี้ใช้งานได้ไหมหากสตริงการค้นหามีช่องว่าง หรือตัวละครพิเศษอื่น ๆ ?
G-Man

ใช่นั่นใช้ได้
Erik Kalkoken

-1

ขั้นตอนที่ 5: สร้างสคริปต์สำหรับการบันทึกอย่างรวดเร็วและเอกสาร grep

ไปที่ปลั๊กอิน / NppExec / Execute ป้อนสคริปต์ต่อไปนี้และบันทึกเป็น "grep":

SET AUTOSAVEFILE ในท้องถิ่น = "% tmp% \ NpPPautosave.tmp" ตั้งค่า
OUTFILE ท้องถิ่น = "% tmp% \ NpPPautosaveToGrep.temp"
NPP_SAVEAS "% tmp% \ NpPPfile.tmp"
INPUTBOX "อินพุตสตริงสำหรับ GREP"
cmd / c findstr $ (INPUTBOX) ) $ (AUTOSAVEFILE)> $ (OUTFILE)
NPP_OPEN $ (OUTFILE)


ขั้นตอนที่ 1, 2, 3 และ 4 อยู่ที่ไหน
Pierre.Vriens

(1) เราต้องการคำตอบที่ยืนอยู่คนเดียว ดูเหมือนว่ามี (อย่างน้อย) ขั้นตอนเดียวที่ต้องทำก่อนที่ใครบางคนสามารถใช้คำตอบของคุณได้ (คำใบ้: ขั้นตอนที่ 1); โปรดรวมไว้ในคำตอบของคุณ (2) แต่ดูเหมือนว่ามันรุนแรงมากว่าคำตอบของคุณจะยืนอยู่บนไหล่ของคำตอบ Erik Kalkoken ของ หากคุณจะทำเช่นนั้นคุณควรพูดอย่างนั้น … (ต่อ)
G-Man

(ต่อ) ... (3) คำตอบของคุณดีกว่าของ Erik หรือไม่? ถ้าเป็นเช่นนั้นโปรดอธิบายวิธีและเหตุผล (อันที่จริงมันจะดีถ้าคุณจะอธิบายว่าคำตอบทำอะไรและจะใช้อย่างไร) ถ้าไม่คุณโพสต์ไว้ทำไม? (4) คุณเชื่อไหมว่ามันดีกว่าที่จะใช้ชื่อไฟล์ที่มีการกำหนดรหัสตายตัวแทนที่จะเป็นชื่อไฟล์ที่มีพื้นฐานมาจากชื่อไฟล์ปัจจุบัน? (5) มีประโยชน์ในการใช้งานfindstrไฟล์บันทึกอัตโนมัติมากกว่าไฟล์ปัจจุบันหรือไม่? (6) ทำไมคำตอบของคุณใช้ทั้งสอง C:\tempและC:\tmp? ……โปรดอย่าตอบในความคิดเห็น แก้ไขคำตอบของคุณเพื่อให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
G-Man

(1) "ขั้นตอนเดียวที่ต้องทำก่อนใครสักคน" - Erik spteps ทั้งหมดตั้งแต่ 1 ถึง 4 (2) คุณต้องมี 50 ชื่อเสียงในการแสดงความคิดเห็น (เพื่อแสดงความคิดเห็น Erik โพสต์) (3) ใช่คำตอบของฉันเล็กดีกว่าเพราะคำตอบ Erik ไม่ทำงานก่อนที่เอกสารจะถูกบันทึกลงในฮาร์ดดิสก์ ฉันไม่ต้องการบันทึกไฟล์ชั่วคราวสำหรับ grep มัน "คำตอบคืออะไรและจะใช้อย่างไร" - รหัสของฉันเพิ่งบันทึกข้อความที่เปิดใน notepad ++ ไปยังไฟล์ชั่วคราวใน hdd นี่คือบรรทัด "NPP_SAVEAS" เพียงบันทึกข้อความบน hdd โดยอัตโนมัติ (4) ไม่! exactpy ไม่ (5) ใช่! แกน Erik ไม่ทำงานก่อนบันทึกลงในฮาร์ดไดรฟ์ให้ดูที่คำตอบ (3) ของฉัน
Kasumiru

(6) Sory ฉันรีบร้อนและเข้าใจผิด windows cygwin ของฉันมี tmp และ temp dirs "กรุณาอย่าตอบในความคิดเห็น" - sory แต่ฉันเขียนคำตอบก่อนที่จะอ่านความคิดเห็นนี้
Kasumiru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.