Tags:
Node Thumbnail

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 อีกต่อหนึ่งเท่านั้น

No Description

ผังแป้นพิมพ์ของเครื่อง 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 ซึ่งคอยให้ความช่วยเหลือเด็กยากไร้ในประเทศยูกันดา และเชิญชวนผู้ใช้โปรแกรมให้บริจาคสินทรัพย์เพื่อช่วยเหลือเด็กๆ เหล่านั้นอยู่เสมอ ดังที่จะเห็นได้จากหน้าแรกของโปรแกรม

No Description

หน้าจอต้อนรับของโปรแกรม 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

No Description

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

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

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

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

Get latest news from Blognone

Comments

By: hisoft
ContributorWindows PhoneWindows
on 3 November 2011 - 22:22 #350639
hisoft's picture

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

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

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

สามารถ

By: wiennat
Writer
on 3 November 2011 - 22:27 #350642 Reply to:350639

มาตรฐานน posix -> มาตรฐาน posix


onedd.net

By: neizod
ContributorTraineeIn Love
on 4 November 2011 - 00:16 #350680 Reply to:350639
neizod's picture

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

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

By: tonkla
Ubuntu
on 3 November 2011 - 22:25 #350641

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

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

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

By: p_warawit on 4 November 2011 - 12:30 #350782 Reply to:350641

+1 ตรงต้องเผลอกด esc บ่อยๆ

By: manaeeee on 5 November 2011 - 09:41 #350960 Reply to:350782

ทำไมต้องกด esc บ่อยๆ ด้วยอ่ะครับ อยากรู้เฉยๆ ขอบคุณครับ

By: thedesp
WriterAndroidWindows
on 3 November 2011 - 22:32 #350645
thedesp's picture

รอคนมาเปิดประเด็นดราม่ากับ emacs

By: atheist
AndroidUbuntuWindows
on 4 November 2011 - 00:55 #350685 Reply to:350645
เราจะไม่นอกรีตจาก Church of EMACS
ชาบูๆ
By: audy
AndroidUbuntu
on 3 November 2011 - 23:15 #350657
audy's picture

@neizod ขยันจริงๆ แฮะ

By: neizod
ContributorTraineeIn Love
on 4 November 2011 - 00:20 #350682 Reply to:350657
neizod's picture

ขี้เกียจมานาน ลงโทษตัวเองครับ ^^"

By: a2b2c517 on 3 November 2011 - 23:26 #350662

พึ่งเคยได้ยินชื่อนี้ก็วันนี้ล่ะครับ

By: Complexity on 3 November 2011 - 23:39 #350666

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

By: shinosuke
iPhoneAndroidUbuntuWindows
on 3 November 2011 - 23:52 #350671

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

By: mr_tawan
ContributoriPhoneAndroidWindows
on 4 November 2011 - 00:46 #350684
mr_tawan's picture

พยายามทำตัวให้ชินอยู่ครับ - -'


  • 9tawan.net บล็อกส่วนตัวฮับ
By: aimakung
AndroidUbuntuWindowsIn Love
on 4 November 2011 - 01:52 #350693

ออกจะเกือบนอกเรื่องแต่ผมดันติดกับ 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

By: jirayu
ContributorWindows PhoneBlackberrySymbian
on 4 November 2011 - 12:34 #350784 Reply to:350693

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


By: Eka-X
ContributoriPhoneAndroidIn Love
on 4 November 2011 - 02:06 #350694

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

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

By: lancaster
Contributor
on 4 November 2011 - 02:09 #350700

พยายามใช้หลายที สุดท้ายก็กลับไปตายรัง nano

By: hisoft
ContributorWindows PhoneWindows
on 4 November 2011 - 12:22 #350776 Reply to:350700
hisoft's picture

ผมด้วย XD

By: ammii
iPhoneAndroidWindows
on 4 November 2011 - 14:00 #350818 Reply to:350700
ammii's picture

+1 รู้สึก nano มันดูสวยกว่า vi (คิดไปเอง555+)

By: agent5 on 4 November 2011 - 03:20 #350704

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

By: p_warawit on 4 November 2011 - 08:54 #350723

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

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

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

By: nextman13
AndroidBlackberryUbuntuWindows
on 4 November 2011 - 09:42 #350728

ผมใช้เพราะต้องแก้ใข cron ใน linux

By: toooooooon
iPhoneWindows PhoneAndroidBlackberry
on 4 November 2011 - 09:53 #350731

ใช้ vi แทบทุกวันเลยครับ

By: panurat2000
ContributorSymbianUbuntuIn Love
on 4 November 2011 - 10:53 #350739
panurat2000's picture

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

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

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

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

By: diewland
AndroidWindows
on 4 November 2011 - 11:44 #350748
diewland's picture

ผมเพิ่งหัดใช้ตอนทำงานนี่แหละครับ อารมณ์เหมือนหัดพิมพ์ดีดใหม่เลย
แต่พอเริ่มคล่องแล้ว มันพิมพ์มันขึ้นจริงๆนะ

By: xcession
iPhoneAndroidUbuntu
on 4 November 2011 - 11:48 #350752

ใช้อยู่เรื่อยๆ แต่ไม่ค่อยบ่อย คงเพราะเรื่องภาษาไทย

By: PiKO
ContributorAndroid
on 4 November 2011 - 14:06 #350819

ใช้แล้วไม่ต้องจับ Mouse


:: DigiKin8 ::

By: boonkhao
ContributoriPhoneBlackberryUbuntu
on 4 November 2011 - 15:14 #350840
boonkhao's picture

สงสัยว่า อ่านว่า "วิม" หรือ "วี ไอ เอ็ม" ครับ เพราะว่า vi ผมเรียกว่า "วี ไอ"

By: neizod
ContributorTraineeIn Love
on 4 November 2011 - 18:31 #350893 Reply to:350840
neizod's picture

อันนี้ไม่ทราบฮะ เพราะ vim ผมก็เรียกรวมๆ ว่า vi

By: viroth
ContributorBlackberryIn Love
on 4 November 2011 - 16:24 #350858
viroth's picture

ไม่ค่อยได้ใช้บ่อยส่วนมากใช้ SciTE กับ gedit ผมคงโปรไม่พอสินะ

By: may3rd
iPhoneWindows PhoneAndroidUbuntu
on 4 November 2011 - 17:32 #350875 Reply to:350858

โปร ไม่โปร ไม่เกี่ยวกับโปรแกรมที่ใช้หรอกครับ อยู่ที่ผลงานมากกว่า

By: neizod
ContributorTraineeIn Love
on 4 November 2011 - 18:19 #350890 Reply to:350875
neizod's picture

+1

By: Virusfowl
ContributorAndroidSymbianWindows
on 10 November 2011 - 14:11 #352472

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

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


@ Virusfowl

I'm not a dev. not yet a user.