สรุปคำสั่ง vi ของ Linux | 3 โหมดของ Vim และโหมด Visual

ประกาศแอฟฟิลิเอต Ver 3.1
ประกาศแอฟฟิลิเอต Ver 3.2 (เฉพาะมือถือ)
สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8บัญชี rootตรวจสอบ 2026-10-07

เปิด vi แล้วพิมพ์อะไรก็ไม่ขึ้น หรือไม่รู้วิธีออกจนต้องปิดหน้าต่างทิ้ง เป็นเรื่องที่คนเพิ่งเริ่มใช้เซิร์ฟเวอร์ต้องเจอสักครั้ง คำสั่ง vi ของ Linux แยกโหมด Normal กับโหมด Insert ออกจากกัน ขอแค่รู้ว่าตอนนี้อยู่โหมดไหน ที่เหลือก็จบได้ด้วยไม่กี่ปุ่ม บทความนี้สรุป 3 โหมดและคำสั่งของแต่ละโหมดไว้ในตาราง และให้ลองพิมพ์ vi เองบนเซิร์ฟเวอร์เสมือนในเบราว์เซอร์

บน AlmaLinux 9.8 ทั้ง vi และ vim มาจากแพ็กเกจ vim 8.2 และหน้าจอกับข้อความในบทความนี้เปิดด้วย vim ถ้ายังไม่ได้ติดตั้ง ให้ติดตั้งด้วย [dnf -y install vim-enhanced]

แผนภาพการสลับระหว่าง 3 โหมดของคำสั่ง vi บน Linux คำสั่ง vi บน Linux: แผนภาพ 3 โหมด

✅ 3 โหมดของ vi

ใน vi ปุ่มเดียวกันทำงานต่างกันไปตามโหมด เมื่อเปิดไฟล์จะเริ่มที่โหมด Normal กด i เพื่อเข้าโหมด Insert แล้วพิมพ์ กด Esc เพื่อกลับ และกดโคลอน [:] เพื่อเข้าโหมด Last-line แล้วบันทึกและออก

โหมดปุ่มที่ใช้เข้าหน้าที่
โหมด Normal (โหมดคำสั่ง)เปิด vi แล้วจะอยู่ในโหมดนี้ · กด Esc จากโหมดอื่นย้ายเคอร์เซอร์ ลบ คัดลอก วาง เลิกทำ
โหมด Insert (โหมดพิมพ์ข้อความ)i a I A o Oพิมพ์ข้อความ ด้านล่างหน้าจอจะแสดง [-- INSERT --]
โหมด Last-line (โหมดบรรทัดสุดท้าย):บันทึก·ออก·แทนที่·ตั้งค่าหมายเลขบรรทัด ด้านล่างหน้าจอจะขึ้น :
โหมด Visualv V Ctrl-vเลือกช่วงแล้วลบ·คัดลอก·พิมพ์พร้อมกันหลายบรรทัด

วิธีเปิดไฟล์จากคอนโซลมี 3 แบบ

คำสั่งคำอธิบาย
vi ชื่อไฟล์เปิดไฟล์แล้วเริ่มที่โหมด Normal ถ้าไม่มีไฟล์นั้นจะสร้างใหม่และแสดง [New]
vi +20 ชื่อไฟล์เปิดไฟล์โดยวางเคอร์เซอร์ไว้ที่บรรทัด 20
view ชื่อไฟล์= vi -Rเปิดแบบอ่านอย่างเดียว ถ้าแก้ไขจะมีคำเตือน [W10] และถ้าบันทึกจะขึ้น [E45]

ถ้าพิมพ์ [vi httpd.conf] บนเซิร์ฟเวอร์เสมือนด้านล่าง vi จะเปิดขึ้น และเมนูด้านซ้ายจะเปลี่ยนเป็นคำสั่งภายใน vi กดชิปเพื่อส่งปุ่มนั้นเข้าไปในหน้าจอ หรือจะพิมพ์ด้วยคีย์บอร์ดเองก็ได้

ตัวจำลองคำสั่ง vivim 8.2
[root@server work]#
ทำงานเฉพาะในเบราว์เซอร์และไม่แตะต้องไฟล์จริง เปิดไฟล์ด้วย vi httpd.conf ก่อน แล้วเมนูด้านซ้ายจะเปลี่ยนเป็นคำสั่งภายใน vi กดชิปเพื่อพิมพ์ปุ่มนั้นลงในหน้าจอ หรือจะพิมพ์ด้วยคีย์บอร์ดเองก็ได้ เมื่อบันทึกและออกด้วย :wq แล้วจะตรวจผลด้วย cat ได้ ถ้าสับสนให้กด [Start over] ส่วนปุ่มที่เหลือในตารางลองพิมพ์ดูเองได้

✅ สรุปคำสั่ง vi ของ Linux

🔲 ย้ายเคอร์เซอร์

