คู่มือการใช้งาน Vim: Text Editor ที่ทรงพลังสำหรับ Linux

📝 Introduction: Text Editors ใน Linux

Text Editor เป็นเครื่องมือสำคัญสำหรับการทำงานบนระบบปฏิบัติการ Linux ไม่ว่าจะเป็นการเขียนโค้ด แก้ไขไฟล์ configuration หรือเขียนเอกสาร Text Editor ที่ดีช่วยเพิ่มประสิทธิภาพการทำงานได้อย่างมาก

ประเภทของ Text Editors ใน Linux

Linux มี Text Editors หลากหลายประเภท แบ่งออกเป็น:

1. Command-line Editors

2. GUI Editors

ทำไมต้องเรียนรู้ Vim?

Vim (Vi IMproved) เป็น Text Editor ที่มีความสามารถสูง พัฒนามาจาก Vi editor ที่มีมาตั้งแต่ปี 1976 Vim มีข้อดีหลายประการ:


🔍 เปรียบเทียบ Vim กับ Text Editors อื่นๆ

คุณสมบัติ Vim Nano Emacs VS Code gedit
Learning Curve สูงมาก ต่ำมาก สูง ต่ำ ต่ำมาก
ความเร็วในการใช้งาน เร็วมาก (เมื่อชำนาญ) ปานกลาง เร็ว ปานกลาง ปานกลาง
การใช้ทรัพยากร น้อยมาก น้อย ปานกลาง มาก ปานกลาง
ใช้งานบน Server ✅ ดีเยี่ยม ✅ ดี ✅ ดี ❌ ไม่เหมาะ ❌ ต้องมี GUI
Modal Editing ✅ มี ❌ ไม่มี ❌ ไม่มี ❌ ไม่มี ❌ ไม่มี
Customization ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐
Plugins/Extensions มากมาย จำกัด มากมาย มากมาก จำกัด
Syntax Highlighting ✅ มี ✅ มี ✅ มี ✅ มี ✅ มี
Multiple Files ✅ Buffers/Tabs ❌ จำกัด ✅ ดีเยี่ยม ✅ ดีเยี่ยม ✅ Tabs
Command Execution ✅ ดีเยี่ยม ❌ จำกัด ✅ ดีเยี่ยม ✅ ดี ❌ จำกัด
Macro Recording ✅ มี ❌ ไม่มี ✅ มี ✅ มี (ผ่าน extension) ❌ ไม่มี
Search & Replace ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Memory Usage ~10 MB ~5 MB ~50 MB ~200 MB ~30 MB
เหมาะสำหรับ Developers, Sysadmins ผู้เริ่มต้น, Quick edits Power users, Developers Modern development Basic editing

สรุปการเลือกใช้


🎯 ทำความเข้าใจ Vim Modes

Vim มีลักษณะพิเศษคือ Modal Editor หมายความว่ามี "โหมด" ต่างๆ ที่แต่ละโหมดมีหน้าที่แตกต่างกัน นี่เป็นจุดที่ทำให้ Vim ทรงพลัง แต่ก็ยากสำหรับผู้เริ่มต้น

graph LR
    A[Normal Mode] -->|i, a, o, I, A, O| B[Insert Mode]
    B -->|Esc| A
    A -->|v, V, Ctrl+v| C[Visual Mode]
    C -->|Esc| A
    A -->|:| D[Command Mode]
    D -->|Enter or Esc| A
    A -->|R| E[Replace Mode]
    E -->|Esc| A
    
    style A fill:#90EE90
    style B fill:#87CEEB
    style C fill:#FFB6C1
    style D fill:#FFD700
    style E fill:#FFA07A

1. Normal Mode (โหมดปกติ) 🟢

2. Insert Mode (โหมดแทรกข้อความ) 🔵

3. Visual Mode (โหมดเลือก) 🔴

4. Command Mode (โหมดคำสั่ง) 🟡


🚀 การเริ่มต้นใช้งาน Vim

การติดตั้ง Vim

# Ubuntu/Debian
sudo apt update
sudo apt install vim

# CentOS/RHEL
sudo yum install vim

# Fedora
sudo dnf install vim

# macOS (ใช้ Homebrew)
brew install vim

# ตรวจสอบการติดตั้ง
vim --version

