ค้นหาเว็บไซต์

8 เคล็ดลับและเทคนิคการแก้ไข 'Vi/Vim' ที่น่าสนใจสำหรับผู้ดูแลระบบ Linux ทุกคน - ตอนที่ 2


ในบทความก่อนหน้าของซีรี่ส์นี้ เราได้ทบทวนเคล็ดลับและคำแนะนำ 7 ข้อเพื่อเพิ่มชุดทักษะ vi/m ของคุณ นอกเหนือจากเหตุผลที่ให้ไว้ก่อนหน้านี้ การเรียนรู้วิธีใช้โปรแกรมแก้ไขข้อความใน Linux อย่างมีประสิทธิภาพในความสามารถที่จำเป็นสำหรับผู้ดูแลระบบหรือวิศวกร และเป็นความสามารถที่จำเป็นในการผ่านโปรแกรมการรับรอง Linux ที่สำคัญ ๆ (เช่น LFCS, LFCE, RHCSA และ RHCE) .

ที่กล่าวว่ามาเริ่มกันเลย

เคล็ดลับ #8: สร้างหน้าต่างแนวนอนหรือแนวตั้ง

เคล็ดลับนี้แชร์โดย Yoander หนึ่งในผู้อ่านของเราในส่วนที่ 1 คุณสามารถเปิด vi/m โดยมีการแบ่งแนวนอนหรือแนวตั้งหลายส่วนเพื่อแก้ไขไฟล์แยกกันภายในหน้าต่างหลักเดียวกัน:

เปิด vi/m ด้วยหน้าต่างแนวนอนสองหน้าต่าง โดยมี test1 ที่ด้านบนและ test2 ที่ด้านล่าง

vim -o test1 test2 

เปิด vi/m ด้วยหน้าต่างแนวตั้งสองหน้าต่าง โดยมี test3 ทางด้านซ้ายและ test4 ทางด้านขวา:

vim -O test3 test4 

คุณสามารถสลับเคอร์เซอร์จากหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่งได้โดยใช้รูทีนการเคลื่อนไหว vi/m ตามปกติ (h: ขวา, l: ซ้าย, j: ด้านล่าง k: บน):

  1. Ctrl+wk – ด้านบน
  2. Ctrl+w j – ด้านล่าง
  3. Ctrl+w l – ซ้าย
  4. Ctrl+w h – ขวา

เคล็ดลับ #9: เปลี่ยนตัวอักษร คำ หรือทั้งบรรทัดเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก

โปรดทราบว่าเคล็ดลับนี้ใช้ได้เฉพาะในกลุ่มเท่านั้น ในตัวอย่างถัดไป X คือตัวเลขจำนวนเต็ม

  1. หากต้องการเปลี่ยนชุดตัวอักษรเป็นตัวพิมพ์ใหญ่ ให้วางเคอร์เซอร์บนตัวอักษรตัวแรก จากนั้นพิมพ์ gUX ในโหมด ex และสุดท้ายให้กดลูกศรขวาบนแป้นพิมพ์
  2. หากต้องการเปลี่ยนจำนวนคำ X ให้วางเคอร์เซอร์ที่จุดเริ่มต้นของคำแล้วพิมพ์ gUXw ในโหมด ex
  3. หากต้องการเปลี่ยนทั้งบรรทัดเป็นตัวพิมพ์ใหญ่ ให้วางเคอร์เซอร์ที่ใดก็ได้บนบรรทัดแล้วพิมพ์ gUU ในโหมด ex

ตัวอย่างเช่น หากต้องการแปลงบรรทัด ตัวพิมพ์เล็ก ทั้งหมดเป็น ตัวพิมพ์ใหญ่ คุณควรวางเคอร์เซอร์ไว้ที่ใดก็ได้บนบรรทัดแล้วพิมพ์ gUU:

ตัวอย่างเช่น หากต้องการแปลงคำ ตัวพิมพ์ใหญ่ 2 ตัว เป็น ตัวพิมพ์เล็ก คุณควรวางเคอร์เซอร์ไว้ที่จุดเริ่มต้นของคำแรกและพิมพ์ gu2w:

