Skip to main content

Command Palette

Search for a command to run...

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

Published
2 min read
Emacs diary EP1: จุดเริ่มต้น
Y

My name is Yothin Muangsommuk. I've been in many roles in Software Development team, Software Engineer, Tech Lead, and Technical Coach. My focus has always been improving a sustainability and maintainability through Technical Excellence and Software Craftsmanship. I also A Python enthusiasm, An occasional conference speaker (PyCon APAC, Code Mania, Barcamp Bangkok), and a community organizer (PyCon Thailand, PySomTum, GDG Cloud Bangkok).

Interests: Programming Language Design, Software Engineering, Distributed System

ช่วง 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 เลยครับ ได้อะไรจากตรงนี้เยอะมากแน่ๆ

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

Emacs Diary

Part 3 of 3

ในซีรีย์นี้ผมจะมาเล่าประสบการณ์ การปรับมาใช้ Emacs ในชีวิตประจำวัน ซึ่งหลักๆ คือใช้เขียนโปรแกรมแหละ แต่ว่า ผมได้แนวคิดหลายๆ อย่างจาก Emacs ซึ่งเอาไปต่อยอดใช้กับโปรแกรมอื่นๆ ได้อีกเยอะเลยครับ

Start from the beginning

ยิง request แบบไม่มีสะดุดด้วย emacs REST client

ช่วงปีใหม่ผมมีเวลาไปเรียนคอร์ส The Ultimate Go Series ของพี่ยอดซึ่งจากใจคนที่ดู Go อยู่ห่างๆ ผมบอกได้เลยว่าคอร์สนี้สอนได้ครบเครื่องมากในเวลาไม่กี่ชั่วโมง แต่นั่นไม่ใช่ประเด็นครับ ประเด็นคือตอนคอร์ส 2 ที่กำลังเรียนเรื่อง API พี่ยอดใช้ HTTP Client ที่ร...

More from this blog

ยิง request แบบไม่มีสะดุดด้วย emacs REST client

ช่วงปีใหม่ผมมีเวลาไปเรียนคอร์ส The Ultimate Go Series ของพี่ยอดซึ่งจากใจคนที่ดู Go อยู่ห่างๆ ผมบอกได้เลยว่าคอร์สนี้สอนได้ครบเครื่องมากในเวลาไม่กี่ชั่วโมง แต่นั่นไม่ใช่ประเด็นครับ ประเด็นคือตอนคอร์ส 2 ที่กำลังเรียนเรื่อง API พี่ยอดใช้ HTTP Client ที่ร...

Jan 9, 20223 min read102
ยิง request แบบไม่มีสะดุดด้วย emacs REST client

[Book Review] The Phoenix Project เพราะ IT Operation ก็ไม่ต่างกับ Production Plant

ผมรู้จัก The Phoenix Project มานานมากและมันวนเวียนมาเกือบจะได้อ่านหลายรอบ จนกระทั่งเมื่อประมาณกลางเดือนที่แล้ว ผมเพิ่งได้มีโอกาสจะหยิบมันขึ้นมาอ่าน และตั้งแต่ตอนนั้นผมแทบจะวางไม่ลงเลยตลอดระยะเวลาเกือบหนึ่งเดือนที่ผ่านมา และผมแนะนำให้กับทุกคนที่ทำงานใ...

Dec 20, 20214 min read456
[Book Review] The Phoenix Project เพราะ IT Operation ก็ไม่ต่างกับ Production Plant

Emacs diary EP2: สภาพแวดล้อม

ผมไม่รู้ว่าจะมีใครมาใช้ emacs แบบ เป็น text-editor ตัวแรกเลยมั้ย ผมไม่ใช่คนนึงแน่ๆ ซึ่งพอเราเปลี่ยนเครื่องมือ มันจะอารมณ์เดียวกับเราเปลี่ยนภาษา Programming ที่เราเขียนทุกวันเลย เพราะสิ่งแรกๆ ที่เราพยายามทำคือ "เราพยายามจะทำสิ่งเดียวกับที่เราเคยทำได้จ...

Dec 4, 20214 min read98
Emacs diary EP2: สภาพแวดล้อม

เรื่องประหลาดๆ ของการนับปีใน Java

ลืมหัวข้อ blog นี้ไปก่อนนะครับ แล้วลองพยายามเดาดูว่าโค้ด Java ข้างล่างนี้พยายามทำอะไร มันก็ดูตรงไปตรงมาใช่มั้ยครับ แล้วถ้ารันออกมาสมมติวันนี้วันที่ 1 ธันวาคม 2021 สิ่งที่ function นี้คืนกลับมาก็ เป็น 2020-12-01 ใช่มั้ยครับ ถ้าเราเขียน Unit test ไว้ ...

Dec 1, 20212 min read96
เรื่องประหลาดๆ ของการนับปีใน Java

Make Time | โลกมันวุ่นวาย แต่เรายังหาความสงบได้นะ

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

Nov 18, 20212 min read144
Make Time | โลกมันวุ่นวาย แต่เรายังหาความสงบได้นะ
P

Python by Cow

22 posts