การเปิดไฟล์ด้วย Vim

# เปิดไฟล์
vim filename.txt

# สร้างไฟล์ใหม่
vim newfile.txt

# เปิดไฟล์และไปที่บรรทัดที่ 10
vim +10 filename.txt

# เปิดหลายไฟล์
vim file1.txt file2.txt file3.txt

# เปิดไฟล์แบบ read-only
vim -R filename.txt
# หรือ
view filename.txt

📖 คำสั่งพื้นฐาน: ขั้นตอนการใช้งานทีละขั้น

ขั้นตอนที่ 1: การเปิดและปิด Vim

sequenceDiagram
    participant User
    participant Terminal
    participant Vim
    
    User->>Terminal: vim myfile.txt
    Terminal->>Vim: เปิด Vim
    Vim-->>User: แสดง Normal Mode
    Note over Vim: พร้อมใช้งาน
    User->>Vim: :q (ออกจากโปรแกรม)
    Vim-->>Terminal: ปิด Vim
    Terminal-->>User: กลับสู่ Terminal

คำสั่งออกจาก Vim:

:q          " ออกจากโปรแกรม (ถ้าไม่มีการเปลี่ยนแปลง)
:q!         " ออกโดยไม่บันทึก (บังคับ)
:w          " บันทึกไฟล์
:wq         " บันทึกและออก
:x          " บันทึกและออก (ถ้ามีการเปลี่ยนแปลง)
ZZ          " บันทึกและออก (ใน Normal Mode)
ZQ          " ออกโดยไม่บันทึก (ใน Normal Mode)

ขั้นตอนที่ 2: การเคลื่อนที่ใน Vim (Navigation)

การเคลื่อนที่พื้นฐาน (ใน Normal Mode):

# ใช้ arrow keys ได้ แต่แนะนำให้ใช้:
h       " ซ้าย (←)
j       " ลง (↓)
k       " ขึ้น (↑)
l       " ขวา (→)

# เคลื่อนที่แบบคำต่อคำ
w       " ไปคำถัดไป (word)
b       " ถอยหลังไปคำก่อนหน้า (back)
e       " ไปท้ายคำปัจจุบัน (end)

# เคลื่อนที่ภายในบรรทัด
0       " ไปต้นบรรทัด
^       " ไปตัวอักษรแรกของบรรทัด (ไม่นับ space)
$       " ไปท้ายบรรทัด

# เคลื่อนที่แบบหน้าจอ
Ctrl+f  " เลื่อนลง 1 หน้าจอ (forward)
Ctrl+b  " เลื่อนขึ้น 1 หน้าจอ (backward)
Ctrl+d  " เลื่อนลงครึ่งหน้าจอ (down)
Ctrl+u  " เลื่อนขึ้นครึ่งหน้าจอ (up)

# เคลื่อนที่ในไฟล์
gg      " ไปบรรทัดแรกของไฟล์
G       " ไปบรรทัดสุดท้ายของไฟล์
:10     " ไปบรรทัดที่ 10
10G     " ไปบรรทัดที่ 10 (อีกวิธี)

# เคลื่อนที่ไปยังตัวอักษร
f{char} " ค้นหา char ถัดไปในบรรทัด (เช่น fa = หา a)
F{char} " ค้นหา char ก่อนหน้าในบรรทัด
;       " ทำซ้ำการค้นหาล่าสุด
,       " ทำซ้ำการค้นหาล่าสุดในทิศทางตรงข้าม

ขั้นตอนที่ 3: การเข้าสู่ Insert Mode และพิมพ์ข้อความ

i       " Insert ก่อน cursor
a       " Insert หลัง cursor (append)
I       " Insert ที่ต้นบรรทัด
A       " Insert ที่ท้ายบรรทัด
o       " เปิดบรรทัดใหม่ด้านล่าง
O       " เปิดบรรทัดใหม่ด้านบน

# หลังจากเข้า Insert Mode แล้ว
# - พิมพ์ข้อความได้ตามปกติ
# - กด Esc เพื่อกลับไป Normal Mode

ตัวอย่างการใช้งาน:

  1. เปิด Vim: vim example.txt
  2. กด i เพื่อเข้า Insert Mode
  3. พิมพ์: "Hello, Vim!"
  4. กด Esc กลับไป Normal Mode
  5. กด :wq เพื่อบันทึกและออก

