Emacs diary EP1: จุดเริ่มต้น

Emacs diary EP1: จุดเริ่มต้น

ช่วง 2 เดือนที่ผ่านมาเป็นช่วงเวลาที่ผมเริ่มหัดใช้ Emacs จาก 0 เลยซึ่งจากใจคนที่อยู่บน Vim และ Jetbrains ecosystem มานาน ผมค้นพบว่า มันมีหลายๆ อย่างมากที่ Emacs ทำได้ดีในแบบของมันและหลายๆ ครั้งเป็นแรงบันดาลใจให้โปรแกรมอื่นๆ ด้วย

และจากชื่อที่มี EP1 แน่นอนครับว่า ผมไม่ได้มาเดี่ยวๆ เดี๋ยวมันจะพาลูกตามมาอีกเรื่อยๆ ก็คอยกดติดตามซีรีย์นี้กันได้ครับ สำหรับในตอนแรกนี้ ผมจะเล่าถึงวิธีการ ที่ผมศึกษาวิธีใช้ Emacs ในช่วงที่ผ่านมาครับ ซึ่งถ้าใครขี้เกียจรอตอนต่อๆ ไป ถ้าดูตามวาร์ปที่ผมลิสต์ไว้ก็ไปได้ไกลละครับ

อย่างแรกเลยวิธีติดตั้ง Emacs ใน Mac เหมือนจะง่ายแต่ต้องรู้

ปกติเวลาเราจะลง Software อะไรใน Mac ถ้าแบบไม่คิดเลย เราจะมุ่งไปหา Homebrew ซึ่งแค่ brew install emacs แค่นี้ก็ใช้ได้ละ แต่ปัญหาคือ Binary นี้มันไม่ได้ถูก Optimize มาให้ Mac ซักเท่าไร จะเจอปัญหาปุ่ม Command บ้าง แต่ที่หนักที่สุดคือ Window mode นี่แหละ ซึ่งผมผู้ใช้งาน Magnet อยู่ทำงานกับ Emacs ด้วยไม่ได้ เพราะ Window Snapping ไม่ทำงาน (link)

สุดท้าย เลยจึงเป็นสาเหตุให้ต้องหา Binary Emacs ใหม่ ซึ่งผมมาจบที่ Homebrew-emacsmacport ซึ่งแก้ปัญหา GUI support ใน Mac มาให้แล้ว ตัวนี้สามารถลงผ่าน Homebrew หรือโหลด pre-built binary มาได้เหมือนกัน แต่ผมแนะนำลงผ่าน Homebrew เพราะนอกจากจะอัพเกรดง่ายกว่าแล้ว เรายังสามารถ custom install ได้เช่น เปลี่ยนไอคอนของ App Emacs เป็นต้น


สรุปวิธีติดตั้ง Emacs บน Mac

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac --with-emacs-big-sur-icon

จุดเริ่มต้นจริงๆ

ส่วนตัวผมเป็น Vim User มาน่าจะเกิน 10 ปีละ เคยเฉียดมาใกล้ Emacs มากที่สุดตอนใช้ Spacemacs เมื่อหลายปีก่อน แต่ด้วยความที่ตอนนั้นก็ใช้ Evil mode ในนั้น เลยยังไม่ค่อยได้สัมผัสกับพลังของมันเท่าไร key-binding ที่ใช้ก็เหมือนใช้ Vim ปกติเลย

228749370_10226649062191075_4331154690813486649_n.jpg

มารอบนี้จุดเริ่มต้นเพราะคลาส Programming Languages, Part A ซึ่งในคลาสแนะนำให้ใช้ Emacs เพราะมันสะดวกกับการเขียน sml มากกว่า ซึ่งตอนเรียนๆ อาจารย์ก็ไม่ได้ใช้อะไรมากนอกจาก navigate ใน Emacs ซึ่งเราก็สามารถใช้ลูกศรได้ตามปกติเลย แต่ถ้าจะมีพิเศษหน่อยคือ การสั่ง Evaluate sml expression (C-c C-e) หรือการเปิด REPL ของ sml เลย ซึ่งใช้ง่ายมาก เลยเป็นจุดเริ่มต้นที่ผมเริ่มจะไปลงลึกกับ Emacs ละ

ด้วยความที่ในคลาสไม่ได้สอนใช้นอกจากที่ผมบอกข้างต้น วิธีการเรียน Emacs ผมช่วงแรกเลยเรียนกับ Youtube channel: System Crafters ซึ่งเป็นช่องที่มีแต่ Emacs จริงๆ จุดเริ่มต้นผมอยู่ที่วิดีโอ The Absolute Beginner's Guide to Emacs ซึ่งผมรู้จัก dired เข้าใจแนวคิด Window/Frame/Buffer แนวคิดของ Major-Mode, Minor-Mode แนวคิดของ Command กับพวก Key binding พื้นฐานจากวิดีโอนี้เลย

Screen Shot 2564-10-02 at 09.06.01.png

พอจบจากตรงนี้ชีวิตก็เริ่มซนขึ้น เพราะใน Vim เราสามารถ Custom อะไรต่างๆ ได้ลง Package เพิ่มได้ เราก็อยากทำแบบเดียวกันได้เหมือนกัน เลยไปต่อที่วิดีโอซีรีย์ Emacs From Scratch ซึ่งสอนเราค่อยๆ custom ไฟล์ init.el ขึ้นมาจาก 0 เลย ซึ่งซีรีย์นี้ทำให้ผมค่อยๆ รู้จักกับ Ecosystem ของ Emacs มากขึ้นเรื่อยๆ ว่าเห้ย มันมีอะไรมากกว่านั้นนะ และ Community ชอบใช้อะไรกันได้เร็วมาก ซึ่งในแต่ละตอนจะมี Org note เก็บไว้ที่ GitHub ของเค้าด้วย ซึ่งแยกเป็นตอนๆ แบบละเอียด พร้อมคำอธิบายเลย ซึ่งผมบอกได้เลยว่า ใครชอบอ่านไป GitHub ใครชอบดูวิดีโอไป Youtube เลยครับ ได้อะไรจากตรงนี้เยอะมากแน่ๆ

ตอนแรกขอหอมปาก หอมคอแค่นี้ก่อน ส่วนตอนต่อไปจะเล่าถึงอะไรนั้น คอยติดตามกันได้ครับ