ผมกับ Vim : อยากคบเธอมากกว่าเพื่อนสนิท

Dew
Black Lens
Published in
3 min readOct 23, 2016

--

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

ผมเองใช้ Vim เป็นเรื่องเป็นราวตอนนี้ก็น่าจะปีกว่าแล้ว ผมคล่องไม้คล่องมือในการใช้ Vim อยู่ก็แค่คำสั่งพื้นฐานไม่กี่คำสั่ง อย่าง navigation ง่ายๆ j, k, h, l, w, b, e, G, gg , $, ^, 0 หรือการเข้า Insert mode ด้วย a, o, i หรือจะ copy, cut, paste, delete ด้วย y, p, d หรือจะ undo u, redo Ctrl+r หรือ substitute ด้วย :%s/foo/bar/g หรือจะการ select ข้อความใน Visual mode ทั้งแนวตั้งหรือแนวนอน หรือการแบ่งหน้าจอ :split, :vsplit จนสามารถเขียนโค้ดในสไตล์ Golden Ratio ได้แบบนี้

ฟีเจอร์แบ่งจอของ Vim สามารถทำให้วันที่น่าเบื่อกลับมามีความหมายขึ้นมาได้อย่างไม่น่าเชื่อ

และอีกหลายอย่างที่เรียนรู้มาเรื่อยๆ แต่ก็ต้องบอกว่าผมเองก็ยังรู้เพียงเล็กน้อยมาก ยังเป็น beginner อยู่

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

เรื่องราวของเราสองคนเป็นมาอย่างไร เรารู้จักกันได้ยังไงและทำไมผมถึงกลายมาเป็นเพื่อนสนิทกับเธอได้นั้น ก็ต้องย้อนไปเมื่อกว่าสองปีที่แล้ว ผมได้ทำงานกับ พี่เอฟ Kittinun Vantasin ซึ่งตอนนั้นพี่เขาเป็น mobile team lead อยู่ที่ Taskworld พี่เอฟเขาใช้ Vim อยู่ก่อนแล้ว พี่เขาก็ชวนให้น้องในทีมได้ลองใช้ ผมก็เลยลง IdeaVim plugin ใน Android Studio เพื่อที่จะได้ลองใช้ Vim ตอนเขียนโค้ด (ตอนนั้นผมเพิ่งเข้าทีม Android ที่ Taskworld)

พี่เอฟ ผู้จุดประกายการใช้ Vim

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

เก้ๆ กังๆ

พอเป็นแบบนี้มันก็มีผลให้เราทำงานช้าลงเพราะ Vim มันลงอยู่ใน Android Studio พอเราทำงานได้ไม่คล่องตัวประกอบกับถ้ามีงานที่ต้องรีบทำ เราก็เลยต้อง disable IdeaVim ไป แต่ก็ยอมรับว่าช่วงแรก enable/disable กลับไปกลับมาอยู่หลายรอบ แต่สุดท้ายก็ใช้ไม่ถนัดมือสักที ในตอนนี้คงเหมือนว่าผมกำลังเริ่มเข้าไปทำความรู้จักกับสาวน้อย Vim แต่ก็ยังเก้ๆกังๆบิดตัวไปมา ทำอะไรไม่ค่อยถูก

แต่แล้วผมก็ได้เจออีกวิธีที่จะทำให้ผมสนิทกับน้อง Vim มากขึ้น ก็เป็นพี่เอฟอีกนั่นแหละที่เขาใช้ Vim กับ Google Chrome ตอนนั้นผมก็เลยลองไปลง Vimium ใน Google Chrome คราวนี้เหมือนจะทำให้ทุกอย่างดีขึ้น เพราะผมสามารถ scroll อ่านหน้าเว็บด้วยคำสั่งพื้นฐาน j, k และที่ชอบก็คือ Vimium สามารถใส่ label ให้กับลิงค์ในเว็บแล้วเราก็พิมพ์ข้อความตาม label เพื่อเปิดลิงค์นั้นได้เลย

กดปุ่ม f แล้ว Vimium จะใส่ label ให้กับลิงค์ในเพจ จะกดลิงค์ไหนก็พิมพ์ข้อความตาม label นั้นได้เลย ไม่ต้องง้อเมาส์แระ