เคล็ดลับ #10: ลบอักขระ คำ หรือจุดเริ่มต้นของบรรทัดในโหมด INSERT

แม้ว่าคุณจะสามารถลบอักขระหรือหลายคำพร้อมกันได้ในโหมด ex (เช่น dw เพื่อลบคำ) คุณยังสามารถลบได้ในโหมดแทรกดังนี้:

  1. Ctrl + h: ลบอักขระก่อนหน้าไปยังตำแหน่งที่เคอร์เซอร์อยู่ในปัจจุบัน
  2. Ctrl + w: ลบคำก่อนหน้าไปยังตำแหน่งที่เคอร์เซอร์อยู่ในปัจจุบัน เพื่อให้ทำงานได้อย่างถูกต้อง ต้องวางเคอร์เซอร์ไว้ในช่องว่างหลังคำที่คุณต้องการลบ
  3. Ctrl + u: ลบบรรทัดปัจจุบันที่เริ่มต้นที่อักขระทางด้านซ้ายของตำแหน่งที่เคอร์เซอร์อยู่

เคล็ดลับ #11: ย้ายหรือคัดลอกบรรทัดที่มีอยู่ไปยังบรรทัดอื่นของเอกสาร

แม้ว่าคุณสามารถใช้คำสั่ง dd, yy และ p ที่รู้จักกันดีในโหมด ex เพื่อลบ ดึง (คัดลอก) และวางบรรทัดตามลำดับ ซึ่งจะใช้งานได้เฉพาะเมื่อวางเคอร์เซอร์ในตำแหน่งที่คุณต้องการดำเนินการเหล่านั้นเท่านั้น . ข่าวดีก็คือ ด้วยคำสั่ง คัดลอก และ ย้าย คุณสามารถทำเช่นเดียวกันได้ ไม่ว่าเคอร์เซอร์จะวางอยู่ที่ตำแหน่งใดในปัจจุบันก็ตาม

สำหรับตัวอย่างถัดไป เราจะใช้บทกวีสั้นชื่อ “ตลอดกาล” โดย Terri Nicole Tharrington ในการเริ่มต้น เราจะให้เป็นกลุ่มแสดงหมายเลขบรรทัด (:set nu ในโหมด Command – ให้ถือว่านี่เป็นเคล็ดลับเพิ่มเติม) เราจะใช้ :3copy5 (ในโหมดคำสั่งด้วย) เพื่อคัดลอกบรรทัด 3 ด้านล่างบรรทัด 5:

ตอนนี้ เลิกทำการเปลี่ยนแปลงล่าสุด (Esc + u – เคล็ดลับพิเศษอีกข้อ!) และพิมพ์ :1move7 เพื่อแทนที่บรรทัด 7 ด้วยบรรทัด 1 โปรดทราบว่าบรรทัด 2 ถึง 7 มีการเปลี่ยนแปลงอย่างไร up และบรรทัดเดิม 1 ตอนนี้ตรงบริเวณบรรทัด 7:

เคล็ดลับ #12: นับรายการที่ตรงกันซึ่งเป็นผลมาจากการค้นหาตามรูปแบบ และย้ายจากเหตุการณ์หนึ่งไปยังอีกเหตุการณ์หนึ่ง

เคล็ดลับนี้อิงตามคำสั่งทดแทน (เคล็ดลับ #7 ใน ส่วนที่ 1 ของชุดนี้) โดยมีข้อยกเว้นว่าจะไม่ลบสิ่งใดออกเนื่องจากพฤติกรรมการทดแทนถูกแทนที่โดย ตัวเลือก n ส่งผลให้เกิดการนับครั้งของรูปแบบที่ระบุ:

ตรวจสอบให้แน่ใจว่าคุณไม่ละเว้นเครื่องหมายทับ!

:%s/pattern//gn 

ตัวอย่างเช่น,

:%s/libero//gn

หากต้องการย้ายจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่งในโหมด ex ให้กด n (N ตัวพิมพ์เล็ก) หากต้องการย้ายไปยังอินสแตนซ์ก่อนหน้า ให้กด N

เคล็ดลับ #13: เปิด vi/m โดยตรงในบรรทัดที่ระบุ

ตามค่าดีฟอลต์ เมื่อคุณเรียกทำงาน vi/m เคอร์เซอร์จะถูกวางไว้ในบรรทัดสุดท้ายที่ได้รับการแก้ไข หากคุณต้องการเปิดโปรแกรมและวางเคอร์เซอร์บนบรรทัดที่ระบุโดยตรง คุณสามารถใช้เคล็ดลับต่อไปนี้:

vim filename +line_number

ตัวอย่างเช่น เปิด forever.txt และวางเคอร์เซอร์ในบรรทัด 6:

vim forever.txt +6

เรามาปรับแต่งตัวอย่างนี้กันสักหน่อย สมมติว่าเราต้องการเปิดไฟล์บนบรรทัดที่มีรูปแบบครั้งที่ 3 ปรากฏขึ้น:

vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)

