ทำความรู้จักและวิธีใช้ Vim สุดยอด Text Editor ระดับตำนาน

   By: Chaiwat Chaobaankoh

   อัปเดตล่าสุด Nov. 11, 2023

ทำความรู้จักและวิธีใช้ Vim สุดยอด Text Editor ระดับตำนาน


Vim คืออะไร?

Vim ย่อมาจาก "Vi IMproved" เป็นโปรแกรมแก้ไขข้อความ (Text Editor) ที่มีประสิทธิภาพและสุดแสนจะคลาสสิค ซึ่ง Vim เป็นเครื่องมือในตำนานที่ได้รับความนิยมมากในเหล่าโปรแกรมเมอร์ นักพัฒนาซอฟต์แวร์ ผู้ดูแลระบบ ฯลฯ เพราะว่ากันว่ามันคือ editor ที่สร้าง productivity ได้เป็นอย่างมากเลยทีเดียว 

แต่เอาจริง ๆ แล้ว Vim ไม่ได้ใช้งานง่ายเลย มือใหม่บางคนหรือใครหลายคน ที่เริ่มต้นใช้ล้วนงงเป็นไก่ตาแตกในการใช้งาน !!

บทความนี้ผมจะพาเพื่อน ๆ มาทำความเข้าใจภาพรวม ความเป็นมา คำสั่งเบื้องต้น เกี่ยวกับเจ้า editor สายโหดตัวนี้กันครับ


ประวัติความเป็นมาของ Vim

Vim ถูกคิดค้นและถูกสร้างขึ้นโดย Bram Moolenaar นักคอมพิวเตอร์ชาวดัตช์ ถูกปล่อยออกมาครั้งแรกในเดือนพฤศจิกายนปี 1991 

Bram Moolenaar ได้แสดงความสนใจในคอมพิวเตอร์ตั้งแต่วัยเยาว์และเริ่มเขียนโปรแกรมบนเครื่องคอมพิวเตอร์ Commodore VIC-20 ในช่วงต้นปี พ.ศ. 2520

หน้าตาของ Commodore VIC-20 (Photo Credit: WikiPedia)

ในช่วงครึ่งกลางของปี พ.ศ. 2520 ขณะทำงานในสถาบันการเงิน เขาได้รับรู้จักกับโปรแกรมแก้ไขข้อความ Vi ซึ่งเป็นโปรแกรมมาตรฐานในระบบ Unix ในยุคนั้น โดย Vi มีความซับซ้อนในการใช้งานและ Bram พบว่าใช้งานค่อนข้างยาก

เนื่องจากความที่ Vi ใช้งานค่อนข้างยาก นี่จึงเป็นอีกหนึ่ง pain point (จุดอ่อนหรือปัญหา) ที่ทำให้ Bram ได้นำมาเป็นพลังขับเคลื่อน และความต้องการที่จะปรับปรุงมันให้ดีขึ้นเป็นทุนเดิมอยู่แล้ว Bram ได้ตัดสินใจสร้างเวอร์ชันที่ดีกว่าของโปรแกรม ซึ่งขณะนั้นเขายังทำงานเป็นนักพัฒนา แต่ก็ได้เริ่มสร้าง Vim ในตอนนั้นเลยครับ

ซึ่งเวอร์ชันแรกของ Vim คือเวอร์ชัน 1.14 ได้ถูกเผยแพร่ในปี 1991 เป็นเวอร์ชันที่ปรับปรุงให้ Vi มีความสามารถเพิ่มมากขึ้น มีการใช้งานที่ดีขึ้น และอินเตอร์เฟสที่ใช้งานง่ายกว่าเดิม

Vim 1.14 เวอร์ชันแรกของ Vim


โดย Vim ได้รับการเผยแพร่เป็นซอฟต์แวร์ฟรีและโอเพนซอร์สภายใต้สัญญาอนุญาต Vim License ทำให้มีการเข้าถึง Vim ได้อย่างกว้างขวางสำหรับนักพัฒนาและผู้สนใจทั่วโลก ซึ่งช่วยให้ชุมชนสามารถเข้ามามีส่วนร่วมในการพัฒนาและสร้างปลั๊กอินและส่วนขยายเพื่อเพิ่มความสามารถของโปรแกรมต่อไป

หลังจากนั้นเป็นต้นมาจวบจนปัจจุบัน Vim ก็ได้รับความนิยมของนักพัฒนา โปรแกรมเมอร์ ฯลฯ เรื่อยมา ด้วยความสามารถ ความยืดหยุ่น และความหลากหลายในการใช้งาน ตลอดเวลาที่ผ่านมา Vim ได้มีการอัปเดตและปรับปรุงอย่างต่อเนื่อง กลายเป็นหนึ่งใน text editor ที่ได้รับความนิยมและนำมาใช้ในโลกของนักพัฒนาอย่างมาก

อย่างภาพด้านล่างเป็นผลสำรวจของ Stack Overflow Survey 2023 ซึ่ง Vim ก็ยังติดอยู่ในลิสต์อยู่เสมอ


