คำแนะนำในการเรียงลำดับบรรทัดเป็นกลุ่ม

Kha Naeana Ni Kar Reiyng Ladab Brrthad Penk Lum



หากต้องการเรียงลำดับบรรทัดใน Vim คุณสามารถใช้บิวด์อินได้ เรียงลำดับ คำสั่งที่เรียงลำดับบรรทัดตามช่วงที่กำหนด โดยทั่วไป บรรทัดทั้งหมดในเอกสารจะถูกจัดเรียงหากไม่มีการระบุช่วง

เช่น หากคุณต้องการจัดเรียงเอกสารทั้งหมด ให้ใช้ :เรียงลำดับ คำสั่งในโหมดปกติ ในทางกลับกัน หากคุณต้องการเรียงลำดับเฉพาะบรรทัด ให้ใช้ :x,y เรียงลำดับ สั่งที่ไหน x และ และ กำหนดช่วงจากหมายเลขบรรทัด x ถึง และ .







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



บันทึก: คำแนะนำและคำสั่งที่กล่าวถึงในคู่มือนี้ดำเนินการบน Linux (Ubuntu 22.04) Vim เป็นโปรแกรมแก้ไขข้อความข้ามแพลตฟอร์ม และคำสั่งเหล่านี้จะทำงานได้โดยไม่มีข้อผิดพลาดบน macOS และ Windows เช่นกัน



จัดเรียงบรรทัดทั้งหมด





หากต้องการเรียงลำดับบรรทัดทั้งหมดในเอกสาร ให้ดำเนินการ เรียงลำดับ คำสั่งในโหมดปกติ

:เรียงลำดับ



โดยค่าเริ่มต้น เรียงลำดับ คำสั่งจะเรียงลำดับบรรทัดตามลำดับพจนานุกรม

โปรดทราบว่าหากไฟล์ของคุณมีบรรทัดว่าง คำสั่ง sort จะวางบรรทัดว่างไว้ที่การเรียงลำดับข้อความจริงด้านบนสุด

เรียงลำดับบรรทัดที่เลือก

ในการจัดเรียงบรรทัดที่เลือก อันดับแรก เราต้องเลือกบรรทัดเหล่านั้นในโหมดการเลือก และหากต้องการเปิดใช้งานโหมดการเลือก ให้กด ใน และเลือกบรรทัดโดยใช้ ชม. , เจ , เค และ ปุ่มหรือปุ่มทิศทาง

Vim ยังมีโหมดการเลือกเฉพาะบรรทัดที่เรียกว่า เส้นภาพ โหมด. กด วี (กะ+วี) เพื่อเปิดใช้งาน เส้นภาพ โหมดเพื่อเลือกเส้น

หลังจากเลือกบรรทัดแล้ว คุณจะดู ‘ <, ' > ในบรรทัดคำสั่งซึ่งแสดงถึงช่วงการเลือก ' < ระบุบรรทัดแรกของการเลือกภาพในขณะที่ ' > บ่งบอกถึงสิ่งสุดท้าย

ตอนนี้เพียงพิมพ์ เรียงลำดับ คำสั่งแล้วกดปุ่มย้อนกลับเพื่อใช้การเรียงลำดับบนบรรทัดที่เลือกดังแสดงใน GIF ต่อไปนี้

เรียงลำดับเส้นช่วง

ช่วงบรรทัดสามารถผ่านได้ก่อน เรียงลำดับ คำสั่งให้เรียงลำดับบรรทัด ที่ : กำหนดหมายเลข สามารถใช้คำสั่งเพื่อเปิดใช้งานหมายเลขบรรทัดใน Vim ได้ ทำให้ระบุหมายเลขบรรทัดได้ง่ายขึ้น

ตัวอย่างเช่น หากต้องการเรียงลำดับบรรทัดจากบรรทัดหมายเลข 1 ถึงบรรทัดหมายเลข 4 ให้ใช้ :1,4 เรียงลำดับ สั่งการ.

: : 1 , 4 เรียงลำดับ

ดังที่เห็นในผลลัพธ์ข้างต้นว่ามีการเรียงลำดับเฉพาะบรรทัดที่ระบุเท่านั้น

เรียงลำดับย้อนกลับ