ปุ่มคำอธิบาย
h j k l← ↓ ↑ →ย้ายทีละตัวอักษร ใช้ปุ่มลูกศรก็ได้
0 · ^ต้นบรรทัด (0) · ตัวอักษรแรกในบรรทัดที่ไม่ใช่ช่องว่าง (^)
$ท้ายบรรทัด
w · b · eต้นคำถัดไป · ต้นคำก่อนหน้า · ท้ายคำถัดไป
gg · Gบรรทัดแรก · บรรทัดสุดท้ายของไฟล์
20Gเหมือนกับ :20ไปที่บรรทัด 20 เปลี่ยนตัวเลขเพื่อไปยังบรรทัดที่ต้องการ
H · M · Lบรรทัดบนสุด · กลาง · ล่างสุดของหน้าจอ
Ctrl-f · Ctrl-bเลื่อนลง · ขึ้นหนึ่งหน้าจอ
Ctrl-d · Ctrl-uเลื่อนลง · ขึ้นครึ่งหน้าจอ

🔲 เข้าสู่โหมด Insert

ไม่ว่าจะเข้าด้วยปุ่มไหน เมื่อพิมพ์เสร็จให้กด Esc ส่วน cw·cc·C·s จะลบแล้วเข้าโหมด Insert ทันที เวลาแก้คำหรือบรรทัดจึงเร็วกว่าการกด x กับ i แยกกัน

ปุ่มคำอธิบาย
i · aเริ่มพิมพ์หน้าเคอร์เซอร์ (i) · หลังเคอร์เซอร์ (a)
I · Aเริ่มพิมพ์ที่ต้นบรรทัด (I) · ท้ายบรรทัด (A)
o · Oสร้างบรรทัดว่างด้านล่าง (o) · ด้านบน (O) แล้วเริ่มพิมพ์
cwลบจากเคอร์เซอร์ถึงท้ายคำแล้วเริ่มพิมพ์
ccลบทั้งบรรทัดแล้วเริ่มพิมพ์
Cลบจากเคอร์เซอร์ถึงท้ายบรรทัดแล้วเริ่มพิมพ์
sลบตัวอักษรหนึ่งตัวแล้วเริ่มพิมพ์
Escจบการพิมพ์แล้วกลับไปโหมด Normal

🔲 ลบ·แก้ไข

ถ้าใส่ปุ่มเคลื่อนที่ต่อท้าย d ช่วงนั้นจะถูกลบ dw คือคำ dd คือบรรทัด dG คือจนถึงท้ายไฟล์ และถ้าใส่ตัวเลขไว้ข้างหน้าจะทำซ้ำตามจำนวนนั้น

ปุ่มคำอธิบาย
x · Xลบตัวอักษรที่เคอร์เซอร์ (x) · ตัวอักษรหน้าเคอร์เซอร์ (X) 3x คือ 3 ตัวอักษร
dwลบจากเคอร์เซอร์ถึงท้ายคำ
ddลบบรรทัด 3dd คือ 3 บรรทัด
D= d$ลบจากเคอร์เซอร์ถึงท้ายบรรทัด
d0ลบจากต้นบรรทัดถึงหน้าเคอร์เซอร์
dGลบจากบรรทัดปัจจุบันถึงท้ายไฟล์
:6d · :6,10dลบบรรทัด 6 · ลบบรรทัด 6–10
Jนำบรรทัดล่างมาต่อท้ายบรรทัดปัจจุบัน
rเปลี่ยนตัวอักษรที่เคอร์เซอร์เป็นตัวที่พิมพ์ถัดไป
~สลับตัวพิมพ์ใหญ่·เล็ก
>> · <<ย่อหน้าบรรทัด · ลดการย่อหน้า

🔲 คัดลอก·วาง·เลิกทำ

สิ่งที่ลบไปก็วางด้วย p ได้เหมือนสิ่งที่คัดลอก ถ้ากด dd แล้วตามด้วย p บรรทัดจะย้ายลงไปด้านล่าง u ย้อนกลับได้หลายขั้น และ Ctrl-r จะทำซ้ำสิ่งที่เลิกทำไป

ปุ่มคำอธิบาย
yyคัดลอกบรรทัด 3yy คือ 3 บรรทัด
ywคัดลอกจากเคอร์เซอร์ถึงท้ายคำ
p · Pวางสิ่งที่คัดลอกไว้ด้านล่าง (p) · ด้านบน (P) ถ้าคัดลอกเป็นหน่วยตัวอักษรจะวางหลัง · หน้าเคอร์เซอร์
:1 co 7เหมือนกับ :1 t 7คัดลอกบรรทัด 1 ไปไว้ใต้บรรทัด 7
:1,7 co 8คัดลอกบรรทัด 1–7 ไปไว้ใต้บรรทัด 8
:1 m 8ย้ายบรรทัด 1 ไปไว้ใต้บรรทัด 8
uเลิกทำ กดหลายครั้งจะย้อนกลับไปเรื่อยๆ
Ctrl-rทำซ้ำสิ่งที่เลิกทำไป
.ทำการเปลี่ยนแปลงล่าสุดซ้ำ