Stack Overflow Developers Survey 2023 ในหมวดหมู่ Text Editors/IDEs ที่ได้รับความนิยม


คุณเหมาะกับ Vim หรือไม่ ?

ถ้าคุณมีสิ่งเหล่านี้

  • มีความอดทนและเปิดใจเรียนรู้สิ่งใหม่ ๆ (ไม่ยึดติดว่า Vim ยากเกินไปที่จะเรียนรู้ ทำความเข้าใจ)
  • มีความเข้าใจในการเขียนโค้ดหรือเขียนโปรแกรมมาสักพักใหญ่ ๆ แล้ว คือเข้าใจในการเขียนโค้ดเป็นอย่างดี (เพราะถ้าเป็นมือใหม่เพิ่งเริ่มต้นเขียนโค้ด อันนี้จะยังไม่แนะนำ เดี๋ยวจะงงกันไปใหญ่)
  • ต้องการเพิ่มความเร็วและเพิ่ม productivity ให้กับการเขียนโค้ด 
  • ฯลฯ

ถ้ามีครบตามลิสต์ด้านบนที่ว่ามา ก็แสดงว่าโอเครใช้ได้ พร้อมเรียน Vim ครับ


ประโยชน์ของ Vim

  • ประสิทธิภาพ: Vim เป็นเรื่องของประสิทธิภาพ อินเตอร์เฟซโหมดและคีย์ลัดบนแป้นพิมพ์ช่วยให้เราจัดการกับข้อความที่ซับซ้อนได้ด้วยการกดคีย์น้อยกว่า (กดคีย์บอร์ดน้อย แต่เข้าถึงได้ไวกว่า)
  • การปรับแต่ง: Vim สามารถปรับแต่งได้โดยในระดับสูง สามารถปรับแต่งการตั้งค่าและสร้างคีย์ลัดเองเพื่อให้ Vim เหมาะกับความต้องการของเราได้ครับ
  • ความเร็วเมื่อคุณเชี่ยวชาญ Vim คุณจะพบว่ามันเร็วกว่า Text Editors ตัวอื่น ๆ การนำทาง การแก้ไขและการเขียนโค้ด สิ่งเหล่านี้ที่ว่ามาทำได้อย่างรวดเร็ว
  • รองรับหลายแพลตฟอร์มVim รองรับหลายแพลตฟอร์ม เช่น Unix, Linux, macOS และ Windows ทำให้คุณสามารถเขียนโค้ดได้ทุกที่ที่คุณต้องการ
  • การผสานกับ Version Control SystemVim สามารถผนวกได้อย่างราบรื่นกับระบบควบคุมเวอร์ชัน (Version Control System) เช่น Git ทำให้เป็นอีกตัวเลือกที่ดีสำหรับการเขียนโค้ด


Vim Modes

Vim เป็นโปรแกรมแก้ไขข้อความแบบโหมด ซึ่งหมายความว่ามันทำงานในโหมดต่าง ๆ ที่มีวัตถุประสงค์แตกต่างกัน 3 โหมดหลัก ๆ ดังต่อไปนี้

1. Normal Mode

ในโหมดนี้ เราจะเลื่อนที่ผ่านข้อความและใช้คำสั่ง คุณสามารถย้าย pointer ทำการค้นหาข้อความและแก้ไขโค้ดของคุณได้อย่างมีประสิทธิภาพ

2. Insert Mode

โหมดนี้ใช้สำหรับพิมพ์และแก้ไขข้อความ คล้ายกับโปรแกรมแก้ไขข้อความอื่น ๆ สามารถเข้าสู่โหมด Insert โดยกด  หรือคีย์อื่น ๆ ที่เหมาะสม

3. Visual Mode

โหมด Visual ช่วยให้เราสามารถเลือกบล็อกของข้อความเพื่อคัดลอก ตัด หรือดำเนินการอื่น ๆ โดยสามารถเข้าสู่โหมด Visual โดยกด 

Key Stroke
Description
<shift-v>
Go to visual mode whole line
<ctrl-v>
Go to visual mode in current cursor position


