Sunday, July 27, 2025

ประวัติศาสตร์ VIM

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

เราเพิ่งเผยแพร่หลักสูตรใหม่บนช่อง YouTube ของ freeCodeCamp.org ซึ่งจะช่วยให้คุณเชี่ยวชาญโปรแกรมแก้ไข VIM ไม่ว่าคุณจะเพิ่งเริ่มใช้ VIM หรือต้องการทำความเข้าใจให้ลึกซึ้งยิ่งขึ้น หลักสูตรนี้จะเตรียมทักษะที่จำเป็นให้คุณเพื่อใช้ VIM ได้อย่างมีประสิทธิภาพในกระบวนการพัฒนาของคุณ Andrew Brown จาก ExamPro เป็นผู้พัฒนาหลักสูตรนี้

เมื่อจบคอร์สนี้ คุณจะเข้าใจบริบททางประวัติศาสตร์และวิวัฒนาการของ VIM, มีความเชี่ยวชาญในคำสั่งและโหมดหลัก, เรียนรู้วิธีปรับแต่ง VIM ให้เหมาะกับขั้นตอนการทำงานส่วนตัวของคุณ, สำรวจคุณสมบัติขั้นสูง รวมถึงปลั๊กอินและการเขียนสคริปต์ด้วย VimScript, และพัฒนาความสามารถในการผสานรวม VIM เข้ากับสภาพแวดล้อมการพัฒนาต่างๆ

VIM ขึ้นชื่อเรื่องกราฟการเรียนรู้ที่สูงชัน และไม่ใช่เรื่องแปลกที่จะได้ยินเรื่องความหงุดหงิดของผู้เริ่มต้น อย่างไรก็ตาม ความท้าทายเบื้องต้นจะนำไปสู่ประสบการณ์การแก้ไขที่ทรงพลัง มีประสิทธิภาพ และผลิตภาพสูง หลักสูตรนี้มีเป้าหมายที่จะทำให้กราฟการเรียนรู้ของคุณราบรื่นขึ้น และเปลี่ยนประสบการณ์ VIM ของคุณจากที่น่ากลัวให้กลายเป็นที่น่าเพลิดเพลิน

ด้านล่างนี้คือคำอธิบายของส่วนหลักๆ ในหลักสูตรนี้ โดยเริ่มจากบทนำ (Prelude) จากนั้นจึงครอบคลุมคำสั่งหลักๆ


บทนำ (Prelude)

PDP-7 และการกำเนิดของ Unix

ในการทำความเข้าใจ VIM อย่างแท้จริง เราต้องเริ่มต้นด้วย PDP-7 ซึ่งเป็นมินิคอมพิวเตอร์จากยุค 1960 ที่ระบบปฏิบัติการ Unix ถือกำเนิดขึ้น การพัฒนา Unix นำไปสู่การสร้างโปรแกรมแก้ไขข้อความต่างๆ ที่เป็นรุ่นก่อนหน้าของ VIM Unix ได้นำเสนอเครื่องมือบรรทัดคำสั่งจำนวนมากที่เป็นรากฐานของการประมวลผลสมัยใหม่ และการจำลอง Unix 1 ช่วยให้เราเข้าใจสภาพแวดล้อมที่โปรแกรมแก้ไขข้อความยุคแรกเริ่ม เช่น Ed และ Ex ได้รับการพัฒนา

Ed และ EX คืออะไร?

Ed เป็นหนึ่งในโปรแกรมแก้ไขข้อความยุคแรกสุดสำหรับ Unix ซึ่งเป็นที่รู้จักในด้านความเรียบง่ายและอินเทอร์เฟซแบบคำสั่ง การมีส่วนร่วมโดยตรงกับ Ed ช่วยให้เราเข้าใจโครงสร้างคำสั่งและการทำงานของมัน ซึ่งเป็นรากฐานสำหรับโปรแกรมแก้ไขที่ตามมา

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

VI คืออะไร?

Vi หรือ visual editor เป็นการก้าวกระโดดที่สำคัญ โดยนำเสนอแนวทางการแก้ไขข้อความแบบหน้าจอ การสำรวจอินเทอร์เฟซและคำสั่งพื้นฐานของ Vi เผยให้เห็นว่าทำไมมันถึงได้รับความนิยมอย่างมากในหมู่นักพัฒนา