ขั้นตอนที่ 4: การลบข้อความ (Deletion)

# ใน Normal Mode
x       " ลบตัวอักษรที่ cursor (เหมือน Delete key)
X       " ลบตัวอักษรก่อน cursor (เหมือน Backspace)
dw      " ลบคำ (delete word)
dd      " ลบทั้งบรรทัด
d$      " ลบจาก cursor ถึงท้ายบรรทัด
D       " ลบจาก cursor ถึงท้ายบรรทัด (เหมือน d$)
d0      " ลบจาก cursor ถึงต้นบรรทัด

# ลบหลายบรรทัด
3dd     " ลบ 3 บรรทัด
d5w     " ลบ 5 คำ

# ลบภายใน
di(     " ลบข้อความภายใน ()
di[     " ลบข้อความภายใน []
di{     " ลบข้อความภายใน {}
di"     " ลบข้อความภายใน ""
dit     " ลบข้อความภายใน HTML/XML tag

ตัวอย่างการใช้งาน:

ข้อความเริ่มต้น: "The quick brown fox jumps over the lazy dog"
                  ^
                  cursor อยู่ที่ T

กด dw    → "quick brown fox jumps over the lazy dog"
กด 2dw   → "fox jumps over the lazy dog"
กด dd    → (ลบทั้งบรรทัด)

ขั้นตอนที่ 5: การ Copy (Yank) และ Paste

# Copy (เรียกว่า "yank" ใน Vim)
yy      " copy ทั้งบรรทัด
y$      " copy จาก cursor ถึงท้ายบรรทัด
yw      " copy 1 คำ
y2w     " copy 2 คำ
5yy     " copy 5 บรรทัด

# Paste
p       " paste หลัง cursor/บรรทัดล่าง
P       " paste ก่อน cursor/บรรทัดบน

# Cut (delete แล้วไปใน clipboard)
dd      " cut ทั้งบรรทัด (เหมือนกับ copy+delete)
dw      " cut คำ

ตัวอย่างการใช้งาน:

บรรทัดที่ 1: Hello World
บรรทัดที่ 2: Welcome to Vim
บรรทัดที่ 3: Linux is awesome

ขั้นตอน:
1. วาง cursor ที่บรรทัดที่ 1
2. กด yy (copy บรรทัดที่ 1)
3. เคลื่อนไปบรรทัดที่ 3
4. กด p (paste ลงใต้บรรทัดที่ 3)

ผลลัพธ์:
บรรทัดที่ 1: Hello World
บรรทัดที่ 2: Welcome to Vim
บรรทัดที่ 3: Linux is awesome
บรรทัดที่ 4: Hello World

ขั้นตอนที่ 6: การ Undo และ Redo

u       " Undo (ยกเลิกการเปลี่ยนแปลงล่าสุด)
Ctrl+r  " Redo (ทำซ้ำที่ถูก undo)

# ตัวอย่าง
U       " undo ทั้งบรรทัด (กลับไปสถานะเดิม)
# ค้นหาในไฟล์
/pattern    " ค้นหา pattern ไปข้างหน้า
?pattern    " ค้นหา pattern ถอยหลัง
n           " ไปผลลัพธ์ถัดไป (next)
N           " ไปผลลัพธ์ก่อนหน้า

# ค้นหาคำที่ cursor อยู่
*           " ค้นหาคำที่ cursor อยู่ไปข้างหน้า
#           " ค้นหาคำที่ cursor อยู่ถอยหลัง

# ตัวอย่าง
/hello      " ค้นหา "hello"
n           " ไปยัง "hello" ถัดไป
N           " กลับไป "hello" ก่อนหน้า

ขั้นตอนที่ 8: การ Search and Replace

# รูปแบบพื้นฐาน
:s/old/new/         " แทนที่แห่งแรกในบรรทัดปัจจุบัน
:s/old/new/g        " แทนที่ทั้งหมดในบรรทัดปัจจุบัน
:%s/old/new/g       " แทนที่ทั้งหมดในไฟล์
:%s/old/new/gc      " แทนที่ทั้งหมดในไฟล์ (ถามทุกครั้ง)

# ตัวอย่างการใช้งาน
:1,10s/old/new/g    " แทนที่ในบรรทัด 1-10
:.,$s/old/new/g     " แทนที่จากบรรทัดปัจจุบันถึงท้ายไฟล์

ตัวอย่างจริง:

ข้อความเริ่มต้น:
The quick brown fox jumps over the lazy dog.
The quick brown fox is fast.

คำสั่ง: :%s/fox/cat/g

ผลลัพธ์:
The quick brown cat jumps over the lazy dog.
The quick brown cat is fast.

🎨 Visual Mode: การเลือกข้อความ

Visual Mode ใช้สำหรับเลือก (highlight) ข้อความเพื่อทำงานกับข้อความที่เลือก

แบบ Character-wise Selection

v       " เข้า Visual Mode
# จากนั้นใช้ h,j,k,l หรือ w,b เพื่อเลือก
y       " copy ส่วนที่เลือก
d       " ลบส่วนที่เลือก
c       " เปลี่ยนส่วนที่เลือก (ลบและเข้า Insert Mode)

แบบ Line-wise Selection

V       " เข้า Visual Line Mode (เลือกทั้งบรรทัด)
# จากนั้นใช้ j,k เพื่อเลือกบรรทัด
y       " copy บรรทัดที่เลือก
d       " ลบบรรทัดที่เลือก

แบบ Block-wise Selection

Ctrl+v  " เข้า Visual Block Mode (เลือกเป็นบล็อก)
# เลือกพื้นที่สี่เหลี่ยม
I       " Insert ข้อความหน้าทุกบรรทัดที่เลือก
A       " Insert ข้อความท้ายทุกบรรทัดที่เลือก

ตัวอย่าง Block Selection:

ข้อความเริ่มต้น:
apple
banana
cherry
date

ขั้นตอน:
1. วาง cursor ที่ 'a' ของ apple
2. กด Ctrl+v
3. กด 3j (เลือกลง 3 บรรทัด)
4. กด 2l (เลือกขวา 2 ตัวอักษร)
5. กด I เพื่อ insert
6. พิมพ์ ">> "
7. กด Esc

ผลลัพธ์:
>> apple
>> banana
>> cherry
>> date

⚡ คำสั่งขั้นสูงและ Tips

1. การทำงานกับหลายไฟล์ (Buffers, Windows, Tabs)

# Buffers (ไฟล์ที่เปิดอยู่)
:e filename     " เปิดไฟล์ใหม่
:bn             " ไปไฟล์ถัดไป (buffer next)
:bp             " ไปไฟล์ก่อนหน้า (buffer previous)
:bd             " ปิดไฟล์ปัจจุบัน (buffer delete)
:ls             " แสดงรายการไฟล์ทั้งหมด
:b2             " ไปยังไฟล์หมายเลข 2

# Windows (แบ่งหน้าจอ)
:split file     " แบ่งหน้าจอแนวนอน
:vsplit file    " แบ่งหน้าจอแนวตั้ง
Ctrl+w w        " สลับระหว่าง windows
Ctrl+w h/j/k/l  " เคลื่อนไปยัง window ด้านซ้าย/ล่าง/บน/ขวา
Ctrl+w =        " ทำให้ windows เท่ากัน
Ctrl+w q        " ปิด window
:resize 20      " ปรับขนาด window เป็น 20 บรรทัด

# Tabs
:tabnew file    " เปิด tab ใหม่
:tabn           " ไป tab ถัดไป
:tabp           " ไป tab ก่อนหน้า
:tabc           " ปิด tab
gt              " ไป tab ถัดไป (ใน Normal Mode)
gT              " ไป tab ก่อนหน้า
graph TD
    A[Vim Interface] --> B[Tabs]
    B --> C[Windows/Splits]
    C --> D[Buffers/Files]
    
    style A fill:#e1f5ff
    style B fill:#fff9c4
    style C fill:#f0f4c3
    style D fill:#c8e6c9

2. Macros (บันทึกและเล่นคำสั่งซ้ำ)

# บันทึก Macro
q{register}     " เริ่มบันทึก (เช่น qa = บันทึกลงใน register a)
# ... ทำคำสั่งที่ต้องการ ...
q               " หยุดบันทึก

# เล่น Macro
@{register}     " เล่น macro (เช่น @a)
@@              " เล่น macro ล่าสุดอีกครั้ง
10@a            " เล่น macro a 10 ครั้ง

ตัวอย่างการใช้ Macro:

งาน: เพิ่ม quotes รอบทุกคำ

ข้อความเริ่มต้น:
apple
banana
cherry

ขั้นตอน:
1. วาง cursor ที่บรรทัดแรก
2. กด qa (เริ่มบันทึก macro ลง register a)
3. กด I" (Insert quote ด้านหน้า)
4. กด Esc
5. กด A" (Insert quote ด้านหลัง)
6. กด Esc
7. กด j (ลงบรรทัดถัดไป)
8. กด q (หยุดบันทึก)
9. กด 2@a (เล่น macro อีก 2 ครั้ง)

ผลลัพธ์:
"apple"
"banana"
"cherry"

3. Marks (จุดหมาย)

m{a-z}          " ตั้ง mark (เช่น ma)
'{mark}         " กระโดดไปยังบรรทัดของ mark
`{mark}         " กระโดดไปยังตำแหน่งแน่นอนของ mark
:marks          " แสดง marks ทั้งหมด

# Marks พิเศษ
''              " กระโดดกลับตำแหน่งก่อนหน้า
`.              " กระโดดไปยังตำแหน่งแก้ไขล่าสุด

4. Registers (คลิปบอร์ด)

# ใช้ register
"{register}y    " yank ลง register (เช่น "ay)
"{register}p    " paste จาก register (เช่น "ap)
:reg            " แสดง registers ทั้งหมด

# Registers พิเศษ
"0              " yank ล่าสุด
"1-"9           " delete ล่าสุด 9 ครั้ง
"+              " system clipboard
"*              " selection clipboard

ตัวอย่าง:

# Copy ไปยัง system clipboard
"+yy            " copy บรรทัดไปยัง system clipboard
"+p             " paste จาก system clipboard

5. Text Objects (มีประโยชน์มาก!)

# รูปแบบ: [command][i/a][object]
# i = inner (ภายใน)
# a = around (รวมตัวล้อม)

# ตัวอย่าง
ciw             " change inner word (เปลี่ยนคำ ไม่รวม space)
caw             " change a word (เปลี่ยนคำ รวม space)
di"             " delete inner " (ลบใน quotes)
da"             " delete around " (ลบรวม quotes)
ci(             " change inner (
ca{             " change around {
dit             " delete inner tag (HTML/XML)
vis             " visual select inner sentence
vip             " visual select inner paragraph

ตัวอย่างการใช้งาน:

<!-- ข้อความ: <div>Hello World</div> -->
<!-- cursor อยู่ใน Hello -->

dit     " ลบ "Hello World"
       " ผลลัพธ์: <div></div>

dat     " ลบทั้ง tag
       " ผลลัพธ์: (บรรทัดว่าง)

6. Autocomplete ใน Insert Mode

Ctrl+n          " autocomplete คำถัดไป
Ctrl+p          " autocomplete คำก่อนหน้า
Ctrl+x Ctrl+f   " autocomplete filename
Ctrl+x Ctrl+l   " autocomplete line

7. การทำงานกับ Numbers

Ctrl+a          " เพิ่มตัวเลข
Ctrl+x          " ลดตัวเลข

# ตัวอย่าง: cursor อยู่ที่ 5
5 Ctrl+a        " 5 กลายเป็น 10
3 Ctrl+x        " 10 กลายเป็น 7

📋 ตัวอย่างการใช้งานจริง (Real-world Examples)

ตัวอย่างที่ 1: แก้ไขไฟล์ Configuration

# สถานการณ์: แก้ไขไฟล์ /etc/hosts
sudo vim /etc/hosts

ขั้นตอน:

  1. เปิดไฟล์: sudo vim /etc/hosts
  2. ไปท้ายไฟล์: G
  3. เปิดบรรทัดใหม่: o
  4. พิมพ์: 192.168.1.100 myserver.local
  5. กด Esc
  6. บันทึก: :wq

ตัวอย่างที่ 2: แก้ไขโค้ด Python

# ไฟล์เริ่มต้น: script.py
def hello():
    print("Hello")

def world():
    print("World")

งาน: เพิ่ม docstring ให้ทุกฟังก์ชัน

# ขั้นตอน:
1. /def<Enter>          " ค้นหาคำว่า def
2. o<Esc>               " เปิดบรรทัดใหม่และออกจาก Insert Mode
3. i    """<Enter>      " พิมพ์ docstring เริ่มต้น
4. Description<Enter>   " พิมพ์คำอธิบาย
5. """<Esc>             " ปิด docstring
6. n                    " ไปหา def ถัดไป
7. .                    " ทำซ้ำคำสั่งล่าสุด

# หรือใช้ macro:
qa                      " เริ่มบันทึก macro
/def<Enter>o"""<Enter>Description<Enter>"""<Esc>
q                       " หยุดบันทึก
@a                      " เล่น macro

ตัวอย่างที่ 3: จัดการ CSV File

# ไฟล์: data.csv
name,age,city
John,25,Bangkok
Jane,30,Chiang Mai
Bob,22,Phuket

งาน: เพิ่มคอลัมน์ country

# ขั้นตอนใช้ Visual Block Mode:
1. วาง cursor ที่ท้ายบรรทัดแรก (หลัง city)
2. Ctrl+v                " Visual Block Mode
3. 3j                    " เลือก 4 บรรทัด
4. A,country<Esc>        " เพิ่ม ",country" ท้ายทุกบรรทัด

# ผลลัพธ์:
name,age,city,country
John,25,Bangkok,country
Jane,30,Chiang Mai,country
Bob,22,Phuket,country

# จากนั้นแก้บรรทัด 2-4:
5. 2G                    " ไปบรรทัดที่ 2
6. f,                    " หา comma
7. ;                     " ไป comma ถัดไป
8. ;                     " ไป comma ถัดไป (หลัง city)
9. cw Thailand<Esc>      " เปลี่ยน country เป็น Thailand

ตัวอย่างที่ 4: Refactoring โค้ด

// เปลี่ยนชื่อตัวแปร oldName เป็น newName ทั้งไฟล์
:%s/\<oldName\>/newName/gc

// \< และ \> = word boundaries
// g = global (ทั้งบรรทัด)
// c = confirm (ถามก่อนแทนที่)

🛠️ การ Customize Vim

ไฟล์ .vimrc

Vim สามารถปรับแต่งได้ผ่านไฟล์ ~/.vimrc

" ตัวอย่าง .vimrc พื้นฐาน

" การตั้งค่าทั่วไป
set number              " แสดงเลขบรรทัด
set relativenumber      " แสดงเลขบรรทัดแบบสัมพันธ์
set cursorline          " highlight บรรทัดปัจจุบัน
set tabstop=4           " tab = 4 spaces
set shiftwidth=4        " indent = 4 spaces
set expandtab           " แปลง tab เป็น spaces
set autoindent          " indent อัตโนมัติ
set smartindent         " smart indent
set wrap                " word wrap
set ignorecase          " ค้นหาไม่สนใจ case
set smartcase           " ค้นหาสนใจ case ถ้ามีตัวพิมพ์ใหญ่
set incsearch           " แสดงผลค้นหาทันที
set hlsearch            " highlight ผลค้นหา
set mouse=a             " เปิดใช้ mouse
set clipboard=unnamedplus " ใช้ system clipboard

" การแสดงผล
syntax on               " เปิด syntax highlighting
set background=dark     " background สีเข้ม
colorscheme desert      " ธีมสี

" Status line
set laststatus=2        " แสดง status line เสมอ
set ruler               " แสดงตำแหน่ง cursor

" Key mappings
" Leader key = Space
let mapleader = " "

" บันทึกไฟล์
nnoremap <leader>w :w<CR>

" ออกจากไฟล์
nnoremap <leader>q :q<CR>

" ปิด highlight หลังค้นหา
nnoremap <leader>h :nohlsearch<CR>

" เคลื่อนระหว่าง splits
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" ย้ายบรรทัดขึ้นลง
vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv

Plugins แนะนำ

ใช้ Plugin Manager เช่น vim-plug:

# ติดตั้ง vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

เพิ่มใน .vimrc:

call plug#begin('~/.vim/plugged')

" File explorer
Plug 'preservim/nerdtree'

" Status line
Plug 'vim-airline/vim-airline'

" Fuzzy finder
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

" Git integration
Plug 'tpope/vim-fugitive'

" Auto pairs
Plug 'jiangmiao/auto-pairs'

" Comment plugin
Plug 'tpope/vim-commentary'

" Syntax highlighting
Plug 'sheerun/vim-polyglot'

call plug#end()

" NERDTree config
nnoremap <leader>e :NERDTreeToggle<CR>

" FZF config
nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>

ติดตั้ง Plugins:

" ใน Vim พิมพ์:
:PlugInstall

🎓 เทคนิคการเรียนรู้ Vim

1. เริ่มต้นอย่างไร

graph TD
    A[เริ่มต้นเรียน Vim] --> B[vimtutor]
    B --> C[ใช้งานพื้นฐานได้]
    C --> D[ฝึกฝนทุกวัน]
    D --> E[เรียนรู้ advanced features]
    E --> F[Customize .vimrc]
    F --> G[ติดตั้ง plugins]
    G --> H[Vim Power User!]
    
    style A fill:#ffcccc
    style H fill:#ccffcc

Week 1-2: Basic Survival

Week 3-4: Getting Comfortable

Week 5-8: Efficiency

Week 9+: Mastery

2. คำแนะนำสำหรับผู้เริ่มต้น

DO:

DON'T:

3. Cheat Sheet สำหรับเก็บไว้

=== NAVIGATION ===
h/j/k/l     ซ้าย/ลง/ขึ้น/ขวา
w/b/e       คำถัดไป/ก่อนหน้า/ท้ายคำ
0/$         ต้น/ท้ายบรรทัด
gg/G        ต้น/ท้ายไฟล์

=== EDITING ===
i/a/o       Insert/Append/Open line
x/dd        Delete char/line
yy/p        Copy/Paste line
u/Ctrl+r    Undo/Redo

=== VISUAL ===
v/V/Ctrl+v  Char/Line/Block select
y/d/c       Copy/Delete/Change selection

=== SEARCH ===
/pattern    Search forward
n/N         Next/Previous match
:%s/old/new/g  Replace all

=== FILES ===
:w          Save
:q/:q!      Quit/Force quit
:wq         Save and quit
:e file     Open file

=== ADVANCED ===
.           Repeat last command
q{a}/q      Record/Stop macro
@{a}        Play macro
:split      Split window

🔗 Resources เพิ่มเติม

เอกสารและบทเรียน

  1. vimtutor - บทเรียน interactive ใน Vim

    vimtutor
    
  2. Vim Documentation

    :help
    :help keyword
    
  3. Online Resources

คีย์บอร์ดชวเลข

+-------+-------+-------+-------+-------+-------+-------+-------+
|   ~   |   !   |   @   |   #   |   $   |   %   |   ^   |   &   |
|   `   |   1   |   2   |   3   |   4   |   5   |   6   |   7   |
+-------+-------+-------+-------+-------+-------+-------+-------+
|   Q   |   W   |   E   |   R   |   T   |   Y   |   U   |   I   |
|   q   |   w   |   e   |   r   |   t   |   y   |   u   |   i   |
+-------+-------+-------+-------+-------+-------+-------+-------+
|   A   |   S   |   D   |   F   |   G   |   H   |   J   |   K   |
|   a   |   s   |   d   |   f   |   g   |   h   |   j   |   k   |
+-------+-------+-------+-------+-------+-------+-------+-------+
|   Z   |   X   |   C   |   V   |   B   |   N   |   M   |
|   z   |   x   |   c   |   v   |   b   |   n   |   m   |
+-------+-------+-------+-------+-------+-------+-------+

 h = ←  (ซ้าย)
 j = ↓  (ลง)
 k = ↑  (ขึ้น)
 l = →  (ขวา)

🎯 สรุป

Vim เป็น Text Editor ที่มีความสามารถสูง มีเส้นโค้งการเรียนรู้ที่สูง แต่เมื่อเชี่ยวชาญแล้วจะช่วยเพิ่มประสิทธิภาพการทำงานได้อย่างมาก

Key Takeaways:

เริ่มต้นวันนี้:

vimtutor

เพียงแค่ 15-30 นาทีต่อวัน ภายใน 1-2 เดือนคุณจะสามารถใช้ Vim ได้อย่างคล่องแคล่ว!


Happy Vimming! 🚀

"Vim is like a musical instrument—it takes practice, but once you master it, you'll never want to use anything else."