วิธีเริ่มใช้งาน Vim สำหรับผู้เริ่มต้น

  • การติดตั้งก่อนอื่นต้องเช็คให้ชัวร์ว่า Vim ถูกติดตั้งในเครื่องของเราก่อน สำหรับระบบ Unix-based โดยทั่วไปมักมาพร้อมกับ Vim สำหรับ Windows หรือ macOS หรือเพื่อน ๆ สามารถดาวน์โหลดได้จาก official website ของ Vim ได้เลยครับ
  • เรียนรู้พื้นฐานเริ่มต้นด้วยพื้นฐาน เรียนรู้วิธีเปิด Vim, การนำทางข้อความ (text navigation) , การสลับระหว่างโหมดและการบันทึกและออก ความรู้พื้นฐานเหล่านี้จะช่วยให้เราเริ่มต้นได้อย่างถูกวิธีครับ
  • ฝึกฝนอย่างสม่ำเสมอการเรียนรู้ Vim อาจใช้เวลาเพื่อฝึกฝน ดังนั้นการฝึกฝนเป็นสิ่งสำคัญ เจียดเวลาบางส่วนในทุก ๆ วันในการใช้ Vim เพื่อแก้ไขข้อความและทำงานง่าย ๆ 
  • บทเรียนและคำแนะนำมีบทเรียนออนไลน์มากมาย ไม่ว่าจะเป็นบทความ (เช่นในบทความนี้ก็หวังว่าจะเป็นส่วนหนึ่งของแหล่งเรียนรู้เหล่านั้นครับ :) ) คลิปยูทูปต่าง ๆ มากมาย เพื่อช่วยให้เรารู้จักและเข้าใจ Vim มากขึ้น 
  • การปรับแต่งในขณะที่เพื่อน ๆ กำลังเริ่มรู้สึกสบายในการใช้งาน Vim แล้ว การปรับแต่งไฟล์ .vimrc เพื่อปรับ Vim ให้เหมาะกับกระบวนการทำงานของเราและเพิ่มปลั๊กอินและคีย์ลัดตามความต้องการได้เลย
  • ขอความช่วยเหลืออย่าอายที่จะขอความช่วยเหลือจาก Community ของ Vim เช่น กลุ่มของ Vim ใน Facebook หรือฟอรัมออนไลน์ต่างๆ เช่น Reddit หรือ Stackoverflow เป็นต้น เพราะว่ามีคนที่พร้อมจะช่วยเราแก้ปัญหาหรือแม้แต่ปัญหาที่คนอื่นเคยเจอมาแล้ว ก็จะมี solutions ต่าง ๆ อยู่ในนั้นครับ


คำสั่ง Vim ต่าง ๆ

ต่อมาก็จะเป็นคำสั่งต่าง ๆ ของ Vim เพิ่มเติมที่น่าสนใจกันครับ

คำสั่ง Save

Key Stroke
Description
:w
Save without quite
:wq
Save and quit
ZZ <Shift-zz>
Save and quit


คำสั่ง Search

Key Stroke
Description
/<search_word>
Search forward
?<search_word>
Search backward
:s/<search>/replace
Search and replace
:s/<search>/replace/g
Search and replace all in file
:s/<search>/replace/gc
Search and replace all in file with confirm


คำสั่ง Delete

Key Stroke
Description
dw
Delete word
db
Delete word backward
dd
Delete the line


การออกจาก Vim

และเชื่อว่าหลายคนคงได้ยินคำพูดเชิงมีมที่ว่า "ออกจาก Vim ไม่เป็น"  แม้แต่บน Stack Overflow ก็ยังมีคำถามในตำนานอย่าง  "How to exit Vim?" ที่ถามไว้ตั้งแต่ปี 2555 หรือกว่า 11 ปีที่แล้ว


คำถามในตำนานบน StackOverfow "How to Exit Vim?"


 เพื่อที่จะออกจาก Vim สามารถทำได้ตามขั้นตอนต่อไปนี้ครับ

  • ให้แน่ใจว่าเราอยู่ในโหมด Normal: กด 'Esc' เพื่อแน่ใจว่าเรากำลังอยู่ในโหมด Normal หากคุณกำลังอยู่ในโหมด Insert หรือโหมดอื่น ๆ ใด ๆ ให้กลับสู่โหมด Normal ก่อน

การออกจาก Vim: คุณสามารถออกจาก Vim โดยพิมพ์คำสั่งต่อไปนี้: 

  •   :q-  คำสั่งนี้จะทำให้เราออกจาก Vim หากไม่ได้แก้ไขข้อมูลใด ๆ หรือหากได้บันทึกข้อมูลของเราไปแล้วครับ
  •   :q!-  ใช้คำสั่งนี้เพื่อออกจาก Vim โดยบังคับให้ออกโดยไม่บันทึกข้อมูลใด ๆ แม้ว่าเราจะได้ทำการแก้ไขข้อมูลไว้ก่อนหน้าแล้ว
  •   :wq-  คำสั่งนี้จะบันทึกข้อมูลของเราแล้วทำการออกจาก Vim โดยรวมการบันทึกและการออกจาก Vim เข้าด้วยกัน

ข้อควรคำนึงคือหลังจากพิมพ์คำสั่งนี้ ให้กด 'Enter' เพื่อดำเนินการต่อ และจากนั้น Vim จะออกจากโปรแกรมตามที่เราได้กำหนดไว้ครับ

Key Stroke
Description
:q + <Enter>
Exit without save
:q!  + <Enter>Force exit without save
ZQ < + <Shift-zq>Exit without save


สรุป

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

บทความนี้หวังว่าจะทำให้เพื่อน ๆ เข้าใจโครงสร้าง ภาพรวมของ Vim Editor นะครับ


จ้างโปรแกรมเมอร์หรือนักพัฒนาสำหรับโปรเจคท์ด้าน Software Development เช่น Website, Web App, Mobile App หรือสอนโค้ดดิ้ง คลาสอบรม?

เพิ่มเพื่อน LINE OA