มาดูกันว่าคำสั่งข้างต้นทำอะไรได้บ้าง:

  1. grep -in pattern filename – แสดงบรรทัดทั้งหมดจากชื่อไฟล์ที่มีรูปแบบเกิดขึ้น โดยมีหมายเลขบรรทัดอยู่ที่จุดเริ่มต้นของแต่ละบรรทัดเอาต์พุต
  2. sed -n 3p – แสดงบรรทัดที่ 3 จากเอาต์พุตของไปป์ไลน์ก่อนหน้า

ในที่สุด,

  1. cut -d: -f1 ส่งคืนฟิลด์แรกของไปป์ไลน์ก่อนหน้าโดยมีเครื่องหมายโคลอน (:) เป็นตัวคั่นฟิลด์
grep -in forever forever.txt
grep -in forever forever.txt | sed -n 3p
grep -in forever forever.txt | sed -n 3p | cut -d: -f1

จากนั้นผลลัพธ์ของคำสั่งก่อนหน้าจะถูกส่งไปที่ vi/m เพื่อเปิดโปรแกรมที่บรรทัดที่ระบุ

เคล็ดลับ #14: การปรับแต่งสภาพแวดล้อม vi/m ของคุณ

หากคุณใช้ vi/m เพื่อแก้ไขไฟล์การกำหนดค่าหรือเขียนโค้ด คุณจะต้องสามารถแสดงหมายเลขบรรทัดเมื่อคุณเปิดโปรแกรมครั้งแรก และเพื่อตั้งค่าการเยื้องอัตโนมัติ ดังนั้นเมื่อคุณกด Enter ปุ่มเคอร์เซอร์จะถูกวางในตำแหน่งที่เหมาะสมโดยอัตโนมัติ นอกจากนี้ คุณอาจต้องการปรับแต่งจำนวนช่องว่างสีขาวที่แท็บครอบครอง

แม้ว่าคุณจะสามารถทำเช่นนั้นได้ทุกครั้งที่คุณเปิด vi/m แต่การตั้งค่าตัวเลือกเหล่านี้ใน ~/.vimrc นั้นง่ายกว่าเพื่อให้ตัวเลือกเหล่านั้นถูกนำไปใช้โดยอัตโนมัติ:

set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab

สำหรับตัวเลือกเพิ่มเติมในการปรับแต่งสภาพแวดล้อม vi/m ของคุณ โปรดดูเอกสารประกอบ vim ออนไลน์

เคล็ดลับ #15: รับความช่วยเหลือ/ตัวเลือกทั่วไปของ Vim กับ vimtutor

หากเมื่อใดก็ตามที่คุณต้องการขัดเกลาทักษะทั่วไปของ vi/m คุณสามารถเปิด vimtutor จากบรรทัดคำสั่งซึ่งจะแสดงวิธีใช้ vi/m เต็มรูปแบบที่คุณสามารถอ้างอิงได้บ่อยเท่าที่คุณต้องการ โดยไม่จำเป็นต้องเปิดเว็บเบราว์เซอร์เพื่อค้นหาวิธีทำงานบางอย่างให้สำเร็จใน vi/m

vimtutor

โปรดทราบว่าคุณสามารถนำทางหรือค้นหาเนื้อหาของ vimtutor ได้เหมือนกับว่าคุณกำลังนำทางไฟล์ปกติใน vi/m

สรุป

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