Open Source

Vim เป็นโปรแกรมแก้ไขเอกสารตัวหนึ่งที่มีบทบาทมากบนโลกใบนี้ แม้ว่าการเรียนรู้การใช้งานมันจะค่อนข้างยากจนทำมือใหม่ถอดใจไปไม่น้อยก็ตาม แต่ด้วยความสามารถที่มากมายของมัน ก็ทำให้มันยังคงได้รับความนิยมอยู่เรื่อยๆ ในหมู่นักพัฒนาโปรแกรม

และเนื่องในโอกาสที่ Vim มีอายุครบ 20 ปีไปเมื่อวานนี้ (เวอร์ชันแรก: 2 พฤศจิกายน 1991) ผมจะพาคุณไปทำความรู้จักกับประวัติศาสตร์อันน่าสนใจของมันให้ดียิ่งขึ้นครับ

แรงบันดาลใจจาก vi

Vim นั้นได้รับแรงบัลดาลใจมาจาก vi ซึ่งเป็นโปรแกรมแก้ไขเอกสารแบบเต็มหน้าจอในยุคแรกๆ ของระบบ Unix โปรแกรม vi ถือกำเนิดขึ้นในปี 1976 โดย Bill Joy เนื่องจากในเวลานั้นยังมีโปรแกรมแก้ไขเอกสารที่เปิดเอกสารได้เต็มหน้าจออยู่ไม่มาก เขาได้พัฒนามันสำหรับเครื่องคอมพิวเตอร์ ADM-3A ซึ่งส่งผลต่อเอกลักษณ์ของ vi โดยตรง นั่นคือการใช้ปุ่ม h, j, k และ l เพื่อบังคับเคอร์เซอร์ (เนื่องจากเครื่อง ADM-3A ที่ไม่มีเมาส์ ก็ได้พิมพ์ปุ่มลูกศรไว้บนตำแหน่งนั้นเช่นกัน) โดยแรกสุด vi เป็นเพียงแค่โหมดหนึ่งของโปรแกรม ex ซึ่งเป็นโปรแกรมแก้ไขเอกสารแบบทีละบรรทัดที่เขาพัฒนาต่อยอดมาจาก ed อีกต่อหนึ่งเท่านั้น

ผังแป้นพิมพ์ของเครื่อง ADM-3A

หลังจากที่ Joy ได้รวมโปรแกรม vi เข้าไปในระบบปฏิบัติการ BSD และ System V ของ AT&T แล้ว การได้รับมาตรฐาน POSIX ก็ทำให้ vi ได้รับการติดตั้งมาพร้อมกับระบบ Unix ต่างๆ ไปโดยปริยาย แต่เนื่องจากโค้ดของ vi นั้นมีพื้นฐานมาจากโปรแกรม ed ของ AT&T ทำให้การแจกจ่ายซอร์สโค้ดไม่สามารถทำได้ โปรแกรมโคลนของ vi ที่เปิดซอร์สจึงถือกำเนิดขึ้นมา เช่น Stevie, Elvis

แล้วก็มาถึง Vim

ผู้พัฒนา Vim คือ Bram Moolenaar ในปี 1988 เขารู้สึกไม่พอใจกับ vi โคลนตัวอื่นๆ บนเครื่อง Amiga จึงได้นำ Stevie (ซึ่งเขาบอกว่าเป็น vi โคลนบน Amiga ที่ดีที่สุดในเวลานั้น) มาพัฒนาต่อเพื่อใช้งานส่วนตัว แต่เนื่องด้วยเสียงตอบรับที่ดีจากผู้ใช้รายอื่น ทำให้ Moolenaar ตัดสินใจเผยแพร่ Vim เวอร์ชัน 1.14 ให้แก่บุคคลทั่วไปในวันที่ 2 พฤศจิกายน 1991 โดยประกาศให้เป็นซอฟต์แวร์แบบไร้ลิขสิทธิ์ (copyleft)

ถึงเช่นนั้นก็ตาม Vim ยังเป็นซอฟต์แวร์เพื่อการกุศลอีกด้วย โดย Moolenaar ได้จัดตั้งมูลนิธิ ICCF Holland ซึ่งคอยให้ความช่วยเหลือเด็กยากไร้ในประเทศยูกันดา และเชิญชวนผู้ใช้โปรแกรมให้บริจาคสินทรัพย์เพื่อช่วยเหลือเด็กๆ เหล่านั้นอยู่เสมอ ดังที่จะเห็นได้จากหน้าแรกของโปรแกรม

หน้าจอต้อนรับของโปรแกรม Vim

