เปลี่ยน EOL หลายไฟล์ในครั้งเดียว


101

มีวิธีใดบ้างใน Notepad ++ (หรือแม้กระทั่งกับเครื่องมืออื่น) ในการเปลี่ยนการสิ้นสุดบรรทัดโดยอัตโนมัติในหลายไฟล์ในครั้งเดียว ?

เช่นแปลงไฟล์ windows EOL ( CRLF) และ UNIX EOL ( LF) ให้เป็น Windows EOL ( CRLF) ทั้งหมด


1
ในกรณีที่ notepad ++ ไม่ใช่ข้อกำหนดของ บริษัท ข้อมูลที่นี่อาจเกี่ยวข้อง: stackoverflow.com/questions/3110031/…
reuben

คำตอบ:


103

แทนที่โต้ตอบสามารถจัดการกับการขยายตัวอักษรเช่น EOL เพียงแค่เปลี่ยน "โหมดการค้นหา" เป็น "ขยาย" และคุณสามารถทำงานกับ EOL (\ r \ n ใน Windows หรือ \ n ใน Unix), แท็บ (\ t) ฯลฯ

คุณยังสามารถใช้แท็บค้นหาในไฟล์ของกล่องโต้ตอบเพื่อแทนที่ไฟล์หลายไฟล์

ภาพหน้าจอ


14
โปรดทราบว่าโซลูชันนี้จะไม่ทำงานหากไฟล์ทั้งหมดของคุณไม่ใช่ได้เป็นสไตล์ยูนิกซ์ ตั้งแต่แทนที่\nด้วย\r\nนอกจากนี้ยังจะแปลงไป\r\n \r\r\n
Kirk Woll

-1 โดยไม่ต้องเปลี่ยนแก้ไข> การแปลง EOL (ดู Dos \ Windows ในแถบสถานะของภาพหน้าจอของคุณ) การกด ENTER จะเป็นการใส่ EOL ที่ไม่ถูกต้อง - และการมี EOL แบบผสมนั้นแย่ยิ่งกว่าการรักษามาตรฐานใด ๆ
Aprillion

43
แทนที่ \ n ด้วย \ r \ n จากนั้นแทนที่ \ r \ r \ n ด้วย \ r \ n วอยล่า!
dev_row

2
ทำไมตัวอย่างภาพหน้าจอของคุณจึงแสดง\tในFind what? แท็บไม่มีส่วนเกี่ยวข้องกับการเปลี่ยนการสิ้นสุดบรรทัดใช่ไหม?
trejder

1
เยี่ยมมาก ... มันทำงานได้อย่างสมบูรณ์แบบในโปรแกรมแก้ไข notepad ++ ... มันช่วยประหยัดความพยายามอย่างมากที่เราจะใช้จ่ายโดยการเปลี่ยนแปลงด้วยตนเอง
aniruddha

91

ฉันมี Notepad ++ 6.1.2
ในเมนู "แก้ไข" คุณมี "การแปลง EOL" ที่ตอบสนองสิ่งที่คุณต้องการ


25
ที่ทำงานบนพื้นฐานของไฟล์ไม่สามารถใช้กับไฟล์ทั้งชุดได้
fduff

11
คุณอ่านชื่อคำถามแล้วหรือยัง? คุณเห็นส่วน "เปลี่ยน EOL ในหลายไฟล์ " หรือไม่
Sk8erPeter

2
คุณสามารถเปิดไฟล์มากกว่าหนึ่งไฟล์เพื่อทำกับไฟล์มากกว่าหนึ่งไฟล์ตามลำดับ เหมือนที่เขาพูดว่า "ในครั้งเดียว" ไม่ได้อยู่ที่นั่น
gparent

7
อันที่จริงคำตอบนั้นมีประโยชน์มากสำหรับฉันเนื่องจากฉันต้องการเปลี่ยน EOL ในไฟล์เดียวและฉันไม่รู้ว่าจะทำอย่างไร
DiegoDD

5
คำตอบที่เป็นประโยชน์นี้เกิดขึ้นก่อนใน Google
Matthew Lock

69

ใช้คุณสมบัติ 'ค้นหาในไฟล์' (Ctrl + Shift + F) เปลี่ยนโหมดการค้นหาที่ด้านล่างซ้ายเป็น 'นิพจน์ทั่วไป'

ในช่อง "ค้นหาอะไร" ให้ใช้รูปแบบนี้:

(?<!\r)\n

แทนที่ด้วย:

\r\n

