vi โดยย่อ

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

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

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

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

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

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

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

สถานะการลบ

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

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

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

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

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

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

หมวดค้นหา

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

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

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

   y4w = คัดลอก 4 คำ

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

คำสั่งพิเศษ

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

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

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

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

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

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

มีชุดคำสั่งพิเศษที่น่านำมาใช้ คือ

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

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

อ้างอิง
ปรับปรุงจาก debianclub.org: vi โดยย่อ

ปรับแต่ง vim ด้วย ~/.vimrc

ปรับแต่งไฟล์ ~/.vimrc ให้ตรงกับความถนัด (ถ้าให้มีผลทั้งระบบก็เป็น /etc/vim/vimrc.local)
$ vi ~/.vimrc

syntax on
ให้ syntax มีสี
set noautoindent
ปิดการเยื้องอัตโนมัติ เนื่องจากค่อนข้างรำคาญเวลาใช้งานหมวดคัดลอกแล้วแปะ
set tabstop=4
ตั้งค่า tab ให้กว้างเท่ากับ 4 อักขระ
set ruler
ให้มีตัวบอกตำแหน่ง แถวและสดมภ์ ทางล่างขวาของจอภาพ
set comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,f://
ยกเลิกหมายเหตุอัตโนมัติ

เอามาจาก

เกร็ด vim อีกรอบ

ปกติ vim จะตีความข้อมูลด้วยค่า locale ของเครื่อง
เช่นถ้าตั้งค่า locale เป็น utf-8 ด้วยคำสั่ง
# dpkg-reconfigure locales
แล้วตั้งเป็น th_TH.utf8 เวลาเราเรียกใช้ vim เราจะสามารถใช้งานภาษาไทยที่เข้ารหัสเป็น utf8 ได้โดยทันที

ปัญหาคือ ถ้าเรามีบางไดเรคทอรี่ที่เข้ารหัสข้อมูลด้วยรหัสอื่น เช่น tis620
เราจะไม่สามารถใช้งานภาษาไทยได้
วิธีแก้คือ

  1. สั่งงาน vim ด้วยตัวแปร env LANG เป็นค่า locale ที่ต้องการ
    # LANG=th_TH.tis620 vim FILENAME
  2. ตั้งค่าตัวแปร encoding เป็น thai
    :set enc=thai
  3. ตั้งค่าตัวแปร termencoding เป็น utf-8
    :set termencoding=utf-8

ด้วยวิธีนี้ เราสามารถแก้ไขไฟล์ที่เข้ารหัสเป็น tis-620 ได้ครับ

หมายเหตุ
ถ้าท่านใดทราบวิธีทำให้เป็นอัตโนมัติผ่าน vimrc รบกวนช่วยเสริมด้วยนะครับ
( ผมหาพบที่ google cache แต่อ่านไม่ค่อยเข้าใจ )

เพิ่มเติม
ที่ codenone มีคุยเรื่อง vimrc ด้วย :)