แก้ไขบทความ

รบกวนคุณเทพช่วยแก้ไขเรื่อง vi โดยย่อ ให้เป็นดังนี้ครับ

---

ปรับปรุงครั้งที่ 1 : 50-09-06

กลับมาช่วยกันซ่อมสร้างบทความกันใหม่นะครับ

สรุปคำสั่ง vi โดยย่อ จาก vi manual

การเลื่อนเคอร์เซอร์

  • h, [<-] = ไปซ้าย
  • l, [SPACEBAR] = ไปขวา
  • k, - = ขี้นบน
  • j, + = ลงล่าง
  • b = ซ้าย 1 คำ
  • w = ขวา 1 คำ
  • 0, ^ = ต้นบรรทัด
  • $ = ท้ายบรรทัด
  • ( = ต้นประโยค
  • ) = ท้ายประโยค
  • { = ต้นย่อหน้า
  • } = ท้ายย่อหน้า
  • [RETURN] = บรรทัดต่อไป
  • H = ต้นหน้า
  • M = กลางหน้า
  • L = ท้ายหน้า
  • G = ท้ายไฟล์
  • ^f = เลื่อนลง 1 หน้า
  • ^b = เลื่อนขึ้น 1 หน้า
  • ^d = เลื่อนลงครึ่งหน้า
  • ^u = เลื่อนขึ้นครึ่งหน้า

ใช้ร่วมกับตัวเลข

  • n? = ปฏิบัติคำสั่ง ? จำนวน n ครั้ง
     3j = ลง 3 บรรทัด
     4h = ซ้าย 4 อักขระ
     5w = ขวา 5 คำ
     1G = บรรทัดแรกของไฟล์
    
    

การยกเลิกสถานะ

