[Part1] Coding on Vim: ทำความรู้จัก Vim

NSLog0
NSLog0
Mar 9 · 3 min read

โพสเก่าจาก Blog เดิม มิถุนายน 23, 2017

Image for post
Image for post

ผมจะมาแนะนำการใช้ Vim เพื่อใช้ในการเขียนโปรแกรม โดยตอนแรกเองผมก็ใช้ Vim และ Vi ปกติก็แก้ไฟล์เล็กๆ น้อยๆ บน Sever หรือในคอมตัวเอง ใช้งานปกติทั่วไป แต่เรื่องมีอยู่ว่า พอดีผมย้ายงานใหม่และมีเพื่อนที่ทำงานผมคนนึงเก่งมากเลยในการใช้ Vim มันดูเท่มากครับ เวลาคุณเอามาเขียนโปรแกรม จริงๆ จังๆ ลงฟังก์ชัน กดโน้นนี่ อย่างคล่องแคล่ว มีลูกเล่นต่างๆ จากพื้นฐานที่ผมมีอยู่แล้ว ทำให้อยากลองใช้งานแบบเพื่อนคนนี้มัง ผมก็เลยขอความรู้จากเขาแล้วก็เริ่มหัดใช้ในการเขียนโปรแกรมมาเรื่อยๆ จนคล่อง ก็เลยเกิดไอเดียว่าอยากจะมาสอนคนอื่นๆ ใช้มัง เอาละเดี๋ยวเรามาลองดูกันคราวๆ ว่า Vim คืออะไร และใช้งานมันยังไง

What is Vim?

สำหรับมือใหม่ในการเขียนโปรแกรม หรือคนที่ไม่เคยทำงานกับพวก Unix มาเลยจะไม่เข้าใจเลยว่า Vim คืออะไร ซึ่งปกติมันคือ Editor แบบ Commend Line บน OS ตระกูล Unix ทั้งหลาย ซึ่งช่วยให้คนที่ทำงานกับระบบที่ไม่มี GUI สามารถแก้ไฟล์งานได้

Vim เป็นโปรแกรมที่โคลนมาจาก Vi สร้างโดย Bill Joy และต่อมา Bram Moolenaar ได้สร้าง Vim ขึ้นมาโดยมี Code base มาจาก Stevie editor และท้ายที่สุดคือ Vim ในปี 1991 (2534) จากนั้นก็กลายเป็น Editor ที่โด่ดดังและใช้กันแพร่หลายในปัจจุบัน เรื่องหน้ารู้อีกอย่างนึงคือ Vim มันย่อมาจาก Vi IMproved และเราก็เรียกมันย่อๆ ว่า Vim (ผมออกเสียงว่า วิม บางคนก็เรียก วิ้ม แล้วแต่ถนัด) และ Vi ต่างจาก Vim ตรงที่มันสามารถลง Plugin ช่วยการทำงานต่างๆ ได้ สามารถทำให้เป็นเหมือนกับ IDE หรือ Atom, Sublime เลย เดี๋ยวเราจะมีสอนติดตั้งกันในบทความต่อๆ ไป

Installation

ปกติแล้วถ้าเป็น OS ตระกูล Linux เช่น Ubuntu หรือ Distro อื่นๆ Vim จะไม่เป็นโปรแกรมที่มา Default เหมือนกัน Mac OS ดังนั้นใครไม่ได้ใช้ Mac ก็ต้องลงเอง วิธีการลงก็ไม่ยาก เปิด Terminal ขึ้นมาแล้วสั่งตามนี้เลย

sudo apt-get -y install vim

เมื่อติดตั้งเสร็จก็ใช้งานได้ทันที

1. $ > vim path/file or filename
2. $ > vim .

แบบแรกคือเรียกชื่อไฟล์ที่ต้องการจะเปิดหรือแก้ไขหรือชี้ไปที่ path ที่เราต้องการ และแบบที่สองเปิดไฟล์ ณ ตำแหน่งที่อยู่ของ terminal ปกติก็ไว้เปิดไฟล์ทั้งโฟรเดอร์ก็จะใช้วิธีนี้กัน

Basic usage

เมื่อติดตั้งและเปิดไฟล์กันเป็นแล้วก่อนจะใช้งานจริง เราต้องทำความเข้าใจเรื่องการใช้งานของโปรแกรมสะก่อน เพราะแน่นอนมันไม่ได้ใช้งานแบบปกติทั่วไปแน่นอน แถมเราก็ไม่สามารถใช้เมาส์ในการบังคับ Cursor หรือใช้งานเหมือนกันโปรแกรมอื่นๆ ที่มี GUI ทั่วไปได้ เพราะมันงาน Commend Line โหมดการทำงานของ Vim นั่นมี 3 โหมด ก่อนอื่นมาดู 2 โหมดหลักก่อน

Normal mode — คือโหมดที่ใช้ในการรอรับคำสั่งจากเราเพื่อบอกว่าให้โปรแกรมมันทำอะไรเช่น ออกจากโปรแกรม (เดียวๆ ยังไม่ได้ใช้จะออกละหรอ 55+) การสร้างไฟล์, การเปิดไฟล์​ บันทึกไฟล์ หรือสลับโหมดการใช้งาน การเลือกไฟล์ที่จะทำ ปกติเวลาเปิด Vim จะเป็นโหมดนี้อยู่แล้วเป็นค่าเริ่มต้น