อันที่จริงแล้ว ชื่อเดิมของ Vim นั้นย่อมากจาก Vi IMitation แต่ภายหลังได้เปลี่ยนเป็น Vi IMproved ในเวอร์ชัน 1.22 (ปี 1992) การพัฒนาเวอร์ชันนั้นมีอย่างต่อเนื่องเรื่อยมาจนถึงปัจจุบัน ณ วันที่เขียนนี้ Vim ก็ได้เดินมาถึงเวอร์ชัน 7.3.460 แล้ว ซึ่งนอกจากความสามารถที่เหนือชั้นกว่า vi ต้นฉบับ Vim ยังรองรับระบบปฏิบัติการต่างๆ อย่างมากมาย เช่น Windows, Linux, Mac OS X, QNX อีกด้วย

ยิ่งไปกว่านั้น ด้วยความที่โปรแกรมโคลนของ vi ได้รับความนิยมอย่างมาก ก็ทำให้ “vi” กลายเป็นคำสามัญในการเรียกแทนกลุ่มโปรแกรมโคลนของ vi ทั้งหมดด้วย ถึงแม้ว่าเครื่องนั้นจะไม่สามารถติดตั้ง vi ต้นฉบับได้ก็ตาม

ทำไมต้อง Vim

แม้ว่าการเรียนรู้การใช้งาน Vim จะยุ่งยากไปบ้าง แต่ด้วยความสามารถอันหลากหลายของมัน ก็ทำให้โปรแกรมเมอร์จำนวนไม่น้อยเลือกใช้ Vim เป็นโปรแกรมหลักได้ไม่ยากนัก ความสามารถเด่นๆ ของมันเช่น

  • ความสามารถในการจัดหน้าจอเพื่อแสดงผลเอกสารหลายๆ เอกสารพร้อมกัน
  • การแบ่งโหมดระหว่างโหมดแก้ไขกับโหมดเลื่อนดูเอกสาร
  • ปุ่มคำสั่งต่างๆ ในการเลื่อน/แก้ไขเอกสารอย่างรวดเร็ว
  • มาโครที่สามารถจดจำและทำซ้ำลำดับการกดปุ่มในรูปแบบต่างๆ
  • ระบบค้นหาด้วย regular expression ที่ทรงพลัง
  • ตัวโปรแกรมสามารถทำงานได้บนระบบที่หลากหลาย ตั้งแต่ Linux ยัน Windows

ตัวอย่างการใช้ Vim เปิดหลายหน้าจอ ภาพจาก vi-improved.org

แม้ว่า Vim จะมีอายุครบ 20 ปีแล้ว แต่ด้วยการพัฒนาอย่างต่อเนื่องถึงทุกวันนี้ ก็ทำให้ Vim ครองใจโปรแกรมเมอร์มาได้เสมอมา และไม่มีทีท่าว่าจะแผ่วเบาลงแต่อย่างใดครับ

ถ้าใครต้องอยู่กับการแก้ไขเอกสารเป็นประจำแล้ว ผมขอแนะนำให้ลองปันใจมาทำความรู้จักกับ vi บ้างก็ดีครับ แม้ว่าภาพภายนอกที่อาจดูเข้าใจยากจนหลายคนยอมแพ้ แต่ถ้าคุณได้ลงไปทำความรู้จักอย่างลึกซึ้งแล้ว ไม่แน่ว่า คุณอาจจะเจอโปรแกรมที่ถูกใจจนอยากใช้งานทุกวันก็เป็นได้

เรียบเรียงจาก: Ars Technica

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

สรุปว่า Vim ได้แรงบันดาลใจจาก vi ที่เป็นโหมดของ ex ที่พัฒนาต่อมาจาก ed

ชื่อจะสื่อความหมายได้ตรงกันไปถึงไหน !!!

  • ทำให้การแจกจ่ายซอร์สโค้ดไม่สามรถทำได้

สามารถ

ก่อนหน้า ed ยังมี qed (quick edit) อีกนะครับ

เรื่องที่เหมือนเป็นตลกร้ายคือ Bill Joy ต้นตำรับ vi กลับไม่ยอมใช้ vi ซะหนิ (ใช้ ed แทน) เพราะว่ามัน variant มากเกินไป ย้ายเครื่องทีแล้วใช้งานไม่ถูก

ตั้งแต่ใช้ Vim มา ไม่เคยอ่านข้อความต้อนรับเลย เพิ่งเห็น "Help poor children in Uganda!" ก็วันนี้

Vim ทรงพลังมากครับ ถ้าใช้คล่องๆ แล้วจะช่วยลด micro movement ได้เยอะมาก อีกทั้งยังมีปลั๊กอินสำหรับภาษาและเฟรมเวิร์คใหม่ๆ ออกมาอยู่เรื่อยๆ แต่ถ้าจะเอาให้เทพจริงๆ ต้องปรับแต่งกันเยอะน่าดู ตอนนี้มี "Sublime Text 2" ที่เอาความสามารถเด่นๆ ของ Vim มารวมกับ TextMate และแก้ไขข้อจำกัดต่างๆ ของ Vim โดยเฉพาะที่เกี่ยวกับ GUI แถมยังทำให้การปรับแต่งสะดวกขึ้นกว่าเดิมมากๆ