เนื่องจาก vi เป็นเอดิเตอร์แบบมีสถานะ จึงต้องมีการเข้าสู่สถานะต่าง ๆ และการออกจากสถานะนั้น ๆ

  • [ESC], ^[ = ยกเลิกสถานะอื่นๆ เพื่อกลับสู่สถานะปกติ

สถานะการลบ

  • x = ลบ 1 อักขระ
  • dw = ลบตั้งแต่เคอร์เซอร์จนถึงต้นคำหน้า
  • d$, D = ลบตั้งแต่เคอร์เซอร์จนถึงท้ายบรรทัด
  • dL = ลบตั้งแต่บรรทัดปัจจุบันจนถึงท้ายจอภาพ
  • dh = ลบ 1 อักขระก่อนถึงเคอร์เซอร์
  • dd = ลบบรรทัดปัจจุบัน
  • dG = ลบจากบรรทัดปัจจุบันจนถึงท้ายไฟล์
  • d1G = ลบจากบรรทัดปัจจุบันจนถึงต้นไฟล์
  • J = join เชื่อมบรรทัดถัดไปกับบรรทัดปัจจุบัน

ใช้ร่วมกับตัวเลข

   d3w, 3dw = ลบ 3 คำ
   5dd, 4dj = ลบ 5 บรรทัด จากบรรทัดปัจจุบัน 
               ( 4dj=ลบบรรทัดปัจจุบัน และอีก 4 บรรทัดถัดไป )
   4dk = ลบบรรทัดปัจจุบัน และอีก 4 บรรทัดก่อนหน้า
   5Gdd = ลบบรรทัดที่ 5

การแทรกและแก้ไข

สถานะ : a=append=เติม, i=insert=แทรก, c=change=เปลี่ยน, o=open=เปิด, s=substitute=แทน, r=replace=แทนที่

  • i = แทรกอักษรก่อนเคอร์เซอร์
  • a = แทรกอักษรหลังเคอร์เซอร์
  • I = แทรกอักษรต้นบรรทัด
  • A = แทรกอักษรท้ายบรรทัด
  • o = แทรกบรรทัดว่างต่อจากบรรทัดปัจจุบัน
  • O = แทรกบรรทัดว่างก่อนหน้าบรรทัดปัจจุบัน
  • c$, C = เปลี่ยน = ลบเนื้อความตั้งแต่เคอร์เซอร์ไปจนท้ายบรรทัด พร้อมทั้งเตรียมเพิ่มข้อความ
  • cw = ลบ 1 คำ พร้อมทั้งเตรียมเพิ่มข้อความ
  • cc = ลบทั้งบรรทัด พร้อมทั้งเตรียมเพิ่มข้อความ
  • r = แทนที่ 1 อักขระใต้เคอร์เซอร์
  • R = แทนที่อักขระตั้งแต่ใต้เคอร์เซอร์เป็นต้นไป จนกว่าจะออกจากสถานะนี้
  • s = ลบ 1 อักขระ พร้อมทั้งเตรียมเพิ่มข้อความ
  • S = ลบบรรทัดปัจจุบัน พร้อมทั้งเตรียมเพิ่มข้อความ

ใช้ร่วมกับตัวเลข

   5inewtext = แทรก newtext 5 ครั้ง
   5rg = แทนที่ด้วย g 5 ตัว

หมวดค้นหา

  • / = ค้นหา
  • ? = ค้นหาย้อนกลับ
  • n, /[ENTER] = ค้นซ้ำ นับจากตำแหน่งปัจจุบันลงไป
  • N, ?[ENTER] = ค้นซ้ำย้อนกลับ นับจากตำแหน่งปัจจุบันขึ้นไป

คัดลอก, แปะ, ยกเลิก, ทำซ้ำ

  • yy, Y = คัดลอกบรรทัดปัจจุบัน
  • yw = คัดลอกคำปัจจุบัน
  • p = แปะลง หลังจากเคอร์เซอร์
  • P = แปะลง ก่อนหน้าเคอร์เซอร์

* การลบ จะมีการเก็บสิ่งที่ลบไว้ในความจำ ดังนั้น ถ้ามีคำสั่งแปะตามมา สิ่งที่แปะลงมาก็คือสิ่งที่เพิ่งถูกลบไปนั่นเอง

  • ddp = ลบบรรทัดปัจจุบัน และแปะลงทันที = การสลับบรรทัด
  • xp = การสลับคำ

ใช้ร่วมกับตัวเลข

   y4w = คัดลอก 4 คำ

ใช้ร่วมกับคำสั่งพิเศษ+ตัวเลข

  • :?t? = คัดลอกจากบรรทัด ? ไปบรรทัด ?
  • :?m? = ย้ายจากบรรทัด ? ไปบรรทัด ?
    :t5 = คัดลอกจากบรรทัดปัจจุบัน ไปบรรทัด 5
    :m5 = ย้ายจากบรรทัดปัจจุบัน ไปบรรทัด 5
    :9t5 = คัดลอกจากบรรทัด 9 ไปบรรทัด 5
    
    :9m5 = ย้ายจากบรรทัด 9 ไปบรรทัด 5
    
  • u = ยกเลิกการแก้ไขครั้งล่าสุด
  • U = ยกเลิกการแก้ไขทั้งหมด ในบรรทัดปัจจุบัน
  • . = ทำซ้ำการแก้ไขครั้งล่าสุด

คำสั่งพิเศษ

  • :wq, :x, ZZ = จัดเก็บและออกจากโปรแกรม
  • :w = จัดเก็บ
  • :w FILENAME = จัดเก็บลงในไฟล์ FILENAME
  • :w! = จัดเก็บ โดยละเลยข้อกำหนดของระบบ
  • :w! FILENAME = เขียนทับ FILENAME โดยไม่เตือน
  • :q = ออกจากโปรแกรม
  • :q! = ออกจากโปรแกรม โดยไม่เตือน
  • :! COMMAND = สั่งรัน COMMAND ของเชลล์
  • :e FILENAME = เปิดไฟล์ FILENAME
  • :e! FILENAME = เปิดไฟล์ FILENAME โดยไม่เตือนถึงการจัดเก็บไฟล์เก่า
  • :r FILENAME = แทรกไฟล์ FILENAME ตรงตำแหน่งเคอร์เซอร์ปัจจุบัน
  • :f, ^g = แสดงแถบสถานะ ตรงด่านล่างซ้ายมือ
  • :h, :help = แสดงความช่วยเหลือ (ออกจากหมวดช่วยเหลือด้วย :q )
  • :h COMMAND, :help COMMAND = แสดงความช่วยเหลือสำหรับคำสั่ง COMMAND
  • :se COMMAND, :set COMMAND = ตั้งค่าคำสั่ง COMMAND

ค้นหาและแทนที่

ยืมโครงสร้างมาจากคำสั่ง sed (stream editor) ในระบบยูนิกซ์

  • :1,$ s/old/new/g = ค้นหา old แทนที่ด้วย new เริ่มตั้งแต่ 1=ต้นไฟล์ จนถึง $=จบไฟล์ โดยกำหนดค่าการค้นเป็น g=global

เพิ่มเติม
ในการใช้ vi แบบใช้งานจริงจัง มักนิยมใช้ vim มากกว่า vi ซึ่งเก่ามากแล้ว (สำหรับเดเบียนคือแพกเกจ vim-full )
คำสั่งติดตั้งคือ
$ sudo aptitude install vim-full

และสั่งให้เป็น editor ปริยาย
$ sudo update-alternatives --config editor

เลือก /usr/bin/vim.full

ข้อเขียนเพิ่มเติมนี้จะอ้างอิงจากคู่มือของ vim เป็นหลักครับ

มีชุดคำสั่งพิเศษที่น่านำมาใช้ (นำมาจากคอมเมนต์ของคุณ tonkla ด้านล่างครับ) คือ

  • :set tabstop=4 = กำหนดแท็บเป็น 4 ช่องว่าง
  • :set expandtab = กำหนดให้ใช้ช่องว่างแทนแท็บ (จำนวนช่องว่างกำหนดจากคำสั่ง tabstop
  • :set autoindent = กำหนดย่อหน้าอัตโนมัติ
  • :set nu! = แสดงหมายเลขบรรทัด
  • :syntax on = แสดงโครงสร้างไฟล์เป็นสี

ซึ่งเราสามารถนำมาเขียนเป็นไฟล์ทรัพยากรที่กำหนดเป็นค่าปริยายในการใช้งาน คือไฟล์ vimrc
ถ้าให้มีผลต่อผู้ใช้ทุกคนคือไฟล์ /etc/vim/vimrc หรือถ้าให้มีผลต่อเราคนเดียวก็คือไฟล์ ~/.vimrc
การเขียนคำสั่งในไฟล์ vimrc ก็เขียนเหมือนกับการใช้คำสั่งพิเศษทุกประการ เพียงแต่ไม่ต้องใส่ colon(:) เท่านั้น เช่น
$ vi ~/.vimrc

set tabstop=4
set expandtab
set autoindent
set smartindent
set nu!
syntax on

คำสั่งพิเศษอื่น ๆ ขอท่านผู้อ่านช่วยเขียนเพิ่มเติมเป็นคอมเมนต์ให้ด้วยครับ

น่าจะแก้ blog ของตัวเองได้นะครับ หลังจาก login แล้ว

แก้บ่ได้ดอก แก้ได้แค่คอมเมนต์

อ้าวพอโพสต์เสร็จ แก้ได้เฉยเลย

ผมแก้ไปแล้วนะครับ

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้