Vim นั้นเป็น Text editor ที่มีความสามารถเยอะมาก แต่ก็ต้องมีการเรียนรู้ที่เยอะด้วยเช่นกัน ทำให้หลายๆคนไม่กล้าที่จะทดลองใช้ แต่ถ้าหากเป็น Developer แล้วล่ะก็มีโอกาสที่จะได้ใช้ Vim เยอะมาก เพราะว่าใน Server นั้นโดยปกติจะติดตั้ง Vi หรือ Vim มาด้วยเสมอ ในบทความนี้จะอธิบายเฉพาะสิ่งที่เป็นพื้นฐานมากๆ และวิธีการใช้งานแบบพื้นฐานมากๆอีกเช่นกัน ซึ่งน่าจะเพียงพอต่อการใช้งานทั่วๆไป
Disclaimer : แนะนำให้ทุกคนศึกษา Vim แบบจริงจังดีกว่า 😅
พื้นฐานของ Vim
ใน Vim นั้นเมื่อตอนที่เราเปิดขึ้นมานั้นจะไม่เหมือนกับ Text editor ตัวอื่นที่เราจะสามารถพิมพ์ข้อความลงไปได้เลย เพราะว่าใน Vim ใช้การกดคีย์ปกติเป็นคำสั่ง ดังนั้นเมื่อเราพึ่งเปิด Vim ขึ้นมา มันจะอยู่ในโหมดที่เรียกว่า NORMAL MODE ซึ่งจะเป็นโหมดที่รอรับคำสั่งต่างๆจากเรา ส่วนสำหรับโหมดที่เราใช้ในการพิมพ์ข้อความต่างๆลงไปจะเรียกว่า INSERT MODE การเปลี่ยนโหมดระหว่างสองโหมดนี้ทำได้ง่ายๆคือ ที่ NORMAL MODE กด I ก็จะกลายเป็น INSERT MODE ถ้าหากต้องการออกจาก INSERT MODE ก็ให้กด ESC
- NORMAL MODE
โดยปกติแล้วเราจะใช้คำสั่งต่างๆที่โหมดนี้ ตัวอย่างคำสั่งก็เช่น ถ้าเรากด I ก็จะเป็นการใช้คำสั่งให้เปลี่ยนไป INSERT MODE หรือจะคำสั่งบันทึกไฟล์ ออกจากโปรแกรม เราก็จะต้องกด ESC ให้ Vim มาอยู่ที่โหมดนี้ก่อนถึงจะใช้คำสั่งเหล่านั้นได้ - INSERT MODE
สำหรับโหมดนี้ ทุกๆคีย์ที่เรากดลงไปก็จะกลายเป็นตัวอักษรเหมือนกับการใช้งาน Text editor ทั่วๆไป
วิธีการดูว่าตอนนี้ Vim อยู่ในโหมดไหนให้ดูที่ด้านซ้ายล่างของหน้าจอ
การใช้เบื่องต้น
สั่งให้ Vim เปิดไฟล์ hello.txt ขึ้นมา
$ vim hello.txt
จะได้หน้าตาแบบนี้
สังเกตุที่โหมด ตอนนี้จะเป็น NORMAL โหมด
แก้ไข
ถ้าเราต้องการแก้ข้อความเป็น Hello world ก็จะต้องเปลี่ยนโหมดจาก NORMAL MODE เป็น INSERT MODE ซะก่อน โดยการกด I แล้วจากนั้นก็แก้ข้อความได้เลย
ภาพเมื่อแก้เสร็จแล้ว
บันทึก
ถ้าต้องการจะบันทึกสิ่งที่เราแก้ไปในไฟล์ จะต้องกลับไปยัง NORMAL MODE ซะก่อนโดยการกด ESC แล้วจากนั้นให้กด :w
หน้าจอจะได้แบบนี้
ก็กด ENTER ได้เลย
ออกจาก Vim
ถ้าจะออกก็ให้ใช้คำสั่ง :q
ออกแบบไม่บันทึก
ให้ใช้คำสั่ง :q!
บันทึกแล้วออก
ให้ใช้คำสั่ง :wq
สำหรับคนที่ต้องการจะทดใช้ Vim อย่างจริงจัง คำสั่งที่ได้เขียนไว้นั้นถือว่าไม่เพียงพออย่างมาก ขอแนะนำให้อ่านเพิ่มเติมจากลิงค์ด้านล่าง
แหล่งไว้ศึกษาเพิ่มเติม
จริงๆแล้ว Vim มี resources ให้อ่านเยอะมาก แต่ในที่นี้จะแนะนำแค่บางเว็บที่คิดว่าน่าสนใจ