ตามที่กล่าวไว้ข้างต้น พฤติกรรมเริ่มต้นของ เรียงลำดับ คำสั่งคือการเรียงลำดับบรรทัดตามลำดับพจนานุกรม หากต้องการเรียงลำดับบรรทัดในลักษณะที่ไม่ใช่คำศัพท์ ให้เพิ่มเครื่องหมายอัศเจรีย์ ( ! ) หลังจาก เรียงลำดับ สั่งการ.

:เรียงลำดับ !

เรียงตามสถานที่

คอมพิวเตอร์มีการใช้งานทั่วโลก โดยมีภาษาที่แตกต่างกันและมีชุดอักขระและกฎที่แตกต่างกัน เมื่อพูดถึงการเรียงลำดับเรื่องตามสถานที่ ตัวอย่างเช่น หากคุณอาศัยอยู่ในญี่ปุ่นและต้องการจัดเรียงบรรทัดตามสถานที่นั้น คุณจะต้องระบุ ที่ เรียงลำดับ คำสั่งยังจัดให้มีการตั้งค่าตัวเลือกสถานที่ด้วย ธง.

หากต้องการตรวจสอบสถานที่การจัดเรียงปัจจุบัน ให้ใช้ :ภาษา สั่งการ.

:ภาษา

หากต้องการเรียงลำดับตามการใช้สถานที่ปัจจุบัน:

: โชค ล

บันทึก: ตัวเลือกนี้อาจทำงานไม่ถูกต้องบนระบบที่ใช้ macOS

เรียงตามหมายเลข

หากต้องการเรียงลำดับบรรทัดตามเลขทศนิยมตัวแรกในบรรทัด ให้ใช้ n ติดธงด้วย เรียงลำดับ สั่งการ. การเรียงลำดับจะดำเนินการตามลำดับจากน้อยไปมากตามค่าเริ่มต้น

:เรียงลำดับn

หากต้องการเรียงลำดับจากมากไปน้อย ให้ใช้ ! สัญลักษณ์หลังคำสั่ง

:เรียงลำดับ ! n

ความแตกต่างระหว่าง เรียงลำดับ และ เรียงลำดับ คือคำสั่ง sort เรียงลำดับบรรทัดตามคำศัพท์ โดยไม่สนใจตัวเลขในบรรทัดเหล่านั้น หากคุณต้องการเรียงลำดับตามตัวเลข ให้ผนวก n ตั้งค่าสถานะด้วยคำสั่ง sort

ตัวอย่างเช่น บรรทัดในไฟล์ต่อไปนี้มีตัวอักษรและตัวเลขด้วย เมื่อเราเรียงลำดับมันโดยใช้ เรียงลำดับ คำสั่งเท่านั้น บรรทัดเหล่านี้จะเรียงลำดับตามตัวอักษร ในทางกลับกัน การประยุกต์ใช้ เรียงลำดับ คำสั่งเรียงลำดับบรรทัดตามตัวเลขดังภาพต่อไปนี้

ตัวเลือกอื่นๆ สำหรับการเรียงลำดับตัวเลขมีระบุไว้ในตารางต่อไปนี้

การเรียงลำดับเลขทศนิยม
การเรียงลำดับเลขฐานสอง
โอ การเรียงลำดับเลขฐานแปด
ชม. การเรียงลำดับเลขฐานสิบหก

เรียงตามมาร์ค.

ใน Vim เครื่องหมายจะถูกใช้เพื่อกำหนดตำแหน่งเฉพาะในไฟล์เพื่อให้ง่ายต่อการนำทางไฟล์ที่มีหลายร้อยบรรทัด เครื่องหมายสามารถใช้เพื่อดำเนินการเรียงลำดับโดยใช้ เรียงลำดับ สั่งการ.

สมมติว่าคุณตั้งไว้สองเครื่องหมาย และ .

ดังนั้นเพื่อเรียงลำดับบรรทัดทั้งหมดจากเครื่องหมาย ทำเครื่องหมาย ให้ใช้คำสั่งต่อไปนี้

: : 'ก' เรียงลำดับ

