Emacs เป็นหนึ่งในโปรแกรมแก้ไขข้อความที่เก่าแก่และหลากหลายที่สุด เวอร์ชัน GNU Emacs เขียนขึ้นครั้งแรกในปี 1984 และเป็นที่รู้จักกันดีในด้านคุณสมบัติการแก้ไขที่ทรงพลังและครบครัน สามารถปรับแต่งและขยายด้วยโหมดต่างๆ ได้ ทำให้สามารถใช้งานได้เหมือนกับ Integrated Development Environment (IDE) สำหรับภาษาการเขียนโปรแกรม เช่น Java, C และ Python สำหรับผู้ที่ใช้ทั้ง Vi และโปรแกรมแก้ไขข้อความนาโนที่ใช้งานง่าย Emacs ถูกนำเสนอว่าอยู่ระหว่างนั้น จุดแข็งและฟีเจอร์มีความคล้ายคลึงกับ Vi ในขณะที่เมนู ไฟล์วิธีใช้ และปุ่มคำสั่งเปรียบเทียบกับนาโน
ในบทความนี้ จะได้เรียนรู้วิธีการติดตั้ง Emacs บนเซิร์ฟเวอร์ Ubuntu 20.04 และใช้สำหรับการแก้ไขข้อความพื้นฐาน
ขั้นตอนที่ 1 – การติดตั้ง Emacs
เริ่มต้นด้วยการตรวจสอบว่าระบบมี Emacs ติดตั้งอยู่แล้วหรือไม่
emacs
หากติดตั้งโปรแกรมแล้ว จะปรากฎข้อความต้อนรับเริ่มต้น ถ้ายังไม่ติดตั้งจะได้รับผลลัพธ์นี้
ในการติดตั้ง Emacs ให้ใช้คำสั่งต่อไปนี้
sudo apt install emacs
ขั้นตอนที่ 2 – การใช้ Interface
เริ่มใช้งาน Emacs โดยพิมพ์คำสั่ง emacs ในเทอร์มินัล
emacs
Emacs เริ่มต้นด้วย buffer แก้ไขที่ว่างเปล่า และรอให้เริ่มพิมพ์ เมื่อ Emacs เริ่มทำงานโดยไม่มีไฟล์ที่ระบุ โปรแกรมจะแสดงข้อความต้อนรับ
หากต้องการเริ่มไฟล์ใหม่ ให้เลื่อนเคอร์เซอร์ไปที่ลิงก์ “visit new file” โดยกดปุ่ม TAB จากนั้นกด ENTER คุณยังสามารถกด CTRL+X จากนั้น CTRL+F เพื่อสร้างไฟล์ใหม่ ข้อความแจ้งจะปรากฏขึ้นที่ส่วนท้ายของเทอร์มินัลของคุณเพื่อขอชื่อไฟล์
ใส่ชื่อไฟล์เพื่อเริ่มแก้ไขข้อความ ในตัวอย่างต่อไปนี้ จะใช้ myfile.txt คุณสามารถตั้งชื่อไฟล์นี้ตามที่ต้องการ เมื่อพิมพ์ชื่อไฟล์แล้ว ให้กด ENTER เพื่อดำเนินการต่อ จะปรากฎไฟล์ว่างที่พร้อมสำหรับการพิมพ์ข้อความใหม่
ที่ด้านบนของหน้าจอจะมีเมนู หลังคำว่าเมนูจะมีพื้นที่แก้ไขขนาดใหญ่ สิ่งนี้เรียกว่า buffer หลักที่จะต้องพิมพ์ข้อความหรือดูเนื้อหาของไฟล์ สามารถดูรายละเอียดเพิ่มเติมได้ที่นี่
ขั้นตอนที่ 3 – การใช้ปุ่มคำสั่ง
หากเริ่มคุ้นเคยกับ Interface แล้ว ก็สามารถเริ่มทำความคุ้นเคยกับปุ่มคำสั่งของ Emacs ได้แล้ว เมื่อเปิดไฟล์สามารถเริ่มพิมพ์และออกคำสั่งพร้อมกันได้ ฟังก์ชันคำสั่งมักจะเกี่ยวข้องกับปุ่มสองหรือสามปุ่ม โดยทั่วไปคือแป้น CTRL ตามด้วยแป้น ALT หรือ ESC โดยที่ CTRL จะแสดงในรูปแบบย่อเป็น “C” ภายในสภาพแวดล้อม Emacs หมายเหตุภายใน Emacs เช่น C-x C-c หมายความว่าคุณกดแป้น CTRL+X พร้อมกัน จากนั้นกด CTRL+C ในทำนองเดียวกัน C-h t หมายถึงกด CTRL+H พร้อมกัน จากนั้นปล่อยทั้งสองปุ่มแล้วกด t
ปุ่ม ALT และ ESC เรียกว่า Meta key ใน Emacs บนเครื่อง Apple ให้ใช้ปุ่ม OPTION แทน ALT แป้นพิมพ์อื่นๆ จะใช้ปุ่ม EDIT เช่นเดียวกับปุ่ม CTRL Emacs ใช้ฟังก์ชันหลายคีย์ร่วมกับเมตาคีย์ ตัวอย่างเช่น สัญลักษณ์เช่น M-x หมายความว่าคุณกด ALT หรือ OPTION และ x พร้อมกัน ในทำนองเดียวกัน คุณสามารถใช้ ESC+X เพื่อทำคำสั่งเดียวกันให้สำเร็จได้
ปุ่ม ENTER จะแสดงเป็น RET ใน Emacs ซึ่งย่อมาจาก return ปุ่ม ESC มักแสดงเป็น E
สามารถใช้ปุ่ม ESC เพื่อถอยออกจากคำสั่งหรือพรอมต์ได้ ตัวอย่างเช่น สามารถกด ESC หลายครั้งเพื่อออกจากเมนูที่ต้องการ วิธียกเลิกการดำเนินการอีกวิธีหนึ่งคือการกด CTRL+G
การบันทึกและการกดออก
เมื่อได้ทำการเปลี่ยนแปลงในเอกสารหรือเขียนข้อความแล้ว คุณสามารถบันทึกได้โดยกด CTRL+X ตามด้วย CTRL+S buffer ขนาดเล็กจะแสดงข้อความต่อไปนี้
สามารถออกจาก Emacs ได้โดยกด CTRL+X จากนั้นกด CTRL+C หากไม่ได้บันทึกไฟล์ด้วยตนเองก่อนออกจากระบบ คุณจะได้รับข้อความนี้
Save file /home/john/myfile.txt? (y, n, !, ., q, C-r, C-f, d or C-h)
กด Y เพื่อบันทึกไฟล์ หากคุณกด N เพื่อไม่ คุณจะได้รับข้อความนี้
Modified buffers exist; exit anyway? (yes or no)
พิมพ์ Yes เพื่อออกโดยไม่บันทึก
Navigating Text
วิธีค้นหาไฟล์เอกสารขนาดยาวหรือหัวข้อวิธีที่ต้องการใช้อาจเป็นงานที่น่าเบื่อ แต่โชคดีที่ใน Emacs มีหลายวิธีในการค้นหา
เรื่องที่ต้องการดำเนินการ | คำสั่งที่ต้องใช้ |
ย้ายไปบรรทัดถัดไป | CTRL+N |
ย้ายกลับไปบรรทัดก่อนหน้า | CTRL+P |
ย้ายไปหนึ่งตัวอักษรข้างหน้า | CTRL+F |
ย้ายกลับไปหนึ่งตัวอักษรข้างหลัง | CTRL+B |
ย้ายไปหนึ่งคำข้างหน้า | META+F |
ย้ายกลับไปหนึ่งคำข้างหลัง | META+B |
ย้ายไปจุดเริ่มต้นของบรรทัด | CTRL+A |
ย้ายไปท้ายสุดของบรรทัด | CTRL+E |
ย้ายไปหน้าถัดไป | CTRL+V |
ย้ายไปจุดเริ่มต้นของประโยค | META+A |
ย้ายไปจุดสิ้นสุดของประโยค | META+E |
ย้ายไปหน้าก่อนหน้า | META+V |
ย้ายไปจุดเริ่มต้นของไฟล์ | META+< |
ย้ายไปจุดสุดท้ายของไฟล์ | META+> |
ขั้นตอนที่ 4 – การแก้ไขฟังก์ชั่น
หากต้องการทำงานพิเศษเพิ่มเติมซึ่งเหมือนกับโปรแกรมประมวลผลคำยอดนิยม เช่น การเลือกหรือเน้นส่วนเฉพาะของไฟล์ข้อความ สามารถทำได้ใน Emacs
Marking Text Regions
หากต้องการทำเครื่องหมายขอบเขตข้อความให้ทำตามขั้นตอนต่อไปนี้
- เลื่อนเคอร์เซอร์ไปยังตำแหน่งที่คุณต้องการให้เริ่มการเลือก
- กด CTRL+SPACEBAR หรือ CTRL+@ เพื่อตั้งค่าเครื่องหมายเพื่อเริ่มการเน้นข้อความโดยที่ buffer ขนาดเล็กจะแสดงข้อความสถานะของ Mark Activated
- เลื่อนเคอร์เซอร์ไปยังตำแหน่งที่คุณต้องการให้ขอบเขตสิ้นสุด โดยใช้คีย์ผสมใดๆ ที่อธิบายไว้ก่อนหน้านี้
- ข้อความจะถูกไฮไลท์จนถึงจุดที่เคอร์เซอร์อยู่
- กด CTRL-SPACEBAR หรือ CTRL+@ สองครั้งเพื่อยกเลิกการทำเครื่องหมายข้อความที่ไฮไลต์ buffer ขนาดเล็กจะแสดงข้อความสถานะของ Mark Deactivated
อีกวิธีหนึ่งจะคล้ายกับการใช้โปรแกรม Word เราสามารถกดปุ่ม SHIFT ค้างไว้แล้วเลื่อนเคอร์เซอร์ด้วยปุ่มลูกศรขึ้นหรือลงบนแป้นพิมพ์เพื่อทำการเลือก หากต้องการเลือกย่อหน้าที่เคอร์เซอร์ของคุณเปิดอยู่ ให้กด META+H หลังจากนั้น การกด META+h อย่างต่อเนื่องจะเลือกย่อหน้าถัดไปในไฟล์ข้อความของคุณ หรือ หากต้องการเลือกเนื้อหาทั้งหมดของ buffer หลัก (เช่น “เลือกทั้งหมด”) ให้กด CTRL+X จากนั้น h
การตัด การคัดลอก และวางข้อความ
มีความคล้ายกับการใช้โปรแกรม Word สามารถคัดลอก ตัด และวางข้อความได้:
- หากต้องการคัดลอกข้อความที่คุณเลือก ให้กด META+W
- เมื่อต้องการตัดส่วนที่เลือกข้อความ ให้กด CTRL-W
- เมื่อต้องการวางส่วนที่เลือกข้อความ ให้กด CTRL-Y
การลบข้อความ
สามารถใช้ปุ่ม Backspace และ Delete เพื่อทำการลบข้อความ แต่หากต้องการลบทั้งคำอย่างรวดเร็ว ให้เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของคำแล้วกด META+D หากต้องการลบหลายคำ ให้กดปุ่ม META ค้างไว้แล้วกด D อย่างต่อเนื่อง คำต่างๆ จะถูกลบทีละคำ หากต้องการลบทั้งบรรทัด ให้วางเคอร์เซอร์ในตำแหน่งที่คุณต้องการ จากนั้นกด CTRL+K เพื่อลบข้อความจนถึงท้ายบรรทัด
หากต้องการลบประโยค ให้กด META+K อย่างไรก็ตาม Emacs จะลบทั้งบรรทัดหรือมากกว่านั้น หากไม่มีช่องว่างสองช่องหลังจากมหัพภาค ช่องว่างสองช่องหลังจากมหัพภาคคือสิ่งที่ Emacs กำหนดว่าเมื่อไหร่ที่ประโยคถูกตัดข้ามหลายบรรทัด
การเลิกทำและการทำซ้ำ (Undoing and Redoing)
คุณสามารถยกเลิกการดำเนินการล่าสุดได้โดยกด CTRL+X จากนั้นคุณ คีย์ผสมทางเลือกคือ CTRL+_ (คีย์ที่กดที่นี่จะเป็น CTRL, SHIFT และ – เพื่อดำเนินการขีดล่าง) หากต้องการทำซ้ำการเลิกทำครั้งล่าสุด ให้กด CTRL+G ตามด้วย CTRL+_
การค้นหาและการแทนที่ข้อความ
การค้นหาใน Emacs มีสองแบบคือ หาข้อความข้างหน้าหรือข้างหลัง โดยหากต้องการค้นหาไปข้างหน้า คำที่คุณระบุจะถูกค้นหาไปข้างหน้าจากตำแหน่งเคอร์เซอร์ปัจจุบัน สำหรับการค้นหาแบบย้อนหลัง มันเป็นการจะสลับกัน
- กด CTRL+S เพื่อค้นหาไปข้างหน้า จากนั้นป้อนข้อความที่คุณกำลังค้นหาในพรอมต์ buffer ขนาดเล็ก
- กด CTRL+R เพื่อค้นหาแบบย้อนกลับ
ทันทีหลังจากที่มีการป้อนคำค้นหา Emacs จะค้นหาและเน้นรายการที่ตรงกันที่พบใน buffer หลัก
การเพิ่มการจัดตำแหน่งซ้าย ขวา และกึ่งกลาง
หากต้องการจัดตัวอักษรให้อยู่กึ่งกลาง ให้เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดนั้นแล้วกด META+O จากนั้นกด META+S
หากต้องการจัดตำแหน่งข้อความที่เลือก ให้ทำดังต่อไปนี้
1.ไฮไลต์ข้อความที่คุณต้องการจัดชิดขอบ
2.กด META+X บัฟเฟอร์ขนาดเล็กจะรอการตอบกลับ
3.ป้อน set-justifiction- แล้วกดปุ่ม TAB
จะได้รับตัวเลือกดังต่อไปนี้: set-justification-center, set-justification-left, set-justification-right, set-justification-none และ set-justification-full เพื่อให้คำสั่งมีผลสมบูรณ์ ให้เลือก set-justification-right หรือตัวเลือกใดตัวเลือกหนึ่ง จากนั้นกด ENTER ข้อความที่เลือกจะถูกจัดชิดขอบตามทิศทางที่เลือก
Converting Case
สามารถแปลงตัวพิมพ์ด้วยคำสั่งที่แตกต่างกัน ดังต่อไปนี้
เรื่องที่ต้องการดำเนินการ | คำสั่งที่ต้องใช้ |
การใช้ตัวอักษรพิมพ์ใหญ่ตามหลัง เคอร์เซอร์ | META+C |
การแปลงคำเป็นตัวพิมพ์เล็ก | META+L |
การแปลงคำเป็นตัวพิมพ์ใหญ่ | META+U |
การแปลงย่อหน้าเป็นตัวพิมพ์ใหญ่ | เลือก Block จากนั้น CTRL+X CTRL+U |
การแปลงย่อหน้าเป็นตัวพิมพ์เล็ก | เลือก Block จากนั้น CTRL+X CTRL+L |
Managing Windows
การจัดการหน้าต่างภายใน Emacs สามารถช่วยให้ทำงานกับไฟล์ ได้อย่างมีประสิทธิภาพมากขึ้น ตัวอย่างเช่น จาก buffer หลัก ให้สลับไปยังบทช่วยสอน Emacs โดยกด CTRL+h จากนั้น t หน้าต่าง buffer หลัก ตอนนี้คือบทช่วยสอน Emacs หากต้องการเปลี่ยนกลับไปใช้ buffer myfile.txt ให้กด CTRL+X จากนั้น b นี่คือคำสั่งบัฟเฟอร์สวิตช์ Emacs จะแจ้งให้คุณใส่ชื่อ buffer เพื่อเปลี่ยนไปใช้ เริ่มพิมพ์ชื่อบัฟเฟอร์ myfile.txt แล้วกด ENTER จะทำให้ออกจากบทช่วยสอน Emacs ไปยังไฟล์ที่ระบุ
ขั้นตอนที่ 5 – การเข้าสู่โหมด
เข้าสู่ Major Mode
หนึ่งในเหตุผลที่ Emacs ถูกนำมาใช้กันอย่างแพร่หลายใน UNIX ก็เนื่องมาจากความสามารถในการรับโหมดที่แตกต่างกัน โหมดสามารถเพิ่มประสิทธิภาพการทำงานของ Emacs โดยขึ้นอยู่กับโหมดที่เลือก Emacs สามารถใช้เป็นโปรแกรมประมวลผลคำสำหรับการเขียนไฟล์ข้อความ หรือสามารถปรับใช้กับงานขั้นสูง เช่น การเขียน Python, C หรือโค้ด Java ตัวอย่างเช่น สามารถเปลี่ยนโหมดของ Emacs เพื่อให้ทำงานกับระบบควบคุมเวอร์ชัน รันคำสั่ง shell หรืออ่าน man page ได้
โหมด Emacs มีสองประเภทที่แตกต่างกัน หนึ่งเรียกว่าโหมดหลัก ในโหมดหลัก Emacs สามารถใช้เป็น Integrated development environment (IDE) สำหรับการเขียนโปรแกรมหรือภาษาสคริปต์ ในโหมดนี้ โปรแกรมนำเสนอคุณสมบัติพิเศษ เช่น การเน้นไวยากรณ์สี การเยื้องและการจัดรูปแบบ ตัวเลือกเมนูเฉพาะภาษา หรือการเชื่อมต่อกับดีบักเกอร์และคอมไพเลอร์โดยอัตโนมัติ
เพื่อยกตัวอย่าง สามารถเขียนแอป “Hello World” ใน Python โดยใช้ Emacs ภายในเทอร์มินัลและในไฟล์หลัก ให้ป้อนคำสั่งต่อไปนี้
cd ~
emacs hello.py
Emacs รู้จักนามสกุลไฟล์และจะเริ่มในโหมด Python ใน buffer หลัก ให้ป้อนโค้ด Python ต่อไปนี้
print "hello world!\n"
ขณะนี้คำหลักถูกระบุด้วยการเน้นด้วยสี อย่าลืมสังเกตด้วยว่าบรรทัดสถานะเหนือ buffer ขนาดเล็กเผยให้เห็นโหมดที่คุณอยู่ในปัจจุบัน เมนูหลักยังมีรายการแยกต่างหากสำหรับ Python โดยเฉพาะ
บันทึก buffer ด้วย CTRL+X CTRL+S
หากต้องการเปลี่ยนโหมดหลักจากภายใน Emacs ให้กด META+X บัฟเฟอร์ขนาดเล็กจะรอการตอบกลับของคุณ จากนั้นคุณสามารถเข้าสู่โหมดอื่นได้ นี่คือตัวอย่างบางส่วนของโหมดหลักๆ
- โหมด C
- โหมด python
- โหมด java
- โหมด html
- โหมด Perl
- โหมด shell-script
- โหมดข้อความ (text)
เข้าสู่ Minor Mode
เมื่อเปรียบเทียบกับโหมดหลัก โหมดรองจะมีคุณสมบัติเฉพาะเจาะจงมากกว่า คุณสมบัติเหล่านี้สามารถเชื่อมโยงกับโหมดหลักเฉพาะ หรือมีผลทั้งระบบโดยไม่คำนึงถึงโหมดหลัก นอกจากนี้ ยังแตกต่างจากโหมดหลักตรงที่สามารถมีโหมดย่อยได้หลายโหมดพร้อมกัน โหมดรองก็เหมือนกับสวิตช์ บางโหมดจะเปิดใช้งานตามค่าเริ่มต้น บางโหมดไม่ได้เปิดใช้งาน หากโหมดรองเปิดอยู่แล้ว การเรียกจะเป็นการปิดโหมด หากปิดอยู่ก็จะเปิดอีกครั้ง
อีกตัวอย่างหนึ่งของโหมดรองคือ auto-fill-mode หากต้องการเข้าสู่โหมดนี้ในตัวแก้ไข Emacs ให้กดปุ่ม META+X จากนั้นเข้าสู่ auto-fill-mode โหมดนี้ช่วยให้บรรทัดข้อความสามารถแบ่งและตัดไปยังบรรทัดถัดไปได้เมื่อมีความยาวมากกว่า 70 อักขระ ต้องจำไว้ว่าเมื่อเรียกใช้โหมดรอง มันจะเหมือนกับสลับสวิตช์ การเรียกใช้คำสั่งเดียวกันอีกครั้งจะเป็นการปิดใช้การตัดบรรทัด
ต่อไปนี้เป็นตัวอย่างเพิ่มเติมของโหมดรอง
- auto-save-mode: การบันทึกที่จะเกิดโดยอัตโนมัติที่จะบันทึกเนื้อหาของ buffer หลักเป็นระยะ ๆ
- line-number-mode: สลับการแสดงหมายเลขบรรทัดปัจจุบันในแถบสถานะ
- linum-mode: สลับการแสดงหมายเลขบรรทัดตามขอบด้านซ้ายของหน้าต่าง
- column-number-mode: แสดงตำแหน่งปัจจุบันของเคอร์เซอร์ในแถบสถานะ
- overwrite-mode:เหมือนกับการกดปุ่ม INS บนคีย์บอร์ด เมื่อเปิดเครื่อง ข้อความจะเขียนทับข้อความทางด้านขวาของเคอร์เซอร์ขณะที่คุณพิมพ์
- menu-bar-mode: สามารถเปิดหรือปิดเมนูหลักได้