หากต้องการเรียงลำดับบรรทัดใน 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 ให้เรียกใช้ไฟล์ :ช่วยเรียงลำดับ. สั่งการ.