Saturday, November 11, 2006

Vi cheat sheet

ที่มา: โทดทีครับจำไม่ได้ขอโทษเจ้าของบทความมากๆ ครับ
ลิ้งที่น่าสนใจ : http://suchart.wordpress.com/vi-vim/

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


Movement (Horizontal)
e : เลื่อนเคอเซอร์ไปทางขวาหนึ่งตัวอักษร
h : เลื่อนเคอเซอร์ไปทางซ้ายหนึ่งตัวอักษร
l : เลื่อนเคอเซอร์ไปทางขวาหนึ่งตัวอักษร
^ : ย้ายเคอเซอร์ไปอักษรแรกของบรรทัด
$ : ย้ายเคอเซอร์ไปอักษรสุดท้ายของบรรทัด
w : ไปที่ตัวอักษรแรกของข้อความถัดไป
e : ไปที่ตัวอักษรสุดท้ายของข้อความถัดไป
b : ถอยกลับไปที่อักษรแรกของข้อความ
( : เลื่อนถอยหลังครั้งละ1ประโยค (ประโยคภาษาอังกฤษซึ่งจบด้วย . ! ?)
) : เลื่อนไปข้างหน้า1ประโยค
{ : เลื่อนถอยไปที่บรรทัดที่ไม่มีข้อความ
} : เลื่อนไปที่บรรทัดที่ไม่มีข้อความ


Movement (Vertical)
k : เลื่อนขึ้น1บรรทัด
j : เลื่อนลง1บรรทัด
PGup : เลื่อนขึ้น1หน้า
PGDN : เลื่อนลง1หน้า
ตัวเลข + Shift + g : ไปบรรทัดที่(ตัวเลข)
/ ตัวอักษร : ค้นหา(ตัวอักษร) ถัดจากที่เคอเซอร์อยู่
n : ค้นหาต่อไป
Shift + n : ค้นหาย้อนกลับ


Insert mode
i : เข้าสู่ Insert mode (แทรกข้อความก่อนหน้าเคอเซอร์)
a : เข้าสู่ Insert mode (แทรกข้อความหลังเคอเซอร์)
Shift + i : เข้าสู่ Insert mode (เคอเซอร์อยู่ที่อักษรแรกของบรรทัด)
Shift + a : เข้าสู่ Insert mode (เคอเซอร์อยู่ที่อักษรสุดท้ายของบรรทัด)
o : แทรกบรรทัดใหม่ใต้บรรทัดที่เคอเซอร์อยู่ และเข้าสู่ Insert mode
Shift + o : แทรกบรรทัดใหม่เหนือบรรทัดที่เคอเซอร์อยู่ และเข้าสู่ Insert mode
cc : สร้างบรรทัดใหม่โดยแทนบรรทัดเดิม
c + ลูกศรซ้าย/ขวา : ลบตัวอักษรตามทิศทางของลูกศร
c + ลูกศร ขึ้น/ลง : เริ่มบรรทัดใหม่ โดยลบบรรทัดปัจจุบัน และบรรทัดบนหรือล่าง(ตามทิศทางของลูกศร)
Esc : ออกจาก Insert mode


Compound commands - The power of Vi
Motion

ตัวเลข + ลูกศร ซ้าย/ขวา : เลื่อนเคอเซอร์ไปตัวอักษรถัดไปตามจำนวนตัวเลข
ตัวเลข + ลูกศร ขึ้น/ลง : เลื่อนเคอเซอร์ไปบรรทัดถัดไปตามจำนวนตัวเลข
ตัวเลข + ( : เลื่อนไปประโยคที่ผ่านมาตามจำนวนตัวเลข
ตัวเลข + ) : เลื่อนไปประโยคถัดไปตามจำนวนตัวเลข
ตัวเลข + { : เลื่อนถอยไปที่บรรทัดที่ไม่มีข้อความ(ตามจำนวนตัวเลข)
ตัวเลข + } : เลื่อนไปที่บรรทัดที่ไม่มีข้อความ(ตามจำนวนตัวเลข)

Deletion
d + ตัวเลข + w : ลบคำตามจำนวนตัวเลข
d + } : ลบครั้งละย่อหน้า
d + ) : ลบประโยค

Change
c + ) : ลบประโยค แล้วเข้าสู่ Insert mode
c + } : ลบละย่อหน้า แล้วเข้าสู่ Insert mode


Cut + Paste
1. กด v เพื่อเข้าสู่ Visual mode
2. ย้ายเคอเซอร์เพื่อไฮไลท์ข้อความ
3. กด d เพื่อ cut, กด y เพื่อ copy ข้อความ
4. กด Shift + p เพื่อวางข้อความหน้าเคอเซอร์, กด p เพื่อวางข้อความหลังเคอเซอร์


Open, Save, Quit
:q ออกจากโปรแกรม(ต้องเซฟก่อน)
:q! ออกจากโปรแกรม
:w เซฟ
:x เซฟแล้วออกจากโปรแกรม
:wq เหมือน :x


Windowing
:sp + ชื่อไฟล์ : เปิดไฟล์ใหม่โดยแบ่งหน้าต่างเป็นครึ่ง (ถ้าไม่ใส่ชื่อไฟล์ จะแสดงผลไฟล์เดิมเป็น2หน้าต่าง)
Ctrl + w : สลับไปทำงานที่อีกหน้าต่าง
Close window : ปิดไฟล์ที่หน้าต่างหนึ่ง เพื่อรวมเป็นหน้าต่างเดียว


Commands modify text
x : ลบตัวอักษรในตำแหน่งที่เคอเซอร์อยู่
Shift + j : ดึงบรรทัดถัดไปขึ้นมาเป็นบรรทัดเดียวกับบรรทัดปัจจุบัน
r + ตัวอักษร : แทนที่ด้วยตัวอักษรในตำแหน่งที่เคอเซอร์อยู่
dd : ลบบรรทัดที่เคอเซอร์อยู่
d + ลูกศร : ลบ1ตัวอักษร ไปตามทิศทางของลูกศร (สามารถใส่ตัวเลขก่อนคำสั่ง เพื่อลบตามจำนวนตัวเลขได้)
u : ย้อนกลับการกระทำ (Undo)
. : ทำซ้ำคำสั่งล่าสุด


Search/Replace
:/ข้อความ : ค้นหาข้อความ N (Next) , Shift + N (Previos)
:s/ข้อความ1/ข้อความ2/ : ค้นหาข้อความ1 และแทนที่ด้วย ข้อความ2 ในบรรทัดที่เคอเซอร์อยู่ (เฉพาะข้อความแรก)
:s/ข้อความ1/ข้อความ2/g : ค้นหาข้อความ1 และแทนที่ด้วย ข้อความ2 ในบรรทัดที่เคอเซอร์อยู่ (ทุกข้อความ)
:%s/ข้อความ1/ข้อความ2/g : ค้นหาข้อความ1 และแทนที่ด้วย ข้อความ2 (ทุกข้อความ)
:%s/ข้อความ1/ข้อความ2/gc : ค้นหาข้อความ1 และแทนที่ด้วย ข้อความ2 (ทุกข้อความ ครั้งละข้อความ สามารถเลือกได้)

No comments:

Post a Comment

Popular Posts