**อีแม็คส์** (อังกฤษ: Emacs) เป็นโปรแกรมคอมพิวเตอร์ที่ใช้แก้ไขข้อความ มีความสามารถหลากหลายเป็นที่นิยมในหมู่นักเขียนโปรแกรมคอมพิวเตอร์

เดิม Emacs ย่อมาจาก Editor MACroS เป็นการรวบรวมมาโครที่พัฒนาโดย ริชาร์ด สตอลแมน สำหรับโปรแกรมแก้ไขข้อความที่ชื่อ TECO เมื่อปี พ.ศ. 2518 Guy Steele ได้รวบรวมมาโครเหล่านั้นออกมาเป็นซอฟต์แวร์อีแม็คส์ ต่อมาอีแม็คส์ก็กลายเป็นโปรแกรมแก้ไขข้อความเต็มตัว และมีอยู่ด้วยกันหลายรุ่น แต่อีแม็คส์สองแบบที่ได้รับความนิยมในปัจจุบันคือ GNU Emacs ซึ่งเริ่มโดย Richard Stallman เมื่อปี พ.ศ. 2527 และ XEmacs ซึ่งแยกออกมาจาก GNU Emacs เมื่อปี พ.ศ. 2534

คุณสมบัติ
---------

### แพลตฟอร์ม

อีแม็คส์สามารถทำงานได้บนระบบปฏิบัติการยูนิกซ์เกือบทุกระบบ (GNU, Linux, BSD, Solaris, AIX, IRIX, Max OS X), MS-DOS, Microsoft Windows, และ OpenVMS นอกจากนี้อีแม็คส์ยังสามารถทำงานได้ทั้งบน terminal และ graphical user interface (GUI)

### โหมดในการแก้ไขข้อมูล

อีแม็คส์จะเปลี่ยนพฤติกรรมการทำงานไปตามชนิดของข้อมูลที่กำลังถูกแก้ไข เรียกว่าโหมดการทำงานหลัก (major mode) ตัวอย่างของโหมดการทำงานหลักได้แก่ โหมดปกติสำหรับตัวหนังสือ, โหมดสำหรับภาษาโปรแกรมแบบต่างๆ, โหมดสำหรับเอกสาร HTML พฤติกรรมที่ต่างๆ กันเช่น syntax highlighting รวมทั้งคำสั่งพิเศษที่จะช่วยในการแก้ไขเฉพาะสำหรับโหมดนั้นๆ

นอกจากนี้ ในขณะใดขณะหนึ่งไฟล์ที่ถูกแก้ไขจะใช้โหมดการทำงานหลักได้เพียงโหมดเดียว แต่พฤติกรรมการทำงานยังสามารถถูกปรับแต่งเพิ่มเติมโดยใช้โหมดย่อย (minor mode) ได้หลายๆ โหมดพร้อมกัน ยกตัวอย่างเช่น โหมดหลักสำหรับภาษาซีสามารถเลือกใช้โหมดย่อยที่จัดย่อหน้าแบบต่างๆ กันไป

### การปรับแต่ง

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

วิธีการที่สอง โดยการบันทึกแมโครและรันแมโครสำหรับงานที่ซับซ้อนและต้องทำซ้ำๆ กัน โดยส่วนใหญ่แมโครที่บันทึกไว้จะถูกใช้ทันนีและทิ้งไปเมื่อออกจากโปรแกรมแม้ว่าจะสามารถบันทึกไว้เพื่อเรียกใช้งานทีหลังได้เช่นกัน

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

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

การใช้งาน
---------

ผู้ใช้สามารถเริ่มต้นใช้งานจากเชลล์ยูนิกซ์ได้โดยการพิมพ์ "emacs [ชื่อไฟล์]" เพื่อทำการแก้ไขไฟล์ตามชื่อ ถ้าไม่มีไฟล์ตามที่พิมพ์อีแม็คส์จะสร้างบัฟเฟอร์ใหม่มีชื่อตามที่ชื่อไฟล์ อย่างไรก็ตาม การใช้งานอีแม็คส์ให้ได้ประโยชน์สูงสุดควรแก้ไขหลายๆ ไฟล์จากอีแม็คส์ตัวเดียว ไม่ควรแยกการแก้ไขไฟล์เพียงไฟล์เดียวต่อหนึ่งอีแม็คส์

ในโหมดการใช้งานตามปกติผู้ใช้พิมพ์ตัวหนังสือและแก้ไขเหมือนโปรแกรมแก้ไขข้อความโดยทั่วไป ผู้ใช้จะเรียกคำสั่งต่างๆ โดยการกดปุ่ม `Ctrl` และ/หรือ `Meta`/`Alt` ร่วมกับปุ่มอื่นๆ ที่จริงแล้วการพิมพ์เพียงง่ายๆ เช่นการพิมพ์ตัวหนังสือหนึ่งตัวก็เป็นการเรียกคำสั่งที่มีชื่อว่า self-insert-command

### คำสั่งเบื้องต้น

ต่อไปนี้คือคำสั่งเบื้องตนเพียงบางส่วน ตัว C คือปุ่ม `Ctrl` ตัว M คือปุ่ม `Meta` หรือ `Alt`

| คำสั่ง | เคาะแป้นพิมพ์ | อธิบาย |
| --- | --- | --- |
| `forward-word` | `M-f` | เลื่อนไปข้างหน้าหนึ่งคำ |
| `search-word` | `C-s` | ค้นหาคำ |
| `undo` | `C-/` | ยกเลิกข้อความที่พิมพ์ล่าสุด |
| `keyboard-quit` | `C-g` | ยกเลิกคำสั่งที่กำลังพิมพ์อยู่ |
| `find-file` | `C-x C-f` | เปิดไฟล์เพื่อแก้ไข |
| `save-buffer` | `C-x C-s` | บันทึกบัฟเฟอร์ |
| `save-with-newname` | `C-x C-w` | บันทึกบัฟเฟอร์ในไฟล์ใหม่ |
| `save-buffers-kill-emacs` | `C-x C-c` | บันทึกบัฟเฟอร์และออกจากอีแม็คส์ |
| `set-marker` | `C-[space] หรือ C-@` | ทำเครื่องหมายที่ตำแหน่งปัจจุบัน |
| `cut` | `C-w` | ตัด เริ่มต้นจากเครื่องหมายที่ทำไว้ถึงตำแหน่งปัจจุบัน |
| `copy` | `M-w` | คัดลอก เริ่มต้นจากเครื่องหมายที่ทำไว้ถึงตำแหน่งปัจจุบัน |
| `paste` | `C-y` | แปะข้อความจากคลิปบอร์ด |
| `kill buffer` | `C-x k` | ปิดบัฟเฟอร์ปัจจุบัน |

คำสั่ง save-buffer ใช้การกดคำสั่งหลายครั้งร่วมกันเช่น C-x C-s คือการกดปุ่มตัวเอ็กซ์ในขณะที่กดคอนโทรลค้างไว้ จากนั้นกดปุ่มตัวเอสในขณะที่กดคอนโทรลค้างไว้ วิธีนี้แม้จะดูเหมือนยุ่งยากเมื่อเริ่มเรียนรู้แต่ก็ทำให้อีแม็คส์สามารถมีคำสั่งจากคีย์บอร์ดได้มากมายไม่ถูกจำกัดโดยจำนวนปุ่มบนแป้นพิมพ์

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

แหล่งข้อมูลอื่น
---------------

* เว็บเพจ Emacs ของโครงการกนู
* EmacsWiki - แหล่งรวมข้อมูลโดยผู้ใช้ Emacs