Vi ได้รับการปรับปรุงเพิ่มเติมเป็น VIM (Vi IMproved) ซึ่งต่อยอดจาก Vi ด้วยการปรับปรุงที่ครอบคลุม ทำให้เป็นโปรแกรมแก้ไขที่ทรงพลังสำหรับการพัฒนาที่ทันสมัย การเริ่มต้นด้วย Vimtutor ซึ่งเป็นบทเรียนแบบโต้ตอบ และการสำรวจระบบช่วยเหลือในตัวเป็นวิธีที่ยอดเยี่ยมในการทำความคุ้นเคยกับ VIM

วิวัฒนาการและเวอร์ชันของ VIM

การทำความเข้าใจเวอร์ชันต่างๆ ของ VIM และวิวัฒนาการตลอดเวลามีความสำคัญอย่างยิ่งต่อการทำความเข้าใจความสามารถในปัจจุบัน การทดลองกับ VIM เวอร์ชันต่างๆ ช่วยให้เราเข้าใจความแตกต่างและวิธีที่ VIM ปรับตัวเพื่อตอบสนองความต้องการของนักพัฒนา

นอกจากนี้ การเรียนรู้วิธีติดตั้งและใช้ GVim ซึ่งเป็น VIM เวอร์ชันกราฟิก ยังเป็นการแนะนำที่เข้าถึงได้ง่ายขึ้นสำหรับผู้ใช้ใหม่

การปรับแต่งและปลั๊กอิน

การค้นพบ VimScript ซึ่งเป็นภาษาสคริปต์ที่ใช้เพื่อขยายฟังก์ชันการทำงานของ VIM ช่วยให้คุณสามารถทำงานอัตโนมัติและสร้างคำสั่งที่กำหนดเองได้

การเจาะลึกไฟล์การกำหนดค่าของ VIM เราเรียนรู้ที่จะปรับแต่งสภาพแวดล้อมการแก้ไขของเรา การใช้โปรแกรมจัดการปลั๊กอินช่วยให้เราสามารถขยายความสามารถของ VIM ด้วยปลั๊กอินที่พัฒนาโดยชุมชน

Janus ซึ่งเป็นการแจกจ่าย VIM ยอดนิยมที่มาพร้อมกับการกำหนดค่าล่วงหน้าด้วยชุดปลั๊กอินและการตั้งค่า นำเสนอการตั้งค่าที่คล่องตัว การติดตั้งและทดลองใช้ Janus และการเรียนรู้วิธีใช้ Vim Plug ซึ่งเป็นโปรแกรมจัดการปลั๊กอินแบบเรียบง่าย ช่วยให้เราจัดการปลั๊กอิน VIM ได้อย่างมีประสิทธิภาพ

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

สุดท้าย Vimium ซึ่งเป็นส่วนขยายเบราว์เซอร์ที่นำการนำทางสไตล์ VIM มาสู่เว็บ แสดงให้เห็นถึงอิทธิพลของการผูกคีย์ของ VIM นอกเหนือจากการแก้ไขข้อความแบบดั้งเดิม


คำสั่งหลักของ VIM

การรวมเข้ากับ IDEs

การเรียนรู้วิธีที่ VIM สามารถรวมเข้ากับ Integrated Development Environments (IDEs) อื่นๆ จะรวมประสิทธิภาพของ VIM เข้ากับคุณสมบัติของ IDEs สมัยใหม่ การติดตั้งส่วนขยาย VIM ใน IDEs ยอดนิยม เช่น Visual Studio Code ช่วยให้เราใช้ความสามารถในการแก้ไขของ VIM ภายในสภาพแวดล้อมที่คุ้นเคย

การนำทางและการแก้ไขพื้นฐาน