เลือกไดเร็กทอรีของคุณและระบุตัวกรองประเภทไฟล์ เลือก 'ในโฟลเดอร์ย่อยทั้งหมด' หากคุณต้องการ คลิก 'แทนที่ในไฟล์'

สิ่งนี้จะแทนที่อักขระขึ้นบรรทัดใหม่ (\ n) ที่ไม่ได้นำหน้าด้วยการคืนค่าขนส่ง (\ r) ด้วย \ r \ n ดังนั้นมันจะไม่ตรงกับส่วนท้ายบรรทัดที่เป็นสไตล์ Windows อยู่แล้ว

ป้อนคำอธิบายภาพที่นี่


1
คุณช่วยอธิบายได้ไหมว่า(?<!\r)\nหมายถึงอะไรโดยเฉพาะตอนแรก?<!ขอบคุณ!
user1032613

2
(?<! )เป็น lookbehind เชิงลบ หมายถึงการจับคู่หากไม่มีคำนำหน้า ในกรณีนี้มันกำลังตรวจสอบ\rและจะจับคู่ก็ต่อเมื่อ\nไม่มี\rก่อนหน้านั้น
rtpHarry

ใช่. ฉันเห็นด้วยกับ rtpHarry นี่คือส่วนนี้จากคำตอบของฉัน: "อักขระขึ้นบรรทัดใหม่ (\ n) ใด ๆ ที่ไม่ได้นำหน้าด้วยการคืนค่าขนส่ง (\ r)"
ฌอน

1
โซลูชันที่ซับซ้อนที่สุด!
Philipp Michalski

4
ในทางเทคนิคนี่เป็นคำตอบที่แม่นยำและสมบูรณ์ที่สุดในหน้านี้
dotNET

8

ใช้แทนที่ทั้งหมดด้วยนิพจน์ทั่วไป

(\r?\n)|(\r\n?)

ถึง

\r\n

ซึ่งจะจับคู่รูปแบบการสิ้นสุดบรรทัดที่เป็นไปได้ทั้งหมด (single \ r \ n หรือ \ r \ n) กลับไปที่ \ r \ n (Windows)

หากต้องการใช้งานไฟล์หลายไฟล์ให้ทำดังนี้

  • ใช้ "แทนที่ทั้งหมดในเอกสารที่เปิดทั้งหมด" ในแท็บ "แทนที่" คุณจะต้องลากและวางไฟล์ทั้งหมดลงใน Notepad ++ ก่อน เป็นเรื่องดีที่คุณจะสามารถควบคุมไฟล์ที่จะใช้งานได้ แต่อาจทำงานได้ช้าหากมีไฟล์หลายร้อยหรือหลายพันไฟล์
  • "แทนที่ในไฟล์" ในแท็บ "ค้นหาในไฟล์" ตามตัวกรองไฟล์ที่คุณเลือกเช่น * .cpp * .cs ภายใต้ไดเร็กทอรีที่ระบุ

คำตอบที่ดีที่สุดเนื่องจากใช้ได้กับการลงท้ายบรรทัดทุกรสชาติ ขอบคุณ!
โยโย่

นี่คือคำตอบที่ดีและง่ายที่สุด!
user1447420

5

โซลูชันการทำงานเดียวที่ฉันพบสำหรับไฟล์ / โฟลเดอร์หลายรายการหลังจาก googling เป็นเวลา 1 ชั่วโมงคือ:

  • ติดตั้งโหมดทดลองPyCham
  • เปิดและเลือกโฟลเดอร์ / โฟลเดอร์โครงการของคุณแล้วทำตามภาพหน้าจอ

ป้อนคำอธิบายภาพที่นี่


ยังใช้งานได้ใน IntelliJ IDEA Community Edition ซึ่งฟรีและไม่ต้องทดลองใช้ IntelliJ IDEA .
CodeMonkey

1

พบวิธีแก้ปัญหานี้จากการสนทนานี้:

คุณยังสามารถตั้งค่า EOL เริ่มต้นใน notepad ++ ผ่าน "การตั้งค่า" -> "การตั้งค่า" -> "เอกสารใหม่ / ไดเรกทอรีเริ่มต้น" จากนั้นเลือก "Unix / OSX" ใต้ช่องรูปแบบ

หมายเหตุ: คุณสามารถใช้ตัวเลือกนอกแบนด์ได้ตลอดเวลาโดยใช้บรรทัดคำสั่ง:

unix2dos *.cmd
dos2unix *.sh

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