

วันนี้ ได้ เผอิญอยากรู้ ว่า Vi Editor มันคืออะไร ก็เลยหาข้อมูลมา
VIM หรือ vi-improved เป็น vi เวอร์ชันเพิ่มความสามารถ แล้วก็มีให้ดาวน์โหลดไปใช้ได้แทบทุก OS มันจะมีฟังก์ชันหล่อๆเพิ่มขึ้นมาที่ vi ไม่มี เท่าที่ผมเห็นว่าสำคัญมีอยู่สองสามอย่าง
* Autocomplete อันนี้หล่อมากเลย ยอมรับ ทำได้หลายอย่าง เช่น
o ชื่อไฟล์ หรือ path ไปยังไฟล์ สะดวกมากเวลาต้องเขียนไฟล์ที่มันต้องระบุ path
o คำที่เคยพิมพ์มาแล้ว
o keyword ในภาษาเขียนโปรแกรม โดยมันเป็น context-sensitive ด้วย (Omni-completion) อันนี้อาจจะต้องลง plug-in เพิ่ม
* Multiple Tabs เปิด Tab หลายๆอันได้
* Visual Mode ทำให้การ คัดลอก ลบ แก้ไข เป็นเรื่องง่ายขึ้นมาก เลือกเป็นแบบ จุดเริ่มต้น-สิ้นสุด เป็นบรรทัด หรือเป็นคอลัมน์ได้ (อันหลังนี่เหมาะมากสำหรับไฟล์ข้อความที่ลักษณะเหมือนตาราง)
ตอน นี้ VIM เลยกลายเป็น text editor ที่ผมมักจะใช้แทน notepad ไปแล้ว :) ปัญหาจะเกิดอีกทีตอนใช้ภาษาไทย ซึ่งผมคิดว่าอย่าใช้ไฟล์ text ภาษาไทยกับ VIM เลยดีกว่า คนที่น่าจะมีปัญหานี้ที่สุดคงเป็นพวกเขียนเว็บ ..
หลัง จากอ่านบทความจำพวกแนะนำ vi หรือ vi สำหรับมือใหม่ มานับไม่ถ้วน ผมพบว่าคำสั่งพื้นฐานเท่าที่จะสามารถทำให้เราใช้ VIM แทน Notepad ได้ มีอยู่ไม่กี่ตัว ดังต่อไปนี้
ออกจากโปรแกรม
พิมพ์ :q!
: เป็นการบอกว่าจะมี command อื่นๆตามมา ส่วน q แปลว่าออก และ ! แปลว่าออกแบบบังคับ (ถ้าเราแก้ไขไฟล์มันจะไม่ยอมให้ออกธรรมดา)
หรืออาจจะใช้ :wq เป็นการ save แล้วออก
ถ้า save เฉยๆก็ :w myfilename
ไป Command Mode
กด Ctrl + [ หรือ Esc
เราควรอยู่ใน Command Mode ตลอดเวลาที่ทำงาน ใช้ Insert Mode เฉพาะเวลาจะพิมพ์เท่านั้น :)
เคลื่อน cursor ไปมา
ใช้ปุ่ม h j k l แทน ซ้าย ล่าง บน ขวา
ถ้าพบว่าจำยาก ลองมองตัว j ว่ามันเหมือนลูกศรชี้ลงล่าง! แล้วจะจำได้ (ได้มาจาก video youtube ซักอัน)
การเคลื่อนในระดับคำ
* w ไปคำต่อไป
* b คำก่อนหน้า
ระดับบรรทัด คล้ายๆกับ regex
* ^ ต้นบรรทัด
* $ ท้ายบรรทัด
ระดับ document
* gg ต้น document
* G ท้าย document
ไป Insert Mode
เข้าได้หลายแบบ แบบแรกควรรู้คือ a กับ i
* a ต่อหลัง cursor
* i วางหน้า cursor
และแบบที่สอง ที่หลังจากใช้สองอันแรกจนเจอปัญหาบางอย่างแล้วจะพบว่า Useful มาก คือ
* A หลังสุดของบรรทัด
* I หน้าสุด
และแบบสุดท้าย เป็นการแทรกบรรทัดว่างๆเข้าไป
* o แทรกบรรทัดใหม่ ใต้บรรทัดปัจจุบัน
* O แทรกบรรทัดใหม่ เหนือบรรทัดปัจจุบัน (So useful!)
ยกเลิก – Undo
กด u
อยาก Redo กด Ctrl+r
Autocomplete
* กด Ctrl + P เป็นการเติมจากคำก่อนหน้า
* กด Ctrl-x-f เป็นการเติมชื่อหรือพาธไปยังไฟล์ กด Ctrl-f ต่อจะวนรอบชื่อไฟล์ไปเรื่อยๆ
* กด Ctrl-x-o เป็น omni-completion อาจจะต้องลง plug-in เพิ่มสำหรับไฟล์บางแบบ (เช่น C++)
เพิ่มตัวบอกบรรทัด
:set ruler
Visual Mode
มีสามแบบ
* แบบเริ่มต้น - สิ้นสุด กด v
* แบบบรรทัด กด V
* แบบคอลัมน์ (Visual Block Mode) กด Ctrl + V
หลังจากกดแล้วจะใช้ cursor เลื่อนซ้ายขวาเพื่อ select ข้อความได้ ซึ่งหลังจาก select แล้วอาจจะทำอะไรได้หลายอย่าง เช่น
* ลบ กด d
* คัดลอก กด y (yank) เวลาจะเอาไปวางก็กด p หรือ P
* แทนที่ กด c แล้วพิมพ์คำตามเข้าไป แล้วกด enter (จะเห็นประโยชน์ตอนใช้ในแบบคอลัมน์)
* เพิ่ม tab ด้านหน้า (indent) กด >
ค้นหา
อันนี้ใช้บ่อยสุดๆ กด / แล้วพิมพ์ regular expression ของคำที่ต้องการค้น เช่น /search_key_word
นอก จากนี้ยังมีวิธีค้นหาแบบใช้ * คือเลื่อน cursor ไปเหนือคำที่ต้องการค้นหาแล้วกด * จะทำให้ VIM ทำ highlight ให้กับคำเดียวกันทุกคำในเอกสารนั้น เหมาะเวลาที่จะใช้เปลี่ยนชื่อตัวแปร หรือไล่โค้ด อะไรทำนองนั้น
แทนที่ – Replace
ใช้คำสั่ง :%s/before/after/gc
* ตัว c แปลว่า confirm คือให้ถามก่อนแทนที่
* ถ้าไม่มีตัว g มันจะแทนที่แค่บรรทัดละตัว
* before และ after เป็น regular expression ของตัวที่จะให้แทนก่อนและหลัง
* s เป็น substitute command
* % เป็นการบอกว่าแทนทั้งไฟล์ (จริงๆแล้วบอกเป็นเลขบรรทัดได้ แต่จะไม่ cover แล้วกัน)
จัดย่อหน้าให้สวยงาม
หลัง จาก save ไฟล์ไปแล้ว VIM จะฉลาดพอที่จะทำ syntax highlight สวยๆให้ดู รวมถึงจัดย่อหน้าให้ไฟล์ให้ถูกต้องตามประเภทไฟล์ (เช่นไฟล์ .c .cpp)
กด gg=G
Tabs
จำ เป็นเหมือนกันเวลาต้องเปิดสอง (หรือมากกว่า)ไฟล์คู่กัน จริงๆแล้ว VIM มันมี buffer ให้ใช้หลายๆอันด้วย แต่ผมว่า concept ของ Tab มันเข้าใจง่ายกว่านะ
* :tabnew path/to/filename เปิดไฟล์ หรือสร้างไฟล์ใหม่
* :tabc ปิด tab ปัจจุบัน
* gt และ gT ไปแทบต่อไป และก่อนหน้า
ที่มา : http://www.tod4yis.net/post/VIM-The-Basics.aspx
