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

   By: Chaiwat Chaobaankoh

   อัปเดตล่าสุด May 14, 2024

ทำความรู้จักและวิธีใช้ 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 System: Vim สามารถผนวกได้อย่างราบรื่นกับระบบควบคุมเวอร์ชัน (Version Control System) เช่น Git ทำให้เป็นอีกตัวเลือกที่ดีสำหรับการเขียนโค้ด


Vim Modes

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


1. Normal Mode

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

2. Insert Mode

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

3. Visual Mode

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


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 (How to exit 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 ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน

เรียนเขียนโปรแกรม