micro - ทางเลือกสมัยใหม่ของ nano
(micro-editor.github.io)- micro เป็นโปรแกรมแก้ไขข้อความที่ใช้ในเทอร์มินัล โดยเริ่มต้นแบบเรียบง่ายเหมือน nano แต่ตั้งเป้าให้การใช้งานทันสมัยและเข้าใจง่ายกว่า
- แจกจ่ายเป็น static binary ที่ไม่มี dependency จึงติดตั้งได้ง่าย พร้อมมีทั้งลิงก์ดาวน์โหลดรีลีสทางการและคำแนะนำการติดตั้งแบบละเอียด
- ตัวเลือกและการกำหนดคีย์ลัดใหม่เปลี่ยนได้ด้วย รูปแบบ JSON และหากต้องการปรับแต่งเชิงลึกยิ่งขึ้นก็ทำได้ด้วยการตั้งค่าและปลั๊กอิน Lua
- รองรับการเน้นไวยากรณ์ของภาษามากกว่า 75 ภาษา, ธีมสีพื้นฐาน 7 แบบ, ธีม 16/256/truecolor, multi-cursor แบบ Sublime และการควบคุมด้วยเมาส์
- ด้วย terminal emulator ในตัว จึงสามารถรัน interactive shell ภายในตัวแก้ไข และดูโค้ดกับ bash พร้อมกันแบบแบ่งหน้าจอได้
micro ในฐานะโปรแกรมแก้ไขสำหรับเทอร์มินัล
- micro คือ โปรแกรมแก้ไขข้อความบนเทอร์มินัล ที่ชูจุดเด่นด้านการใช้งานที่ทันสมัยและเป็นธรรมชาติ
- สามารถดาวน์โหลดรีลีสล่าสุดได้จาก Download และดู คำแนะนำการติดตั้งแบบละเอียด ได้เช่นกัน
- มีสคริปต์ pipe to shell ของบุคคลที่สามในรูปแบบ
curl https://getmic.ro | bashแต่สคริปต์นี้ ไม่ได้อยู่ภายใต้การควบคุมของ micro - เพื่อความสะดวกในการติดตั้ง จึงแจกจ่ายในรูปแบบ static binary ที่ไม่มี dependency
-
การตั้งค่าและการขยายความสามารถ
- การตั้งค่าตัวเลือกและการรีไบน์คีย์ใช้ รูปแบบ JSON ที่เรียบง่าย
- หากต้องการการตั้งค่าที่ทรงพลังขึ้น สามารถใช้ Lua ได้
- ปลั๊กอินเขียนด้วย Lua และตัวจัดการปลั๊กอินจะดูแลการดาวน์โหลดและติดตั้งให้อัตโนมัติ
-
ความสามารถในการแก้ไข
- รองรับการเน้นไวยากรณ์ของภาษามากกว่า 75 ภาษา
- มีธีมสีพื้นฐานให้ 7 แบบ
- ใช้ธีม 16 สี, 256 สี และ truecolor ได้
- รองรับ multi-cursor แบบ Sublime
- สามารถเปลี่ยนคีย์ไบน์ได้ใน
bindings.json
-
เมาส์และเทอร์มินัลในตัว
- สามารถเลือกข้อความได้ด้วยการคลิกและลาก
- ดับเบิลคลิกใช้เลือกเป็นคำ และทริปเปิลคลิกใช้เลือกทั้งบรรทัด
- สามารถรัน interactive shell จริงภายใน micro ได้
- ในโหมดแบ่งหน้าจอ สามารถเปิดโค้ดไว้ฝั่งหนึ่งและ bash ไว้อีกฝั่งหนึ่งได้
- ดูรายการความสามารถทั้งหมดได้ที่ GitHub feature list และ วิธีใช้แบบออนไลน์
โปรเจกต์และชุมชน
- สามารถรายงานบั๊กผ่าน GitHub issue tracker รวมถึงถามคำถามหรือเสนอฟีเจอร์ใหม่ได้
- เปิดรับ Pull request
- การพูดคุยอย่างไม่เป็นทางการเกี่ยวกับตัวแก้ไขสามารถทำได้ในแชต Gitter
- ลิงก์ที่เกี่ยวข้อง:
- ความเห็นจากผู้ใช้รวมถึงการเป็นตัวแก้ไขที่ใช้งานได้ง่าย, รองรับเมาส์ และใช้แทน nano หรือ Vim ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เวลาเรียน การเขียนโปรแกรมบนบรรทัดคำสั่ง ในชั้นเรียนที่ทุกคนเป็นมือใหม่ ผมแนะนำให้นักศึกษาใช้ nano
สำหรับผู้ใช้กลุ่มนี้ จุดแข็งที่สุดของ nano คือคำสั่งทั้งหมดแสดงอยู่ด้านล่างของหน้าจอ แต่ผมแปลกใจที่ micro ไม่มีสิ่งนี้
ด้านล่างของหน้าจอก็มีคำใบ้ว่ากด Alt+G เพื่อดูคีย์ลัด และ Ctrl+G เพื่อดูวิธีใช้
ในแง่นั้น การแนะนำ nano ให้นักศึกษายังคงถูกต้อง และ micro น่าจะเหมาะกับคนที่เรียนรู้จาก nano แล้วต้องการฟีเจอร์มากขึ้นหรือ UI ที่ดีกว่า
เหมือนจะมี โหมดคอมเมนต์ บางอย่างด้วย
ใช้ Emacs มานานกว่า 10 ปี แต่ตอนนี้ใช้ micro เป็นเอดิเตอร์หลักสำหรับเขียนโค้ด มีข้อยกเว้นแค่ตอนเขียน Coq ที่ใช้ vscode
ผมมอง micro เป็น acme เวอร์ชันประนีประนอมแบบสมัยใหม่ และมันมีฟีเจอร์แทบทั้งหมดที่รองรับแนวคิดหลักของ acme ผมยังเขียนปลั๊กอินเพื่อใช้ประโยชน์จากแนวทางนี้ด้วย: https://github.com/xxuejie/micro-acme
จนถึงตอนนี้มันเข้ากับผมได้อย่างสมบูรณ์แบบ
อยากให้เอดิเตอร์อื่น ๆ ทำตามธรรมเนียมที่กดแท็บแล้วบังคับให้ย่อหน้าได้ถูกต้อง
https://github.com/zyedidia/micro/tags
ตอนนี้ปรับแต่ง Micro ให้มี อารมณ์แบบ Acme ไว้แล้ว
ไม่รู้มาก่อนว่ามีคนใช้ nano เป็นเอดิเตอร์หลักสำหรับเขียนโค้ดด้วย บนเซิร์ฟเวอร์ *nix ที่กำลังทำงานอยู่ผมใช้มันเสมอ และน่าจะใช้มาเป็นหมื่นครั้งแล้ว
ผมทำงานเป็นวิศวกร Linux/BSD มานาน แต่บางที่ปฏิเสธที่จะติดตั้ง nano บนเซิร์ฟเวอร์ มี แอดมิน Linux รุ่นเก๋า บางคนที่ไม่ยอมให้ใช้อะไรนอกจาก vi เลย ซึ่งผมไม่เข้าใจ มันเป็นแพ็กเกจ 20MB และพื้นผิวการโจมตีก็ไม่ได้ใหญ่ขนาดนั้น
เวลาถามคนรุ่นก่อนว่าเคยดูแลระบบแบบไหน เขามักคุยโอ่ว่ารับผิดชอบทั้งแผนก IT ของรัฐบาลท้องถิ่นในพื้นที่ตัวเอง และเพราะเป็นเมืองค่อนข้างใหญ่เลยมีผู้ใช้อย่างน้อยสัก 500 คน ซึ่งฟังแล้วผมขำเสมอ
ผมมั่นใจ 105% ว่าระบบนั้นคงปลอดภัยที่สุดในทั้งเคาน์ตี แต่ขณะเดียวกันก็คงเป็น ระบบที่ใช้งานไม่ได้ ด้วย ถ้าคนนั้นเกษียณ หรือมีใครในออฟฟิศกำจัดมันออกไปด้วยความสิ้นหวัง ผมก็หวังว่าจะมีวิศวกรยุคใหม่ที่แม้อาจไม่รู้ vi แต่ใส่ใจผู้ใช้บ้างมาทดแทน แน่นอนว่าเราเองก็เป็นวิศวกร คงไม่ได้ใส่ใจมากนักหรอก
ถ้าทำงานเป็นช่างสาย *nix คุณอาจต้องจัดการระบบอย่าง QNX, HP-UX, ซูเปอร์คอมพิวเตอร์ SGI Altix, Sun Ultra 2 ก็ได้ Linux นั้นง่ายกว่าเพราะมีระบบจัดการแพ็กเกจซอฟต์แวร์เสรี/โอเพนซอร์ส และก่อนที่ nano จะได้รับความนิยม ก็พบได้บ่อยที่ Emacs ถูกรวมอยู่ในชุดตั้งต้น
บางครั้งเกิดปัญหากับเทอร์มินัลจนต้องทำงานในสภาพที่เห็นได้แค่บรรทัดเดียว แล้วก็ต้องควบคุม vi ทั้งที่มองไม่เห็น หรือใช้ sed/awk นั่นอาจเป็นเหตุผลที่สัญชาตญาณ KISS ซึ่งอยากให้ทุกคนเรียน vi ยังคงอยู่ ผมเองก็เรียนมาแบบนั้น
เอดิเตอร์ตัวเดียวไม่ได้สร้างพื้นผิวการโจมตีขนาดใหญ่ แต่ก็ไม่ตัดความเป็นไปได้ที่ผู้โจมตีจะใช้ความสามารถปลั๊กอินในทางที่ผิดเป็น เครื่องมือสร้าง persistence เมื่อรันด้วย root อาจมีพฤติกรรมต่างออกไป แต่กับ service account อาจไม่เป็นเช่นนั้น
https://packages.ubuntu.com/jammy/nano
ตอนนั้นผมหงุดหงิด แต่ตอนนี้พอใจกับการเปลี่ยนแปลง Vim หรือ vi มีอยู่ทุกที่ รวมถึงสวิตช์และเราเตอร์ที่ผมทำงานด้วย nano ไม่ได้มีอยู่ทุกที่ และก็ไม่ได้ใส่เข้าไปได้ง่าย ๆ ทุกที่
ถ้าไม่ได้ SSH เข้าไปยังฮาร์ดแวร์เก่าหรือทรัพยากรจำกัดเป็นประจำ คงรู้สึกถึงข้อดีนี้น้อยกว่านี้
แต่การเลือกเท็กซ์เอดิเตอร์เป็นเรื่องส่วนตัวมาก ๆ การที่ใครจะบังคับคนอื่นให้ใช้หรือไม่ใช้เอดิเตอร์บางตัวนั้นไม่สมเหตุสมผลเลย ปล่อยให้ใช้สิ่งที่เขาชอบก็พอ
JOE ใช้ได้ค่อนข้างดี: https://joe-editor.sourceforge.io/
เป็น ลูกผสมระหว่าง WordStar กับ Emacs และถ้ารันด้วย
jstarก็ให้ประสบการณ์แบบ WordStar ที่ค่อนข้างเหมือนของจริง พร้อมยังมีกลิ่นอายของ Borland Turbo IDE ยุคแรก ๆ อยู่ด้วยตอนนี้ก็ยังเขียนบทความเกี่ยวกับวิธีใช้ปุ่ม WordStar Diamond บน Linux ไว้ด้วย: https://benhoyt.com/writings/wordstar-diamond/
ต่อมาก็ใช้ QEdit ซึ่งตั้งค่าให้ใช้ปุ่มแบบ WordStar ได้ด้วย
ตอนย้ายจาก DOS ไป Unix ช่วงต้นทศวรรษ 90 ก็ยินดีมากที่ได้เจอ JOE เป็นโปรแกรมแรก ๆ ที่ติดตั้งบนเครื่อง Linux หรือ *BSD เครื่องใหม่ รวมถึง VM
ทุกวันนี้ JOE มี syntax highlighting และฟีเจอร์ดี ๆ หลายอย่าง เลยไม่เคยรู้สึกว่าจำเป็นต้องใช้ vi หรือ emacs ให้คล่อง
มันไม่ค่อยเหมาะกับการแก้โค้ด เพราะใกล้กับ โมเดลเวิร์ดโปรเซสเซอร์ มากกว่า เช่น การตัดบรรทัดอัตโนมัติและการขาด syntax highlighting
แต่สำหรับเขียนเอกสารข้อความ มันเป็นเอดิเตอร์ตัวเล็กที่น่ารักมาก
บางทีอาจเป็นผมเองที่หาไม่เจอ แต่ไม่เห็นจริง ๆ
jmacsเพื่อใช้ชุด คีย์ลัดแบบ Emacsชอบ micro และใช้ทุกวัน
แต่พอลองใช้ Helix แล้วก็อยากได้ micro ที่มี treesitter, LSP, ความช่วยเหลือตามบริบท ในตัว Helix ทำชุดฟีเจอร์นั้นออกมาได้ดีมากจริง ๆ แต่ความจำกล้ามเนื้อกับ “โหมดเดียว + คำสั่ง” และ Ctrl-C/Ctrl-V มันสะดวกเกินไปจนย้ายไปใช้ยาก
ไม่เข้าใจว่าทำไมยังมีซอฟต์แวร์ที่บอกให้รัน sudo กับสิ่งที่ดาวน์โหลดจากอินเทอร์เน็ตอยู่
มีทางเลือกที่ง่ายกว่า ปลอดภัยกว่า ขนาดติดตั้งเล็กกว่า และมีมากับทุกดิสโทรอยู่แล้ว แต่ทำไมถึงให้ใช้สคริปต์แบบนั้นก็สงสัย
เทียบกันแล้ว แพ็กเกจ micro ของ Alpine มีขนาดหลังติดตั้ง 4MB ส่วนไบนารีคอมไพล์แบบ static ที่ดาวน์โหลดจาก GitHub มี 11MB ผมมองว่าการใช้แพ็กเกจจาก repository นั้น สมกับความเป็น micro มากกว่า
ถ้าดู https://github.com/zyedidia/micro#quick-install-script สคริปต์ติดตั้งด่วนคือ
curl https://getmic.ro | bashและสคริปต์จะวางไบนารี micro ไว้ในไดเรกทอรีปัจจุบันจากนั้นถ้าต้องการก็ย้ายไปยังไดเรกทอรีที่อยู่ใน path ได้ โดยยกตัวอย่างเป็น
sudo mv micro /usr/binแค่บอกว่าถ้าจะย้ายไป/usr/binก็ต้องใช้ sudo เท่านั้นเอง แบบนั้นมันเป็นปัญหาตรงไหนหรือ(ba)shนั้น ไร้ความรับผิดชอบโดยสิ้นเชิงเบื่อข้ออ้างน่าขันแบบ “ใคร ๆ ก็ทำกัน” แล้ว
ผมอยากได้แอปพลิเคชันโดยตรงจากนักพัฒนา แบบนั้นถึงจะมั่นใจได้ว่าใช้เวอร์ชันที่รองรับอย่างเป็นทางการ และไม่มีใครไปแก้โค้ด
ถ้าไม่เชื่อใจนักพัฒนาแอปพลิเคชัน ผมก็แค่ไม่ติดตั้ง
คิดว่า Nano เป็นทางเลือกสมัยใหม่ของ Pico
สงสัยว่าทำไมถึงสนใจ เอดิเตอร์ตัวเล็ก ๆ แบบนี้
เหตุผลเดียวที่ใช้ vi/vim คือเพราะมันมีอยู่ทุกที่ ถ้าจะติดตั้งเอดิเตอร์อยู่แล้ว ผมคงติดตั้ง Emacs
ถ้าเป็นระบบรีโมต ก็ใช้ tramp เปิดไฟล์ผ่าน SSH เพื่อคงพลังและความเร็วทั้งหมดของ Emacs ในเครื่องไว้เหมือนเดิม สำหรับการแก้ไขผ่าน UI เทอร์มินัลอย่าง sudoedit, git commit, C-x C-e ผมเปิด Emacs เป็นเดมอนไว้ ดังนั้นเฟรมใหม่หรือเฟรมเทอร์มินัลก็ขึ้นทันที และแทบจะเหมือน Emacs GUI รวมถึง nerd font กับสีต่าง ๆ ด้วย พูดตรง ๆ ก็คือมันคือ Emacs
ไม่จำเป็นต้องมีเอดิเตอร์หลายตัวแยกตามงาน
Emacs ดูน่าสนใจกว่า และเมื่อ ssh เข้าอุปกรณ์พลังงานต่ำอย่างเราเตอร์ที่รัน OpenWRT ซึ่งไม่มี Emacs ก็ใช้ Nano เพราะดูเป็นเอดิเตอร์ที่ใช้งานได้แบบเข้าใจง่ายในบรรดาตัวที่มี
รู้ว่าอาจใช้ Emacs กับ TRAMP ได้ แต่ทุกคนก็มีเวิร์กโฟลว์ของตัวเอง ไม่ได้ตั้งใจจะดูถูก vi และเป็นเรื่องที่รู้กันดีว่ามีแฮกเกอร์บางส่วนที่ไม่เคยถนัด vi
บางคนแค่อยากแก้ไฟล์อย่างรวดเร็ว
สามารถใช้ความรู้ที่มีอยู่แล้วจาก Windows Notepad หรือ Mac SimpleText ได้ และยังทำงานได้แม้ในสถานการณ์ที่มีเพียงคอนโซล Unix ของเครื่องที่พังหรือเครื่องเซิร์ฟเวอร์
แต่สนใจเอดิเตอร์ตัวเล็กอย่าง nano มาก เหตุผลอยู่ในคอมเมนต์ต้นทางนี้: https://news.ycombinator.com/item?id=37173126
ย่อหน้าแรกที่นี่ก็น่าอ้างอิง: https://linuxize.com/post/how-to-use-nano-text-editor/
สำหรับผู้ดูแลระบบยุคนี้ที่ไม่ได้โตมากับ vi หรือ vim และไม่ได้เลือกฝั่ง emacs การ ใส่ nano ไว้ในอิมเมจสำหรับแจกจ่ายจำนวนมาก ถือเป็นทางเลือกที่สุภาพ
ผมไม่ได้แก้อะไรจากระยะไกลบ่อยนัก และโดยมากก็เป็นแค่ไฟล์ตั้งค่าง่าย ๆ
เคยลอง micro แล้วก็ชอบ แต่บน Pi มันไม่ได้เปิดได้ทันที และงานที่ทำก็ไม่ได้ใหญ่จนจำเป็นต้องมีฟีเจอร์ของเอดิเตอร์บรรทัดคำสั่งจริง ๆ
ปกติชอบ vim มากกว่า แต่การแจกจ่ายคอนฟิกดี ๆ ไปยังระบบเป้าหมายต้องใช้ความพยายามมากเกินไป
ปัญหาที่เจอใน micro คือ การวางพร้อมจัดรูปแบบ
เมื่อวางชิ้นส่วนโค้ด micro จะพยายามจัดย่อหน้าในแต่ละบรรทัด แต่เพราะไม่รู้บริบททั้งหมด ย่อหน้าของข้อความที่วางจึงลึกขึ้นเรื่อย ๆ แบบไม่มีที่สิ้นสุด
กระบวนการยังช้าจนแทบหยุด เพราะต้องเดารูปแบบทีละบรรทัด แทนที่จะวางแล้วนั่งดูฉากแบบ Matrix ก็กลายเป็นต้องไปเอากาแฟ
หวังว่าจะแก้แล้ว แต่ตอนนั้นผมเลิกใช้ไปแล้ว ถ้าแก้แล้วก็อาจลองอีกครั้ง
set autoindent offhttps://github.com/zyedidia/micro/blob/master/runtime/help/o...
ถึงอย่างนั้น แม้เปิดใช้อยู่ เวลาวางทั้งบล็อกก็ควรจัดย่อหน้าให้ถูกต้อง
ถ้าแชร์การตั้งค่า สภาพแวดล้อม และคอนฟิกมาได้ ผมอาจลองทำแพตช์ให้
ขึ้นอยู่กับวิธีการวาง ไม่แน่ใจ 100% ว่ามันทำงานอย่างไร แต่ดูเหมือน micro จะทำการวางใหม่เองโดยตรงผ่าน xclip และบน Windows ก็ไม่รู้ว่าทำอะไร
ถ้าวางด้วย Ctrl+V มันจะแทรกเนื้อหาในคลิปบอร์ดเป็นบล็อกทันทีและคัดลอกย่อหน้าเดิมมา ถ้าใช้ Ctrl+Shift+V บางครั้งเทอร์มินัลจะประมวลผลเหมือนคลิปบอร์ดไหลเข้ามาทีละอักขระ และเมื่อเจออักขระขึ้นบรรทัดใหม่โดยไม่รู้ตัวอักษรถัดไป ก็จะเพิ่มย่อหน้าเข้าไป แล้วซื่อ ๆ เติมแท็บเพิ่มอีกหลายตัว
จากการส่งอื่น ๆ 14 รายการ บทความปี 2020 มี 103 คอมเมนต์ และบทความปี 2021 มี 162 คอมเมนต์
[0]: https://news.ycombinator.com/item?id=23334190
[1]: https://news.ycombinator.com/item?id=29128702