ข้อเสียที่โดดเด่นที่สุดของ Vim น่าจะเป็นว่าใช้แล้วติด ทำให้ปรับตัวเข้ากับ editor ตัวอื่นได้ยาก แถมยังต้องเผลอกด Esc บ่อยๆ อีก ฮา

ชอบมากครับ Vim
editor ใน eclipse ก็ลง plugin vim ไว้เหมือนกันครับ
พอใช้คล่องแล้วแทบไม่ต้องขยับมือออกจากคีย์บอร์ดไปจับเม้าส์เลย

shinosuke Thu, 03/11/2011 - 23:52

เป็น editor หลักที่ใช้เขียนโปรแกรมตอนนี้เลยครับ

ออกจะเกือบนอกเรื่องแต่ผมดันติดกับ Editor อย่าง Editplus อยู่ครับ

ล่าสุดหลุดจาก Nodepad++ (ที่ย้ายมาเพราะ FOSS) ไปใช้ Komodo Edit (Komodo IDE ย่อส่วน และเป็น FOSS เหมือนกัน) เพราะตอนใช้ Ubuntu ไปติดกับ Geany แล้ว เลยต้องมีพวก Autocomplete มานิดนึง

โดย Default แล้ว Komodo Edit ใช้ง่ายแบบแทบไม่ต้องตั้งค่าอะไรเลย ถือว่าสบายและรองรับหลายแพลตฟอร์มเหมือนกันครับ

แต่จริงๆ สาเหตุหลักคือ Geany พอ Port มาใช้ Windows + GTK+ บน Windows แล้วไม่รอดครับ อืดค้างไปเลย /:3

สรุป ไม่ชินกับ vi บน Ubuntu เลยใช้ Geany ส่วน Windows ใช้ Komodo Edit

Komodo Edit ผมไม่ชอบตรงที่พอกด tab แล้วมันกลายเป็นใส่ space หลายๆทีไปแทนที่จะเป็น tab ยาวเหมือนชาวบ้านเขาครับ ไม่แน่ใจว่าปรับได้มั๊ย แต่พอรวมกับที่ว่ามันอืดกว่า Notepad++ ผมก็เลยกองไว้ในเครื่องนั่นเลย ใช่แค่เวลา ftp ไปเขียนโค้ดสดบนเว็บแค่นั้น (file manager มันรวมกับ ftp เนียนมาก ชอบตรงนี้)

เห็น logo แว่บแรก นึกถึงน้ำยาขัดห้องน้ำ

ไม่เคยรู้จักเลยจริงๆ โปรแกรมตัวนี้ ปกติถ้าเป็นงานเขียนบทความจะใช้ WhiteMonkey เพราะติดใจเสียงคีย์บอร์ด

agent5 Fri, 04/11/2011 - 03:20

ถ้าพิมพ์ 2 ภาษาจะใช้คำสั่งโดยไม่ต้องเปลี่ยนภาษา ให้เป็นภาษาอังกฤษก่อนยังไงอ้ะครับ

เคยใช้แล้วชอบมาตั้งแต่สมัยเริ่มใช้ Unix ใหม่ๆ จนเดี๋ยวนี้ก็ยังใช้อยู่ ถึงจะไม่ค่อยคล่องเพราะนานๆ เขียนโค้ดทีก็เหอะ เป็น editor ที่ powerful มาก แต่ตอนเริ่มอาจจะใช้ยากสักหน่อย

อยากดูว่า คนที่ใช้เก่งๆ เขาใช้กันยังไง ลองดูที่นี่ได้ครับ

VIM From Novice To Professional By: Derek Wyatt #Part 1

ซึ่งนอกจากความสามารถที่เหนือชั้นกว่า vi ตันฉบับ

ตันฉบับ => ต้นฉบับ

Vim ยังรองรับระบบฏิบัติการต่างๆ อย่างมากมาย เช่น Windows, Linux, Mac OS X, QNX อีกด้วย

ระบบฏิบัติการ => ระบบปฏิบัติการ

อ่านข่าวนี้แล้วรู้สึกว่าความ geek ลดลงเหลือ 0 หรือแทบจะติดลบ ไม่เคยรู้จัก Vim มาก่อนเลย

แต่พออ่านเม้นแล้ว ก็ อ้อออ เราไม่ใช่สาย developer นี่เอง ~~ ทีแรกเข้าใจว่ามันเป็น text editer เหมือนพวก MS Word :P