คำพูดเดียว ( ' ) ใช้เพื่อเข้าถึงเครื่องหมาย

จัดเรียงตามนิพจน์ทั่วไป (RegEx)

นิพจน์ทั่วไป (RegEx) เป็นหนึ่งในวิธีทั่วไปในการจัดเรียงบรรทัดโดยการกำหนดรูปแบบด้วย เรียงลำดับ สั่งการ.

ตัวอย่างเช่น เมื่อต้องการเรียงลำดับบรรทัดตามคอลัมน์ที่มีตัวอักษรและตัวเลข ให้ใช้ /[a-z]*[0-9]+/ ลวดลายด้วย เรียงลำดับ สั่งการ. ที่ ธงหลังจาก เรียงลำดับ คำสั่ง ใช้เพื่อสั่งให้คำสั่งเรียงลำดับตามรูปแบบที่กล่าวมา

:เรียงลำดับร / [ ก-ซ ] * [ 0 - - 9 ] + /

ดังที่คุณเห็นในภาพด้านบน คอลัมน์สุดท้ายจะจัดเรียงตามตัวอักษร หากต้องการเรียงลำดับคอลัมน์ตามตัวเลข เพียงแทรก n ธง.

บันทึก: ฉันข้ามบรรทัดแรกโดยกำหนดช่วงจากบรรทัด 2,5

ที่ การตั้งค่าสถานะช่วยให้คุณสามารถจัดเรียงไฟล์ตามรูปแบบที่กำหนด ปราศจาก flag คำสั่ง sort จะเรียงลำดับบรรทัดทั้งหมดที่ไม่ตรงกับรูปแบบ

ลบบรรทัดที่ซ้ำกัน

วิธีที่เร็วที่สุดในการลบบรรทัดที่ซ้ำกันในไฟล์คือการใช้ เรียงลำดับ สั่งการด้วย ใน ธงซึ่งแสดงถึงความเป็นเอกลักษณ์

:วาไรตี้ครับ

โปรดทราบว่าการใช้วิธีนี้เพื่อลบบรรทัดที่ซ้ำกันจะเป็นการเรียงลำดับบรรทัดซึ่งอาจไม่พึงประสงค์ในหลาย ๆ สถานการณ์ ใช้วิธีการอื่น เช่น regex เพื่อลบบรรทัดที่ซ้ำกันในไฟล์โดยไม่จำเป็นต้องเรียงลำดับ

เรียงลำดับบรรทัดตามคอลัมน์

มีสองวิธีในการเรียงลำดับบรรทัดใน Vim ตามคอลัมน์ วิธีแรกใช้คำสั่ง sort Linux ภายนอก ในขณะที่วิธีที่สองใช้คำสั่ง sort ในตัว

คำสั่งภายนอกนั้นใช้งานง่ายเมื่อเปรียบเทียบกับคำสั่งการเรียงลำดับเริ่มต้น โปรดทราบว่าคำสั่งภายนอกไม่ใช่คำสั่งเริ่มต้นของ Vim หมายถึงคำสั่งใดๆ ที่ระบบปฏิบัติการรองรับ

มาทำความเข้าใจว่ามันทำงานอย่างไรใน Vim

หากต้องการใช้คำสั่งภายนอกใด ๆ ใน Vim ! สัญลักษณ์ถูกใช้ก่อนคำสั่งนั้น สมมติว่าเรามีไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค (CSV) และต้องการจัดเรียงไฟล์ตามคอลัมน์ที่สาม คำสั่งจะเป็น

: : %! เรียงลำดับ -ที ',' -k3

ที่ % ระบุบัฟเฟอร์ทั้งหมดเป็นตัวเลือก ที่ -ที แฟล็กใช้เพื่อกำหนดตัวคั่นฟิลด์ ซึ่งอาจเป็นเครื่องหมายจุลภาค ทวิภาค หรือแม้แต่ช่องว่าง ที่ -เค ธงเป็นกุญแจสำคัญที่ระบุตำแหน่งในบรรทัดและ k2 หมายถึงฟิลด์ที่สองหลังจากตัวคั่นที่ระบุ

ในตัวอย่าง ฉันได้กล่าวถึงช่วงแทน % เพื่อข้ามบรรทัดแรก

: : 2 , 5 ! เรียงลำดับ -ที ',' -k3

ภายนอก เรียงลำดับ คำสั่งยังมีประโยชน์ในรูปแบบอื่นๆ มากมายเช่นกัน เนื่องจากมีตัวเลือกการเรียงลำดับที่หลากหลาย เช่น การสับ การเรียงลำดับแบบสุ่ม และการผสาน หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง sort ของ Linux ให้ใช้ไฟล์ ผู้ชายช่วย สั่งการ.

ในทางกลับกัน หากต้องการใช้ Vim ในตัว เรียงลำดับ คำสั่ง รูปแบบนิพจน์ทั่วไปจะถูกนำมาใช้กับคำสั่ง sort

:เรียงลำดับ / \วี^ ( . { - - } , ) { 2 } /

ในคำสั่งข้างต้น:

  • \ใน หมายถึงแท็บแนวตั้ง
  • ^ บ่งบอกถึงจุดเริ่มต้นของบรรทัด
  • (.{-},) คือกลุ่มที่จะอยู่ในซึ่ง .{-} เป็นเวอร์ชั่นที่ไม่โลภของ .* และ , เป็นสนามแยก
  • {2} เป็นตัวแทนของ 2 คอลัมน์แรกที่จะข้าม

จะเห็นได้ว่า ไม่ได้ใช้แฟล็กกับรูปแบบ ซึ่งหมายความว่ารูปแบบจะข้ามคอลัมน์ที่ตรงกันและจัดเรียงคอลัมน์ตามรูปแบบ ในกรณีนี้ ไฟล์จะถูกจัดเรียงตามคอลัมน์ที่สาม อีกครั้งในตัวอย่างต่อไปนี้ เพื่อข้ามบรรทัดแรก ฉันใช้ช่วง 2,5

ความแตกต่างพื้นฐานระหว่าง .* และ .{-} นั่นคือ .{-} จะประมวลผลอัลกอริธึมการจับคู่ที่สั้นที่สุดก่อนในขณะที่ .* จะเข้าคู่กันมากที่สุด ตัวอย่างเช่น ในสตริง wxyz the x.*y จะจับคู่สตริงทั้งหมดในขณะที่ x.{-}ป จะจับคู่ xy เท่านั้น

เรียงลำดับบรรทัดไม่คำนึงถึงขนาดตัวพิมพ์

หากคุณเรียงลำดับบรรทัดที่ขึ้นต้นด้วยตัวอักษรบนและล่าง คำสั่ง sort จะเรียงลำดับบรรทัดด้วยตัวอักษรตัวพิมพ์ใหญ่ก่อน หากจะเพิกเฉยต่อความละเอียดอ่อนของตัวพิมพ์ ให้ใช้ ฉัน ธง.

ดังที่คุณเห็นในภาพต่อไปนี้ บรรทัดที่ไม่ได้เรียงลำดับและเรียงลำดับที่มีทั้ง :เรียงลำดับ และ :เรียงลำดับฉัน คำสั่ง

บทสรุป

การเรียงลำดับเป็นกลุ่มสามารถทำได้อย่างง่ายดายโดยใช้ Vim ในตัว เรียงลำดับ สั่งการ. ตามค่าเริ่มต้น บรรทัดจะถูกจัดเรียงตามตัวอักษร อย่างไรก็ตาม หากคุณต้องการเรียงลำดับแบบย้อนกลับ ให้ใช้เครื่องหมาย ! ลงชื่อหลังคำสั่ง โดยทั่วไปคำสั่ง sort จะเรียงลำดับบัฟเฟอร์ทั้งหมด นอกจากนี้ยังสามารถกำหนดช่วงด้วยตัวคั่นด้วยเครื่องหมายจุลภาค ที่ n ธงใช้สำหรับการเรียงลำดับตัวเลข ในขณะที่เพื่อลบบรรทัดที่ซ้ำกัน ใน มีการใช้ธง นอกจากนี้เพื่อเพิ่มประสิทธิภาพกระบวนการคัดแยกภายนอก เรียงลำดับ คำสั่งยังสามารถใช้ใน Vim ได้

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเรียงลำดับใน Vim ให้เรียกใช้ไฟล์ :ช่วยเรียงลำดับ. สั่งการ.