การแปลง EOL ใน notepad ++


114

ด้วยเหตุผลบางประการเมื่อฉันเปิดไฟล์จากเซิร์ฟเวอร์ยูนิกซ์บนเครื่อง windows ของฉันไฟล์เหล่านั้นมีการแปลง Macintosh EOL เป็นครั้งคราวและเมื่อฉันแก้ไข / บันทึกอีกครั้งไฟล์เหล่านั้นจะทำงานไม่ถูกต้องบนเซิร์ฟเวอร์ยูนิกซ์ ฉันใช้ notepad ++ เพื่อแก้ไขไฟล์จากเซิร์ฟเวอร์ยูนิกซ์นี้เท่านั้นดังนั้นมีวิธีสร้างมาโครที่แปลง EOL เป็นรูปแบบ Unix โดยอัตโนมัติทุกครั้งที่ฉันเปิดไฟล์หรือไม่



1
ปัญหาของคุณอาจเกิดจากโปรแกรม FTP ที่คุณใช้อยู่ ตัวอย่างเช่นฉันใช้ WinSCP เพื่อรีโมตในเซิร์ฟเวอร์ Unix Notepad ++ ถูกตั้งเป็นตัวแก้ไขเริ่มต้นของฉัน แต่ฉันต้องเข้าไปที่การตั้งค่าของ WinSCP และตั้งค่าโหมดการถ่ายโอนเป็นBinaryเพื่อรักษาส่วนท้ายบรรทัดไว้ ดังนั้นคุณอาจสามารถกำหนดค่าโปรแกรม FTP / SCP / etc ของคุณใหม่เพื่อถ่ายโอนไฟล์ในลักษณะอื่น
Slicktrick

คำตอบ:


200

ฟังก์ชันดังกล่าวมีอยู่แล้วใน Notepad ++ จากเมนู "แก้ไข" เลือก "การแปลง EOL" -> "รูปแบบ UNIX / OSX"

ภาพหน้าจอของตัวเลือกเพื่อการค้นหาที่รวดเร็วยิ่งขึ้น (หรือเวอร์ชันภาษาอื่น)

คุณยังสามารถตั้งค่า EOL เริ่มต้นใน notepad ++ ผ่าน "Settings" -> "Preferences" -> "New Document / Default Directory" จากนั้นเลือก "Unix / OSX" ใต้ช่อง Format


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

ปัญหาคือเมื่อฉันเปิดไฟล์ Unix ที่มีอยู่ "EOL Conversion" -> รูปแบบ UNIX / OSX จะเป็นสีเทา Notepad ++ นั้นน่าหงุดหงิดที่จะใช้กับไฟล์ UNIX ดังนั้นฉันจึงใช้ Notetab Lite ซึ่งช่วยให้ฉันบันทึกไฟล์ทั้งหมดเป็น UNIX ไม่ใช่แค่ไฟล์ใหม่
ปิดทอง

3
@OffTheGold ตัวเลือก UNIX EOL เป็นสีเทาเนื่องจากเป็นการเลือกปัจจุบัน
blakeoft

RIght on. ขอบคุณข้อมูลจากพฤศจิกายน 2017 ผ่าน Google
SDsolar

นี่ไม่ได้ผลสำหรับฉัน ฉันเลือก "การแปลง EOL -> Unix" ต่อไป แต่มันไม่ได้ทำอะไรเลย ฉันกลับไปที่เมนูและเห็นว่า Windows เป็นตัวเลือกสีเทา (เลือกแล้ว?) ดังนั้นฉันจึงคลิก Unix อีกครั้ง ฉันพยายามเลือกข้อความทั้งหมดของฉันก่อนในกรณีที่ใช้ได้เฉพาะกับการเลือกจากนั้นเลือก Unix อีกครั้ง ยังคงไม่ทำอะไร
Loduwijk

16

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

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

ถึง

\n

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

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

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

ซึ่งอาจทำให้สูญเสีย EOL เนื่องจากการแทนที่ \ r \ n \ r \ n ด้วย \ n เดียว ฉันคิด.
อาทิตย์ที่

ยืนยันว่าทำงานใน Notepad ++ 6.9.1 มันจะค้นหาไปข้างหน้าดังนั้นจึงไม่แทนที่สิ่งที่อยู่เบื้องหลังซ้ำ
Wappenull

ในการตอบกลับ: "สิ่งนี้อาจทำให้สูญเสีย EOL เนื่องจากการแทนที่ \ r \ n \ r \ n ด้วย \ n" >> จะไม่เป็นไปตามที่ใช้ | (หรือ) ตัวดำเนินการระหว่าง 2 กลุ่มที่เป็นไปได้
Wappenull

3

ฉันเปิดไฟล์ "โดยตรง" จาก WinSCP ซึ่งเปิดไฟล์ใน Notepad ++ ฉันมีไฟล์ php บนเซิร์ฟเวอร์ linux ของฉันซึ่งเปิดในรูปแบบ Mac เสมอไม่ว่าฉันจะทำอะไรก็ตาม :-(

ถ้าฉันดาวน์โหลดไฟล์แล้วเปิดจาก local (windows) มันเปิดเป็น Dos / Windows .... อืมม

วิธีแก้ปัญหาคือ EOL แปลงไฟล์ในเครื่องเป็น "UNIX / OSX Format" บันทึกแล้วอัปโหลด

ตอนนี้เมื่อฉันเปิดไฟล์โดยตรงจากเซิร์ฟเวอร์มันจะเปิดเป็น "Dos / Windows" :-)


1

ขึ้นอยู่กับโครงการของคุณคุณอาจต้องการพิจารณาใช้ EditorConfig ( https://editorconfig.org/ ) มีปลั๊กอิน Notepad ++ ซึ่งจะโหลด. editorconfig ซึ่งคุณสามารถระบุ "lf" เป็นส่วนท้ายบรรทัดบังคับ

ฉันเพิ่งเริ่มใช้มัน แต่มันก็ดีจนถึงตอนนี้และโปรเจ็กต์โอเพนซอร์สที่ฉันทำงานอยู่ได้รวมไฟล์. editorconfig มาหลายปีแล้ว การตั้งค่า "การแปลง EOL" จะไม่เปลี่ยนแปลงดังนั้นจึงอาจสับสนเล็กน้อย แต่ถ้าคุณ "ดู> แสดงสัญลักษณ์> แสดงจุดสิ้นสุดของบรรทัด" คุณจะเห็นว่ามีการเพิ่ม LF แทน CRLF แม้ว่าจะเป็น "การแปลง EOL "และมุมล่างล่างจะแสดงอย่างอื่น (เช่น Windows (CR LF))

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