Text Editor เป็นเครื่องมือสำคัญสำหรับการทำงานบนระบบปฏิบัติการ Linux ไม่ว่าจะเป็นการเขียนโค้ด แก้ไขไฟล์ configuration หรือเขียนเอกสาร Text Editor ที่ดีช่วยเพิ่มประสิทธิภาพการทำงานได้อย่างมาก
Linux มี Text Editors หลากหลายประเภท แบ่งออกเป็น:
1. Command-line Editors
2. GUI Editors
Vim (Vi IMproved) เป็น Text Editor ที่มีความสามารถสูง พัฒนามาจาก Vi editor ที่มีมาตั้งแต่ปี 1976 Vim มีข้อดีหลายประการ:
| คุณสมบัติ | 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 มีลักษณะพิเศษคือ 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
Esc เพื่อกลับมาที่โหมดนี้เสมอi, a, o และคำสั่งอื่นๆv - Character-wise selectionV - Line-wise selectionCtrl+v - Block-wise selection::w, :q, :wq# 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 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
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)
การเคลื่อนที่พื้นฐาน (ใน 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 ก่อนหน้าในบรรทัด
; " ทำซ้ำการค้นหาล่าสุด
, " ทำซ้ำการค้นหาล่าสุดในทิศทางตรงข้าม
i " Insert ก่อน cursor
a " Insert หลัง cursor (append)
I " Insert ที่ต้นบรรทัด
A " Insert ที่ท้ายบรรทัด
o " เปิดบรรทัดใหม่ด้านล่าง
O " เปิดบรรทัดใหม่ด้านบน
# หลังจากเข้า Insert Mode แล้ว
# - พิมพ์ข้อความได้ตามปกติ
# - กด Esc เพื่อกลับไป Normal Mode
ตัวอย่างการใช้งาน:
vim example.txti เพื่อเข้า Insert ModeEsc กลับไป Normal Mode:wq เพื่อบันทึกและออก# ใน 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 → (ลบทั้งบรรทัด)
# 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
u " Undo (ยกเลิกการเปลี่ยนแปลงล่าสุด)
Ctrl+r " Redo (ทำซ้ำที่ถูก undo)
# ตัวอย่าง
U " undo ทั้งบรรทัด (กลับไปสถานะเดิม)
# ค้นหาในไฟล์
/pattern " ค้นหา pattern ไปข้างหน้า
?pattern " ค้นหา pattern ถอยหลัง
n " ไปผลลัพธ์ถัดไป (next)
N " ไปผลลัพธ์ก่อนหน้า
# ค้นหาคำที่ cursor อยู่
* " ค้นหาคำที่ cursor อยู่ไปข้างหน้า
# " ค้นหาคำที่ cursor อยู่ถอยหลัง
# ตัวอย่าง
/hello " ค้นหา "hello"
n " ไปยัง "hello" ถัดไป
N " กลับไป "hello" ก่อนหน้า
# รูปแบบพื้นฐาน
: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 ใช้สำหรับเลือก (highlight) ข้อความเพื่อทำงานกับข้อความที่เลือก
v " เข้า Visual Mode
# จากนั้นใช้ h,j,k,l หรือ w,b เพื่อเลือก
y " copy ส่วนที่เลือก
d " ลบส่วนที่เลือก
c " เปลี่ยนส่วนที่เลือก (ลบและเข้า Insert Mode)
V " เข้า Visual Line Mode (เลือกทั้งบรรทัด)
# จากนั้นใช้ j,k เพื่อเลือกบรรทัด
y " copy บรรทัดที่เลือก
d " ลบบรรทัดที่เลือก
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
# 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
# บันทึก 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"
m{a-z} " ตั้ง mark (เช่น ma)
'{mark} " กระโดดไปยังบรรทัดของ mark
`{mark} " กระโดดไปยังตำแหน่งแน่นอนของ mark
:marks " แสดง marks ทั้งหมด
# Marks พิเศษ
'' " กระโดดกลับตำแหน่งก่อนหน้า
`. " กระโดดไปยังตำแหน่งแก้ไขล่าสุด
# ใช้ 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
# รูปแบบ: [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
" ผลลัพธ์: (บรรทัดว่าง)
Ctrl+n " autocomplete คำถัดไป
Ctrl+p " autocomplete คำก่อนหน้า
Ctrl+x Ctrl+f " autocomplete filename
Ctrl+x Ctrl+l " autocomplete line
Ctrl+a " เพิ่มตัวเลข
Ctrl+x " ลดตัวเลข
# ตัวอย่าง: cursor อยู่ที่ 5
5 Ctrl+a " 5 กลายเป็น 10
3 Ctrl+x " 10 กลายเป็น 7
# สถานการณ์: แก้ไขไฟล์ /etc/hosts
sudo vim /etc/hosts
ขั้นตอน:
sudo vim /etc/hostsGo192.168.1.100 myserver.localEsc:wq# ไฟล์เริ่มต้น: 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
# ไฟล์: 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
// เปลี่ยนชื่อตัวแปร oldName เป็น newName ทั้งไฟล์
:%s/\<oldName\>/newName/gc
// \< และ \> = word boundaries
// g = global (ทั้งบรรทัด)
// c = confirm (ถามก่อนแทนที่)
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
ใช้ 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
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
vimtutor (พิมพ์ในเทอร์มินอล)Week 3-4: Getting Comfortable
Week 5-8: Efficiency
Week 9+: Mastery
✅ DO:
vimtutor เป็นจุดเริ่มต้น❌ DON'T:
=== 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
vimtutor - บทเรียน interactive ใน Vim
vimtutor
Vim Documentation
:help
:help keyword
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."