Vimium ยังทำได้อีกหลายอย่างซึ่งผมเองก็ยังใช้ไม่หมด แต่สิ่งที่ผมได้ในครั้งนี้ก็คือผมเริ่มคุ้นเคยกับ navigation พื้นฐานของ Vim มากขึ้น สาเหตุที่ผมสามารถใช้ Vimium ได้โดยไม่รู้สึกว่าขัดต่อการใช้งานเพราะ Vimium เป็นเหมือนตัวช่วยในการ browse เว็บ ต่างจากตอนใช้ใน Android Studio ที่ IdeaVim จะทำงานอยู่ตรง editor ซึ่งถ้าเป็นมือใหม่อย่างผมก็จะทำให้สับสนเวลาเขียนโค้ดได้พอสมควร

และแล้วผมก็เริ่มรู้จักกับสาวน้อยลึกลับคนนี้มากขึ้น หลังจากใช้ Vimium มาสักพักจนเริ่มคุ้นกับพวก navigation ง่ายๆแล้ว ผมก็เลยกลับมาใช้ IdeaVim ช่วยในการเขียนโค้ดอีกครั้ง ผมใช้ร่วมกับ Relative Line Numbers plugin ซึ่งเอาไว้โชว์จำนวนบรรทัดระหว่างบรรทัดปัจจุบันกับบรรทัดอื่นๆ ทำให้ navigate ด้วย Vim ได้สะดวก ผมเริ่มเรียนรู้คำสั่งใหม่ๆมากขึ้น คุ้นเคยมากขึ้นจนในที่สุดผมกับน้อง Vim ก็กลายเป็นเพื่อนสนิทกัน สนิทจนเวลาไปใช้ editor อื่นผมก็จะเริ่มด้วยการหาวิธีลง Vim ก่อน เวลาใช้พวกแอปจดบันทึกทั้งหลายบางทีก็เผลอกดคำสั่ง Vim เหมือนกัน ก็อย่างที่ผมบอกไปแล้วว่าเวลาไม่มีเธอมันรู้สึกแปลกๆ

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

พัฒนาความสัมพันธ์

สำหรับใครที่ยังไม่เคยใช้ ส่วนตัวก็อยากจะแนะนำให้ลองดูครับ แรกๆอาจจะยากแต่ก็เหมือนกับทุกอย่างแหละครับ ครั้งแรกๆย่อมที่จะยาก มันอยู่ที่เราได้ฝึกใช้บ่อยๆ ผมคิดว่าแต่ละคนก็คงมีวิธีฝึกของตัวเองหรืออาจจะลองกับ Vimium ใน Google Chrome เหมือนที่ผมทำก็ได้ครับ น่าจะอึดอัดน้อยกว่าสำหรับมือใหม่ หรือจะลองอ่าน vimtutor ก็ได้ พิมพ์เอาจาก terminal ได้เลย หรือจะลองแบบ interactive tutorial ผ่านเว็บ openvim หรือจะเล่นเกมส์ในเว็บ Vim Adventures ก็สนุกดี ทิปดีๆ เทคนิคเจ๋งๆ ลองดูได้ที่ Best of Vim Tips หรือถ้าใครอยากดูเดโมการใช้ vim แบบเทพๆ ก็แนะนำคลิปของน้องไทเลยครับ ถ้าใครมีข้อมูลเจ๋งๆ เกี่ยวกับการฝึกใช้ vim หรือมี tutorial ดีๆก็คอมเม้นท์ทิ้งไว้ได้ครับ

สำหรับ Android Developer ถ้าใช้ IdeaVim คล่องและใช้ร่วมกับ shortcut ต่างๆของ Android Studio ได้น่าจะทำให้เขียนโค้ดลื่นไหลคล่องมือไม่ต้องยกมือไปลากเมาส์บ่อยๆ ยิ่งถ้าใช้ Mechanical Keyboard กับเขียนภาษา Kotlin ด้วยแล้ว ความเห็นส่วนตัวผมรู้สึกว่ามันยิ่งมันส์ครับ

ในส่วนของ shortcut ของ Android Studio น้องทราวิสได้สรุปไว้ในบล็อกของเขา ลองเข้าไปติดตามกันได้ครับ

--

--