Insert Mode — คือโหมดที่ใช้ในการเขียนไฟล์ เวลาจะแก้ไฟล์หรือพิมพ์งานก็เข้าที่โหมดนี้โดยการอยู่ที่ Normal mode และกด ปุ่ม I (ไอ) และถ้าต้องการสลับกลับมาที่ Normal mode ก็กด Esc มันก็ทำการสลับกลับมาเพื่อรอรับคำสั่งต่อว่าต้องการทำอะไร

Normal mode จะเห็นว่ามันเป็นหน้าจอว่างๆ มีแค่ status file เท่านั่นครับ

Image for post
Image for post

Insert mode หลังจากกด I ก็จะเข้าสู่ Insert mode ทั่นที และจะเป็นว่ามุมล่างจะมี status บอกว่าตอนนี้อยู่ที่ Insert mode ตรงนนี้เราก็แก้ไขไฟล์ได้แล้ว

Image for post
Image for post

Mouse in vim

เมื่อเราไม่สามารถใช้เมาส์ได้ แน่นอนว่าเราก็ต้องมีคีย์ที่ใช้เลื่อนตำแหน่งของ Cursor เพื่อทำงานกับมัน เราสามารถใช้ปุ่ม ซ้าย ขวา ขึ้น ลง ของคีย์บอร์ดได้ แต่นั้นไม่ใช่วิธีที่ถูกต้อง จริงๆ แล้วเราควรหัดใช้ h(ซ้าย) j(ล่าง) k(บน) l(ขวา) เพื่อย้ายตำแหน่งของ Cursor

Movig cursor by wording in Normal Mode

เราสามารถขยับ Cursor ที่ละอักษรได้ ซึ่งจะช้ามาก ดังนั้นเราจะมาย้าย Cursor เป็นคำๆ แทน และเราจะใช้ 3 คีย์หลักๆ คือ

  • w ย้ายไปอักษรตัวแรกของคำ,
  • e ย้ายไปอักษรสุดท้ายของคำ
  • b เพื่อเลื่อนกลับ

ผมจะยกตัวอย่างให้ดู เช่น ในผมมีข้อความที่เขียนว่า “Lorem Ipsum is simply dummy (ตัวหนาคือตัวที่ cursor ชี้อยู่) และผมกด w มันก็ย้ายมาอยู่ที่ Lorem Ipsum is simply dummy และกดต่อไปก็จะย้ายไปที่ Lorem Ipsum is simply dummy แบบนี้

ในขณะเดียวกันถ้าผมใช้ปุ่ม e โดยให้ Lorem Ipsum is simply dummy (ผมให้ cursor อยู่ที่ตัว m) ถ้าผมกดต่อไปมันก็จะเลื่อนไปตัวถัดไป Lorem Ipsum is simply dummy และกดถัดไปก็เลื่อนไปเรื่อยๆ และถ้าอยากกลับมาคำก่อนหน้าก็แค่กด b

Cursor in Insert mode

ปกติเราจะใช้ปุ่ม ซ้าย ขวา ขึ้น ลง ทั่วไปได้แต่ผมแนะนำให้สลับกลับมาเป็น Normal Mode แทนดีกว่า แล้วใช้การเลื่อนด้วย hjkl แทน

Virtual Mode

โหมดสุดท้ายที่ผมได้พูดไปตอนต้นอันนี้จะใช้ ในการทำ selection เหมือนเราลากเมาส์เพื่อไฮไลท์คำนั่นเอง แค่กด v แล้วก็เลือกคำหรือบรรทัดที่เราต้องการทำงานกับมัน

Saving file

เมื่อแก้ไขงานเสร็จเราก็คงอยากจะ save มันใช่ไหมก็ไม่อยาก ก่อนอื่นกลับมาที่ Normal Mode ก่อนจากนั่นพิมพ์ : (colon) แล้วตามด้วย w (write) แล้วก็กด Enter เท่านี้เราก็จะเซฟไฟล์ได้แล้ว

How exit in Vim

การออกจากโปรแกรม ไม่ควรกดปิด terminal เฉยๆ นะครับ อันนี้ไม่ควรทำ เพราะเวลาเราเปิด vim มันจะมีไฟล์ตัวนึงที่ระบบสร้างมาเพื่อเก็บ history ชื่อว่า .swp ถ้าเราปิด terminal ไปเฉยๆ จะทำให้ระบบไม่ลบไฟล์นั้นทิ้ง เมื่อกลับมาเปิดใหม่ vim จะถามให้เพื่อทำงานต่อจากเดิมที่สร้าง .swp ทิ้งไว้ และการออกจาก vim ที่ถูกคือ พิมพ์ : (colon) แล้วตามด้วย q และถ้าเกิดไปแก้ไขไฟล์โดยบังเอิญแต่จะออก vim โดยไม่เซฟโปรแกรมมันจะไม่ยอมให้ออกนนะครับ วิธีจะออกได้ต้องพิมพ์ :q! เท่านั้นจึงจะออกได้

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

AlgorithmTut

May the force be with you. **Tut stand for Tutorial**

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store