วิม

Vim หรือ วิม ย่อมาจาก Vi IMproved เป็นซอฟต์แวร์เสรี สำหรับเอดิเตอร์สำหรับแก้ไขไฟล์ มีรากฐานการพัฒนามาจากโปรแกรม vi ที่มีอยู่เดิม สามารถทำงานบนระบบปฏิบัติการหลายๆ ตัว Vim ถูกพัฒนาโดย แบรม มูลีนาร์ (Bram Moolenaar) ออกเผยแพร่เป็นครั้งแรกในปี พ.ศ. 2534 นับตั้งแต่นั้นมามีการเพิ่มเติมขีดความสามารถให้กับ Vim ความสามารถหลายอย่างออกแบบมาให้เป็นประโยชน์ในการแก้ไขซอร์สโค้ดโปรแกรม Vim ถูกออกแบบสำหรับทั้ง command line interface และ graphical user interface
โดยดังเดิม Vim ทำงานบนระบบปฏิบัติการ อะมีกา เท่านั้น จนกระทั่งมีการพัฒนา สนับสนุนการทำงานบนระบบปฏิบัติการหลายๆ ตัว ในปี พ.ศ. 2549 Vim เคยถูกโหวตให้เป็นหมวดหมู่เอดิเตอร์ยอดนิยมในนิตรยสาร Linux Journal
== เรียนรู้การใช้ Vim ==
Vim ถือเป็นโปรแกรมที่เรียนรู้ยากตัวหนึ่ง แต่ถ้าผู้ใช้จับหลักการพื้นฐานได้ ก็สามารถใช้งานได้คล่องตัวขึ้นมาก เพื่อช่วยให้เรียนรู้เร็วขึ้น จึงมีโปรแกรมสอนวิธีใช้ Vim โดยการพิมพ์คำสั่ง vimtutor บนบรรทัดคำสั่งในยูนิกซ์ หรือคลิกบนไอคอน Vim tutor บนวินโดวส์ นอกจากนี้ภายใน Vim เองก็มีคู่มือการใช้งานโดยละเอียดซึ่งปรากฏบนจอโดยการพิมพ์คำสั่ง :help user-manual ภายใน Vim
ผู้ใช้ยังสามารถอ่าน ระบบขอความช่วยเหลือ โดยการพิมพ์คำสั่ง :help
== โหมดการแก้ไข ==
วิธีการติดต่อกับผู้ใช้ใน Vim มีหลายโหมดการทำงาน การกดปุ่มบนแป้นพิมพ์จะให้ผลลัพธ์แตกต่างกันขึ้นอยู่กับโหมดการทำงานในปัจจุบัน ผู้ใช้สามารถเปลี่ยนไปมาระหว่างโหมดโดยให้แป้นพิมพ์ เหมาะกับผู้ที่สามารถพิมพ์สัมผัสได้ ไม่เหมือนกับเอดิเตอร์หลายตัวที่ต้องใช้เมาส์หรือเลือกคำสั่งในเมนูในการใช้งาน
Vim มีโหมดพื้นฐานอยู่ 6 โหมด และแยกย่อยจากโหมดพื้นฐานได้อีก 5 โหมด
=== โหมด normal ===
โหมด normal เป็นโหมดที่สามารถพิมพ์คำสั่งต่าง ๆ เช่นเพื่อเคลื่อนย้ายเคอร์เซอร์ ลบข้อความ เป็นต้น เวลาเริ่มต้นโปรแกรม Vim จะเข้ามาอยู่ในโหมดนี้
Vim เป็นโปรแกรมที่ใช้งานได้มีประสิทธิผลก็มาจากคำสั่งที่หลากหลายในโหมดนี้ ตัวอย่างเช่น ถ้าต้องการลบทั้งบรรทัดที่ตำแหน่งเคอร์เซอร์ ก็ใช้คำสั่ง dd ถ้าต้องการลบทั้งบรรทัดปัจจุบันและบรรทัดถัดไป ก็ใช้คำสั่ง dj โดยที่ d หมายถึงลบ ส่วน j เป็นปุ่มที่ใช้ในการเลื่อนเคอร์เซอร์ลง แทนที่จะใช้คำสั่ง dj ยังสามารถใช้คำสั่ง 2dd (หมายถึงทำคำสั่ง dd สองครั้ง) ก็ได้ เมื่อผู้ใช้เรียนรู้คำสั่งการเคลื่อนที่เคอร์เซอร์ต่าง ๆ และวิธีการนำคำสั่งมารวมกัน ก็สามารถใช้งานได้รวดเร็วกว่าเอดิเตอร์แบบที่ไม่มีโหมด
เมื่ออยู่ในโหมดนี้ สามารถเข้าไปในโหมด insert สำหรับแทรกข้อความได้หลายทาง เช่น ใช้ปุ่ม a (หมายถึง append หรือพิมพ์ต่อท้าย) หรือ i (หมายถึง insert หรือพิมพ์แทรก)
=== โหมดย่อย operator-pending ===
โหมดนี้เป็นโหมดย่อยของโหมด normal เมื่อผู้ใช้ป้อนคำสั่งและโปรแกรม Vim รอผู้ใช้เคลื่อนย้ายเคอร์เซอร์เพื่อให้คำสั่งสมบูรณ์ Vim ยังสามารถรับคำสั่งแทนการขยับเคอร์เซอร์ (เรียกว่า text object) เช่น aw หมายถึง คำ (word) as หมายถึง ประโยค (sentense) ap หมายถึงย่อหน้า (paragraph) ตัวอย่างการใช้เช่น คำสั่ง d2as จะลบประโยคปัจจุบันและประโยคถัดไป
=== โหมดย่อย insert normal ===
เป็นอีกโหมดย่อยของโหมด normal Vim จะเข้าโหมดนี้เมื่อผู้ใช้กดปุ่ม control-o ขณะอยู่ในโหมด insert Vim จะเข้ามาอยู่ในโหมด normal แต่จะรับเพียงคำสั่งเดียวแล้วกลับไปยังโหมด insert โดยอัตโนมัติ
=== โหมด visual ===
ในโหมดนี้เวลาเลื่อนเคอร์เซอร์จะทำให้ข้อความถูกไฮไลต์ตาม จนกว่าจะใส่คำสั่งเพื่อจัดการกับข้อความที่ถูกเลือกนั้น สามารถใช้คำสั่ง text object ในโหมดนี้ได้ด้วย
=== โหมดย่อย insert visual ===
เข้าโหมดนี้จากโหมด insert โดยกดปุ่ม control-o จะเข้าโหมดนี้เพื่อเลือกข้อความ เมื่อเลือกเสร็จจะกลับไปโหมด insert ตามเดิม
=== โหมด select ===
คล้ายกับการเลือกข้อความในไมโครซอฟท์วินโดวส์ สามารถใช้ปุ่มลูกศรหรือเมาส์เลือกข้อความ แต่เมื่อพิมพ์ตัวอักษรลงไป ข้อความเดิมที่ถูกเลือกจะถูกลบทิ้งไป และ Vim จะเข้าสู่โหมด insert พร้อมทั้งแทรกตัวอักษรที่เพิ่งพิมพ์เข้าไป
=== โหมดย่อย insert select ===
เข้าสู่โหมดนี้โดยการใช้เมาส์ลากบนข้อความ หรือใช้ปุ่มลูกศรร่วมกับปุ่ม shift เมื่อเลือกเสร็จ Vim จะกลับไปโหมด insert
=== โหมด insert ===
โหมดนี้ ข้อความต่าง ๆ ที่พิมพ์เข้าไป จะไปปรากฏอยู่ในข้อมูลไฟล์ เป็นโหมดที่ผู้ใช้คุ้นเคยเมื่อใช้โปรแกรมเอดิเตอร์อื่น ๆ
เวลาจะออกจากโหมด insert ไปยังโหมด normal ให้กดปุ่ม ESC
=== โหมดย่อย replace ===
โหมดนี้เป็นโหมด insert แบบพิเศษ แทนที่จะไปแทรกในเอกสาร ตัวอักษรที่พิมพ์เข้าไปจะไปทับของเก่า
=== โหมด command-line ===
ในโหมด command-line สามารถพิมพ์คำสั่งหนึ่งบรรทัด ซึ่งอาจเป็นคำสั่ง (ขึ้นต้นบรรทัดด้วยตัวอักษร :) ค้นหา (ขึ้นต้นด้วย / หรือ ?) หรือ คำสั่ง filter (ขึ้นต้นด้วย !)
=== โหมด ex ===
เหมือนโหมด command-line แต่สามารถพิมพ์คำสั่งได้เรื่อย ๆ จนกว่าจะใส่คำสั่ง visual
=== โหมด evim ===
เป็นโหมดพิเศษสำหรับ GUI โดย Vim จะจำลองตัวเองเหมือนกับเอดิเตอร์อื่นที่ไม่มีโหมด เอดิเตอร์จะเริ่มทำงานในโหมด insert ผู้ใช้สามารถใช้เมนู เมาส์ ปุ่มควมคุมบนแป้นพิมพ์ เช่น ปุ่มลูกศร สามารถเข้าโดยการพิมพ์ evim บนบรรทัดคำสั่งในยูนิกซ์ หรือ คลิกบนไอคอน evim ในวินโดวส์
== ความสามารถที่เพิ่มจาก vi ==
Vim สามารถทำงานจำลองได้ใกล้เคียงกับ vi และยังมีขีดความสามารถุเพิ่มเติมเช่น
มีรุ่นที่ทำงานบนระบบปฏิบัติการต่าง ๆ เช่น อะมีกา, ดอส, ไมโครซอฟท์วินโดวส์ รุ่นต่าง ๆ, โอเอสทู, ยูนิกซ์, ลินุกซ์ และ แมคโอเอสเท็น เป็นต้น
มีระบบความช่วยเหลือ
สามารถแก้ไขไฟล์ที่ถูกบีบอัดด้วย gzip, bzip2, ZIP และ tar
สนับสนุน regular expression
โหมด GUI
ขีดความสามารถเหมือน IDE
ใช้เมาส์ได้
แก้ไขไฟล์ทางรีโมตผ่านทาง ssh, ftp และ http
ตรวจสอบการสะกดคำ
สนับสนุน ยูนิโคด
สนับสนุน tabbed window
สามารถย้อนกลับได้ไม่จำกัด
== ดูเพิ่ม ==
vi
Emacs
== อ้างอิง ==
== แหล่งข้อมูลอื่น ==
โฮมเพจของ Vim 
คู่มือการใช้งาน 
ซอฟต์แวร์เสรี
ซอฟต์แวร์บนยูนิกซ์