การควบคุมปุ่มบนแป้นพิมพ์หลัก (home row keys) ซึ่งเป็นหัวใจสำคัญของโครงสร้างคำสั่งของ VIM ช่วยเพิ่มความเร็วและประสิทธิภาพในการแก้ไขของเรา VIM ทำงานในโหมดต่างๆ ซึ่งแต่ละโหมดออกแบบมาสำหรับประเภทงานที่เฉพาะเจาะจง และการทำความเข้าใจและการสลับระหว่างโหมดเหล่านี้มีความสำคัญอย่างยิ่งต่อการใช้งานที่มีประสิทธิภาพ การฝึกใช้โหมดปกติ (normal), โหมดแทรก (insert), โหมดเลือก (visual) และโหมดบรรทัดคำสั่ง (command-line) ช่วยให้เราคุ้นเคยกับลักษณะแบบโมดัลของ VIM

คำสั่งไฟล์และการเคลื่อนที่

การเรียนรู้คำสั่งสำหรับการเปิด บันทึก และปิดไฟล์เป็นสิ่งจำเป็นสำหรับการจัดการงานของเราใน VIM คำสั่งการเคลื่อนที่ช่วยให้เรานำทางข้อความได้อย่างมีประสิทธิภาพ โดยการเคลื่อนที่ตามทิศทาง (h, j, k, l) เป็นการเคลื่อนที่พื้นฐานที่ใช้ในการนำทางข้อความ

การฝึกใช้คำสั่งการเคลื่อนที่ตามทิศทางเพื่อเลื่อนผ่านข้อความอย่างรวดเร็ว รวมถึงการเรียนรู้คำสั่ง goto สำหรับการกระโดดไปยังตำแหน่งเฉพาะภายในไฟล์ ช่วยเพิ่มทักษะการนำทางข้อความของเรา

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

คำสั่งเพื่อนำทางไปยังจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดอย่างรวดเร็ว คำสั่งแทนที่สำหรับการแทนที่ข้อความอย่างรวดเร็ว และคำสั่งเลิกทำและทำซ้ำสำหรับการจัดการการเปลี่ยนแปลงอย่างมีประสิทธิภาพ ล้วนเป็นส่วนหนึ่งของชุดเครื่องมือ VIM หลักของเรา

การแก้ไขขั้นสูง

คำสั่งเปลี่ยน (change) ช่วยให้เราสามารถแทนที่บางส่วนของข้อความได้อย่างมีประสิทธิภาพ ในขณะที่คำสั่งลบ (delete) ช่วยให้เราลบข้อความได้อย่างรวดเร็ว

การคัดลอก (yanking) และวาง (pasting) ข้อความเป็นส่วนสำคัญในการทำงานใน VIM และการเรียนรู้คำสั่งแทรก (insert) และเพิ่ม (append) ช่วยให้เราสามารถเพิ่มข้อความในรูปแบบที่แตกต่างกัน

คำสั่งแทรกบรรทัด (line insert) สำหรับการแทรกบรรทัดข้อความอย่างมีประสิทธิภาพ คำสั่งค้นหา (find) สำหรับการค้นหาข้อความที่เฉพาะเจาะจงอย่างรวดเร็ว และคำสั่งแทนที่ (substitute) สำหรับการแทนที่รูปแบบข้อความ ล้วนเป็นเทคนิคการแก้ไขขั้นสูงที่เพิ่มประสิทธิภาพของเรา

คีย์นำ (leader key) เป็นทางลัดที่ปรับแต่งได้ซึ่งช่วยลดความซับซ้อนของลำดับคำสั่งที่ซับซ้อน และการควบคุมโหมดภาพ (visual mode) สำหรับการเลือกและจัดการข้อความมีความสำคัญอย่างยิ่งต่อการแก้ไขที่มีประสิทธิภาพ

คำสั่งการเยื้อง (indentation commands) ช่วยให้เราจัดรูปแบบโค้ดและข้อความได้อย่างเหมาะสม และการแบ่งหน้าต่าง (window splitting) ช่วยให้เราทำงานกับไฟล์หรือมุมมองหลายไฟล์พร้อมกัน

การทำความเข้าใจบัฟเฟอร์ (buffers) สำหรับการจัดการไฟล์ที่เปิดอยู่หลายไฟล์ และรีจิสเตอร์ (registers) สำหรับการจัดเก็บและเรียกใช้ข้อความเพื่อนำกลับมาใช้ใหม่ ช่วยเสริมความสามารถในการแก้ไขขั้นสูงของเราให้สมบูรณ์