🔲 ค้นหา·แทนที่

การแทนที่ทำในโหมด Last-line ถ้าไม่ระบุช่วงจะมีผลเฉพาะบรรทัดปัจจุบัน ถ้าใส่ [%] จะมีผลทั้งไฟล์ และถ้าไม่มี g ต่อท้าย จะเปลี่ยนเฉพาะตัวแรกของแต่ละบรรทัด

ปุ่มคำอธิบาย
/ข้อความค้นหาลงไปจากเคอร์เซอร์ เมื่อถึงท้ายไฟล์จะวนไปค้นต่อจากต้นไฟล์ [search hit BOTTOM, continuing at TOP]
?ข้อความค้นหาขึ้นไปจากเคอร์เซอร์
n · Nผลถัดไปในทิศทางเดียวกัน (n) · ทิศทางตรงข้าม (N)
*ค้นหาคำที่เคอร์เซอร์อยู่ลงไปด้านล่าง
:s/old/new/เปลี่ยน old ตัวแรกในบรรทัดปัจจุบันเป็น new
:s/old/new/gเปลี่ยน old ทุกตัวในบรรทัดปัจจุบันเป็น new
:%s/old/new/gเปลี่ยน old ทุกตัวในทั้งไฟล์เป็น new
:10,20s/old/new/gเปลี่ยน old ทุกตัวในบรรทัด 10–20 เป็น new
:%s/old/new/gcถามทีละรายการก่อนเปลี่ยน (y เปลี่ยน · n ข้าม · a ทั้งหมด · q เลิก)

🔲 บันทึก·ออก·หมายเลขบรรทัด

ปุ่มคำอธิบาย
:wบันทึก เมื่อเสร็จจะขึ้น [36L, 1094B written]
:w ชื่อไฟล์บันทึกเป็นชื่ออื่น ไฟล์เดิมยังอยู่ตามเดิม
:wq= :⁠x = ZZบันทึกแล้วออก
:qออก ถ้ามีการแก้ไขที่ยังไม่บันทึกจะขึ้น [E37: No write since last change]
:q!ออกโดยไม่บันทึก
:set nu · :set nonuแสดง · ซ่อนหมายเลขบรรทัด

✅ คอมเมนต์ทั้งคอลัมน์ในครั้งเดียวด้วยโหมด Visual Block ของ Vim

เวลาจะใส่ตัวอักษรเดียวกันไว้หน้าหลายบรรทัด ให้ใช้โหมด Visual Block แทนการกด i ทีละบรรทัด ในโหมด Normal ปุ่ม v ใช้เลือกช่วงทีละตัวอักษร Shift-v เลือกทีละบรรทัด และ Ctrl-v เลือกทีละคอลัมน์

แผนภาพโหมด Visual 3 แบบของ vim โหมด Visual ของ vim: แผนภาพ 3 แบบ

ต่อไปนี้คือลำดับการคอมเมนต์ทั้งก้อนในไฟล์ตั้งค่า วางเคอร์เซอร์ที่ตัวอักษรแรกของบรรทัดแรก กด Ctrl-v แล้วกด j ลงไปเพื่อเลือกบรรทัด จากนั้นกด I พิมพ์ # แล้วกด Esc

เริ่มโหมด Visual Block ใน vim
1. กด Ctrl-v ที่ตัวอักษรแรกของบรรทัดแรก แล้วจะขึ้น [– VISUAL BLOCK –]
เลือกบรรทัดด้วยเคอร์เซอร์ในโหมด Visual Block ของ vim
2. กด j ลงไปแล้วเลือกทุกบรรทัดที่จะใส่คอมเมนต์
พิมพ์ข้อความขณะแก้ไขแบบ Visual Block ใน vim
3. กด I แล้วพิมพ์ # จะเห็นแค่ที่บรรทัดแรก
แทนที่คอลัมน์ในโหมด Visual Block ของ vim เสร็จแล้ว
4. กด Esc แล้ว # จะถูกใส่ในทุกบรรทัดที่เลือก

การเอาคอมเมนต์ออกก็ทำแบบเดียวกัน วางเคอร์เซอร์บน # ของบรรทัดแรก กด Ctrl-v เลือกลงไปถึงด้านล่าง แล้วกด x คอลัมน์ที่เลือกจะถูกลบในครั้งเดียว ลองทำแบบเดียวกันได้ที่ vhost.conf ในตัวจำลองด้านบน

  • คำสั่ง vi, vim
  • คำสั่งประมวลผลข้อความ
  • โครงสร้างของ vi editor: แบ่งเป็นโหมด Normal, โหมด Insert และโหมด Last-line

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 2   +   7   =