Vim: Multi-Buffers
Working with Multi-Buffers
NVIM v0.2.2
Get Sitdhibong’s stories in your inbox
Join Medium for free to get updates from this writer.
การทำงานโดยต้องเปิดหลายๆ ไฟล์เพื่อทำงานควบคู่กันไปนั้นไม่ใช่เรื่องแปลกอะไร editor หลายโปรแกรมต่างก็มีวิธีการช่วยให้โปรแกรมเมอร์เข้าถึงไฟล์ที่เปิดไว้เหล่านั้น ใน Vim เองก็มีเหมือนกัน
เปิดไฟล์พร้อมกันหลายแท็บ
จากโฟลเดอร์ด้านบนมี 3 ไฟล์ คือ index.html, style.css และ script.js ถ้าลองเปิดไฟล์ index.html ก่อนด้วยการพิมพ์ $ vi index.html ก่อน จากนั้นค่อยพิพม์ :tabe script.js เพื่อเปิดไฟล์ script.js ในแท็บใหม่
รวมคำสั่งสำหรับแท็บที่ใช้บ่อยๆ คือ
:tabnewเปิดแท็บใหม่:tabsแสดงรายการ แท็บที่เปิดอยู่ทั้งหมด:tabm 0ย้ายแท็บที่ทำงานอยู่ตอนนี้ไปอยู่ที่แท็บแรกสุด:tabmย้ายแท็บที่ทำงานอยู่ตอนนี้ไปแท็บสุดท้ายgtเปลี่ยนไปทำงานที่แท็บถัดไป (ทางด้านซ้าย)gTเปลี่ยนไปทำงานที่แท็บก่อนหน้า (ทางด้านซ้าย){i}gtเปลี่ยนแท็บไปทางด้านซ้ายตามจำนวนiที่ต้องการ
เปิดไฟล์พร้อมกันด้วยการแบ่งหน้าจอ
ซึ่งแต่นอนว่าเราแบ่งได้ 2 แบบ คือ แนวตั้งและแนวนอน โดยใช้ :vsp และ :sp ตามลำดับ
ซึ่งการแบ่งนั้นจะนับจาก buffer ปัจจุบันที่กำลังทำงานอยู่ หากแบ่งตามแนวนอน ไฟล์ใหม่จะถูกเปิดขึ้นทางด้านบน ส่วนถ้าเป็นการแบ่งตามแนวตั้งไฟล์ ไฟล์ใหม่จะเปิดขึ้นมาทางด้านซ้ายมือ
เมื่ออยากจะสลับไฟล์ที่ทำงานให้กด Ctrl-w w (w 2 ตัว) กดแล้ว Cursor จะสลับ panel ทวนเข็มนาฬิกาไปเรื่อยๆ แต่ถ้าอยากระบุทิศทางให้กด h, j, k, หรือ l หลังจากกด Ctrl-w ไปแล้ว แต่ถ้าหากกด Ctrl-w T จะเปลี่ยนจากการแบ่งไฟล์แบบ Panel นี้เป็นแท็บ แต่การเปิดไฟล์แบบแบ่งหน้าจอนี้จะมีข้อเสียคือ ถ้าเกิดการเปลี่ยนขนาดของหน้าจอ (ผมใช้ iTerm) บาง panel จะมีขนาดต่างออกไป เล็กเกินไปบ้าง ไม่ก็ใหญ่เกินไปบ้าง ตามภาพด้านล่าง
ซึ่ง Panel ที่ขนาดเปลี่ยนไปนี้ก็ปรับได้ด้วย :resize {+/-}[number|percentage] ที่เป็นการปรับขนาดหน้าจอตามแนวตั้ง (ตามแกน Y) และ :vertical resize {+/-}[number|percentage] จะเป็นการปรับขนาดตามแนวนอน (ตามแกน X)
รวมคำสั่ง
:resize -10ปรับขนาด Panel ตามแกน Y โดยลดขนาดลงมา 10 หน่วย:vertical resize +10%ปรับขนาดตามแกน X โดยเพิ่มขนาดเข้าไป 10%Ctrl-w =กระจายขนาดของทุก Panel ให้เท่ากันCtrl-w <ลดขนาดตามแนวแกน X เข้ามา 1 หน่วยCtrl-w >เพิ่มขนาดตามแนวแกน X ออกไป 1 หน่วยCtrl-w +ลดขนาดตามแนวแกน Y ออกไป 1 หน่วยCtrl-w -เพิ่มขนาดตามแนวแกน Y เข้ามา 1 หน่วยCtrl-w _ปัดให้ Panel อื่นๆ ลดขนาดจนชิดขอบด้านล่างหรือด้านบนCtrl-w |ปัดให้ Panel อื่นๆ ลดขนาดจนชิดขอบด้านซ้ายหรือด้านขวา
และสุดท้าย ถ้ามีการแก้ไขไฟล์อยู่พร้อมกันหลายไฟล์ (สังเกตเครื่องหมาย [+] ด้านหลังชื่อไฟล์) ไม่จำเป็นต้องไล่บันทึกทีละ Panel ให้กดที่ :wa ที่ Panel ไหนก็ได้ จะสั่งให้ Vim บันทึกทุกๆ ไฟล์ที่มีการแก้ไขอยู่ใน Buffer ทั้งหมด

![Sitdh[ibong]](https://miro.medium.com/v2/resize:fill:128:128/1*v2UZQeS0ufkp9YQrVFF_uw.png)





