อีแม็คส์

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

## ประวัติ
การพัฒนาของอีแม็คส์เริ่มต้นขึ้นเมื่อช่วงปี ค.ศ. 1970 ที่ศูนย์ปฏิบัติการปัญญาประดิษฐ์สถาบันเทคโนโลยีแมสซาชูเซตส์ มีเครื่องเมนเฟรมคอมพิวเตอร์ PDP-8 และ PDP-10 ใช้ระบบปฏิบัติการแบ่งกันใช้เวลาที่ไม่เข้ากัน (Incompatible Timesharing System; ITS) ซึ่งมีโปรแกรมแก้ไขบรรทัด TECO มากับระบบปฏิบัติการนี้ ต่างกันกับโปรแกรมแก้ไขบรรทัดในสมัยนั้น TECO มีโหมดแยกที่ผู้ใช้สามารถเพิ่มข้อความ แก้ไขข้อความที่มีอยู่แล้ว หรือแสดงเอกสาร และไม่สามารถพิมพ์ข้อความเข้าไปในเอกสารที่ใช้งานอยู่ได้โดยตรง แต่ผู้ใช้ต้องกดใช้คำสั่ง 'i' ในภาษาคำสั่ง TECO เพื่อบอกให้ TECO เปลี่ยนไปใช้โหมดป้อนเข้า พิมพ์ข้อความ และกดใช้คำสั่ง (ESC) เพื่อเปลี่ยนตัวแก้ไขกลับเป็นโหมดคำสั่ง แต่ TECO เป็นโปรแกรมที่ล้าสมัยมากแล้ว ซึ่งถูกปล่อยตัวออกมาครั้งแรกเมื่อปี ค.ศ. 1962

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

E มีฟีเจอร์การแก้ไขโดยสุ่มที่ TECO ไม่มี TECO เป็นโปรแกรมแก้ไขอย่างขั้นลำดับเทป ออกแบบให้แก้ไขสื่อข้อมูลเทปเจาะรูบนเครื่อง PDP-1 เพราะว่าหน่วยความจำในสมัยนั้นมีพื้นที่เล็กมาก ๆ เนื่องจากมีราคาสูง และเป็นฟีเจอร์ของ TECO ที่สามารถแก้ไขเทปหนึ่งแผ่นในแต่ละรอบตามลำดับ แทนที่จะทำตาม E ที่มีโครงสร้างไฟล์สำหรับการแก้ไขโดยสุ่ม ริชาร์ด สตอลแมนแก้ไขให้ TECO สามารถรับรองบัฟเฟอร์ที่มีขนาดใหญ่ได้อย่างมีประสิทธิภาพมากขึ้น และเปลี่ยนวิธีการการจัดการไฟล์ให้ การอ่าน การแก้ไข และการเขียนเข้าไปอยู่ในบัฟเฟอร์เดียวกัน ซึ่งโปรแกรมแก้ไขข้อความสมัยปัจจุบันเกือบทุกโปรแกรมได้ปฏิบัติตามนี้

TECO รุ่นใหม่เป็นโปรแกรมที่นิยมมากที่ศูนย์ปฏิบัติการปัญญาประดิษฐ์ และได้รับการพัฒนามาโครต่าง ๆ โดยแฮกเกอร์ประจำศูนย์ปฏิบัติการ มาโครที่ถูกพัฒนาขึ้นมามักมีชื่อต่อท้ายเป็น MAC หรือ MACS ซึ่งมีความหมายว่ามาโคร (macros) สองปีผ่านมา กาย สตีล ได้จัดโครงการเพื่อการรวมมาโครหลากหลายกลายเป็นเซตเดียว โปรแกรมที่เสร็จสมบูรณ์ของ กาย สตีล และ ริชาร์ด สตอลแมน มีระบบอำนวยความสะดวกสำหรับการขยายมาโครเพิ่มเติม ซึ่งระบบมาโครนี้เรียกว่า EMACS ย่อมาจาก Editor MACroS หรือ E with MACroS (E มีมาโคร)

## คุณสมบัติ

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

อีแม็คส์สามารถทำงานได้บนระบบปฏิบัติการยูนิกซ์เกือบทุกระบบ (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 [ชื่อไฟล์]" เพื่อทำการแก้ไขไฟล์ตามชื่อ ถ้าไม่มีไฟล์ตามที่พิมพ์อีแม็คส์จะสร้างบัฟเฟอร์ใหม่มีชื่อตามที่ชื่อไฟล์ อย่างไรก็ตาม การใช้งานอีแม็คส์ให้ได้ประโยชน์สูงสุดควรแก้ไขหลาย ๆ ไฟล์จากอีแม็คส์ตัวเดียว ไม่ควรแยกการแก้ไขไฟล์เพียงไฟล์เดียวต่อหนึ่งอีแม็คส์

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

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

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

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

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

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

หมวดหมู่:โครงการกนูหมวดหมู่:ซอฟต์แวร์เสรีหมวดหมู่:ซอฟต์แวร์บนยูนิกซ์