- Microsoft Edit คือ โปรแกรมแก้ไขข้อความแบบเรียบง่าย ที่สร้างขึ้นเพื่อคารวะแด่ MS-DOS Editor แบบคลาสสิก
- มี อินเทอร์เฟซสมัยใหม่ และการควบคุมการป้อนข้อมูลที่คล้ายกับ VS Code
- เป้าหมายการพัฒนาคือการมอบ สภาพแวดล้อมการแก้ไขที่ผู้ใช้ซึ่งไม่คุ้นเคยกับเทอร์มินัลก็เข้าถึงได้
- มีการพึ่งพาไลบรารี ICU แบบเลือกใช้สำหรับฟีเจอร์ Search and Replace
- มีคำแนะนำเกี่ยวกับ การตั้งชื่อไฟล์ปฏิบัติการและตัวเลือกตัวแปรสภาพแวดล้อมอย่างชัดเจนสำหรับผู้ดูแลแพ็กเกจ
ภาพรวมโครงการโอเพนซอร์ส
- Microsoft Edit คือ โปรแกรมแก้ไขข้อความสไตล์เอดิเตอร์คลาสสิกสำหรับงานง่าย ๆ
- จุดเด่นคือการ ตีความ MS-DOS Editor ใหม่ในแบบสมัยใหม่ พร้อมใช้ UI และรูปแบบการป้อนข้อมูลที่คุ้นเคยในสไตล์ VS Code
- ออกแบบโดยเน้นเป็นพิเศษที่ ความเรียบง่ายเพื่อให้ผู้ใช้ที่มีประสบการณ์ใช้งานเทอร์มินัลน้อยก็ใช้งานได้ง่าย
คุณลักษณะและฟังก์ชัน
- มีความซับซ้อนน้อยที่สุด แต่ยัง ทำงานแก้ไขข้อความพื้นฐานได้อย่างสะดวก
- อินเทอร์เฟซให้ความรู้สึกคุ้นเคย และให้ความสำคัญกับ การเข้าถึงและความสะดวกในการใช้งาน
- รองรับฟีเจอร์ Search and Replace โดยพึ่งพา ไลบรารี ICU (International Components for Unicode) แบบเลือกใช้
ข้อควรระวังสำหรับผู้จัดการแพ็กเกจและผู้ทำแพ็กเกจ
การตั้งชื่อแพ็กเกจ
- ชื่อไฟล์ปฏิบัติการหลักคือ "edit" และชื่อทางเลือกคือ "msedit"
- เนื่องจากอาจเกิดปัญหาชนกับคำสั่งระบบเดิมอย่าง "edit" จึงแนะนำให้ใช้ชื่อทางเลือก เช่น "msedit"
- แนะนำให้หลีกเลี่ยงชื่ออย่าง "ms-edit"
การตั้งชื่อไลบรารี ICU (SONAME)
- สามารถใช้ไลบรารี ICU สำหรับฟีเจอร์ Search and Replace ได้
- ไลบรารีที่ค้นหาเป็นค่าเริ่มต้นในแต่ละระบบปฏิบัติการมีดังนี้
- Windows:
icuuc.dll
- macOS:
libicuuc.dylib
- UNIX และอื่น ๆ:
libicuuc.so
- หากชื่อไลบรารี (SONAME) แตกต่างกันไปตามสภาพแวดล้อมของระบบ สามารถกำหนดผ่านตัวแปรสภาพแวดล้อมต่าง ๆ (
EDIT_CFG_ICUUC_SONAME, EDIT_CFG_ICUI18N_SONAME เป็นต้น) ได้
- มีตัวแปรสภาพแวดล้อมเพิ่มเติมสำหรับกรณีที่ กฎการตั้งชื่อ ICU export symbol แตกต่างออกไป
อื่น ๆ
- มีตัวเลือกเพิ่มเติม เช่น การตรวจจับ ICU renaming อัตโนมัติ และการรองรับ C++ symbol
- สามารถทดสอบเพื่อตรวจสอบการตั้งค่าเหล่านี้ได้ด้วยคำสั่ง
cargo test -- --ignored
บทสรุป
- เป็น โปรแกรมแก้ไขโอเพนซอร์ส ที่ให้ความสำคัญกับความเรียบง่ายและการเข้าถึง พร้อมทั้งรองรับการปรับแต่งสภาพแวดล้อมอย่างยืดหยุ่น
- มอบแนวทางที่ชัดเจนและความเข้ากันได้สูงสำหรับ นักพัฒนา ผู้มีส่วนร่วมในโอเพนซอร์ส และผู้ดูแลแพ็กเกจ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ฟังดูเป็นโปรเจกต์แบบ “ทำเพราะอยากทำเองล้วนๆ” ซึ่งผมเองก็จำได้ว่าเคยได้ประสบการณ์แบบทำอะไรขึ้นมาเองเพื่อให้เข้าใจหลักการทำงานภายในอยู่บ่อยๆ แต่เวอร์ชันที่เขียน Turbo Vision ขึ้นใหม่ด้วย FPC และคอมไพล์รองรับหลายเป้าหมายนั้นมีมาราว 20 ปีแล้ว ผมคิดว่า Turbo Vision คือไลบรารีหน้าต่างโหมดข้อความที่ดีที่สุด ความสนุกจริงๆ เริ่มตรงส่วนที่แมปหน้าจอข้อความทั้งจอเป็นอาร์เรย์ var Screen: Array[1..80,1..25] Of Byte Absolute $B800 จำได้ว่าประมาณนี้ จุดที่ Turbo Vision ปฏิวัติจริงๆ คือมันมีหน้าต่างแบบโมดัล/ไม่โมดัลที่ย้ายตำแหน่งได้ สุดท้ายก็คือวนลูปอาร์เรย์นั้นแล้วเขียนทับใหม่อยู่ตลอด ซึ่งเร็วใช้ได้เลย ผมก็จำได้ว่าเคยทำเงินจากไลบรารีนี้ได้ไม่น้อย
เผื่อใครสนใจ ตอนนี้มี C++ Turbo Vision เวอร์ชันสมัยใหม่ และพอร์ตที่รองรับ Unicode ด้วย https://github.com/magiblot/tvision
อาร์เรย์ของ TP เป็นแบบ row-major ตัวอักษรหนึ่งตัวกิน 2 ไบต์ (ตัวอักษร+แอตทริบิวต์) ดังนั้นจึงมีความสะดวกแบบ
array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000ด้วย สำหรับจอข้อความขาวดำก็แค่เปลี่ยน$B800เป็น$B000เช่นสภาพแวดล้อมอย่าง Herculesถ้าอินเทอร์เฟซแบบนี้ใช้ในเทอร์มินัลของ VSCode ได้ (แม้กระทั่งผ่านรีโมต) คงดีมาก
อยากรู้ว่าเขาหาเงินจากไลบรารีนั้นได้อย่างไร อยากให้แชร์เคล็ดลับหน่อย
ทุกครั้งที่เห็น TUI framework รุ่นใหม่ๆ ผมจะนึกเสมอว่า “ยังสู้ Turbo Vision ไม่ได้”
ในอีกด้านหนึ่ง พวกเขากลับยัดของเทอะทะไม่จำเป็นอย่าง AI Copilot เข้าไปใน Notepad จุดสำคัญของ Notepad เดิมในความทรงจำของผมคือมันไม่มีฟีเจอร์อะไรเกินจำเป็นและทำ “อย่างเดียว” ให้ดี
Edit ตัวใหม่เองก็ไม่ได้หลุดพ้นจากแนวคิดแบบนี้ ยุค Satya นั้น MS ทำเหมือนชอบ FOSS แต่ในความทรงจำของผม ยุค Gates/Balmer กลับเป็นมิตรกับนักพัฒนา Windows มากกว่า ทุกวันนี้เฟรมเวิร์กเว็บ/เดสก์ท็อปปนกันมั่วไปหมด และแม้แต่ภายในเองก็แทบไม่ใช้กันแล้ว จากเดิมที่เคยมี VS wizard หรือปลั๊กอิน กลายเป็นใช้ CLI tool มาดัมพ์ไฟล์ Excel อะไรทำนองนั้น มันสะท้อนทั้งวัฒนธรรมการพัฒนา Windows ที่ขาดช่วงข้ามรุ่น และการขาดองค์ความรู้ในฝ่ายบริหาร
Raymond Chen เคยพูดว่า Notepad ถูกใช้ในการทดสอบหลายอย่างอย่างน่าประหลาดใจ เป็นฟังก์ชันเรียบง่ายแต่ถูกหยิบมาใช้เป็นเครื่องมือทดลองบ่อย https://devblogs.microsoft.com/oldnewthing/20180521-00/?p=98795
ผมลองวางสกรีนช็อตลงใน Paint ใหม่บน Windows 11 แล้วพบว่าแม้จะย่อหน้าต่างอยู่ มันก็ยังใช้ CPU 5% ต่อเนื่องและกินหน่วยความจำราว 250MB เรื่อง RAM นั้นพอว่าได้ แต่การเปลือง CPU แบบนี้ผมว่าไม่ไหว สมัยก่อนยังพอมีความภูมิใจในงานหรือการควบคุมคุณภาพอยู่บ้าง
ตอน ISP มีปัญหาขัดข้องเป็นช่วงๆ (ปัญหา IPv4/MTU) แม้แต่การเซฟใน Notepad ก็ทำไม่ได้ ต้องบังคับปิดอย่างเดียว ตอนนั้นผมกำลังตั้งค่าเลี่ยงชั่วคราวด้วย Wireguard อยู่
ถ้าลบ modern notepad ออก จะค้นหา notepad แบบเก่าจากเมนู Start ก็ไม่ขึ้น
ผมจำได้ว่าประมาณหนึ่งเดือนก่อนเคยได้ยินว่า MS ออก Linux distribution ที่เป็นมิตรกับผู้ใช้ Windows มากขึ้น เท่าที่จำได้มันเป็นแค่สภาพแวดล้อม GNOME ธรรมดา ไม่มีอะไรพิเศษ จริงๆ แล้วถ้า MS จะทำดิสโทร Linux ของตัวเอง ก็น่าจะเปลี่ยน bash เป็น powershell เปลี่ยน Edit เป็น vim/nano อะไรพวกนั้น และใส่ .NET หรือ Visual Studio Code มาเป็นเครื่องมือพัฒนาเริ่มต้นได้เลย... ถ้า MS ใช้มันเป็นดิสโทรเริ่มต้นของ WSL ต่อให้ชนะสงครามไม่ได้ แต่อย่างน้อยก็น่าจะเพิ่มส่วนแบ่งผู้ใช้ได้บ้าง ถึงจะคุมเคอร์เนลไม่ได้ แต่อย่างน้อยก็คุม userland ได้ ผู้ใช้ Windows จำนวนมากก็คงต้องใช้เครื่องมือของ MS แบบเป็นธรรมชาติผ่านแอปติดตั้งมาแต่แรก ตอนนี้ Microsoft Edit ก็ใช้บน Linux ได้แล้ว เช่นเดียวกับ Powershell และแอปอื่นๆ ถ้าใช้กลยุทธ์นี้ตั้งแต่ 10 ปีก่อน ก็พอจินตนาการได้ว่าวันนี้ดิสโทรของ MS ใน WSL อาจติดอันดับท็อป 5 ไปแล้ว ในอีกมุมหนึ่ง ผมก็รู้สึกไม่ค่อยสบายใจที่บริษัทยักษ์ใหญ่อย่าง M$ จะยื่นอิทธิพลมาถึงพีซีส่วนตัวของผม สุดท้ายผมก็จินตนาการต่อว่า Microsoft Edit ตัวนี้จะมี Co-Pilot ติดมาด้วยเป็นค่ามาตรฐานในสักวัน
ผมคิดว่าสักวันหนึ่ง MS น่าจะค่อยๆ ขยับไปทาง Linux อย่างน้อยก็เริ่มจากบางส่วนอย่าง Windows Server หรือ Windows แบบฝังตัว ระยะยาวแม้แต่เดสก์ท็อป Windows ก็น่าจะค่อยๆ เปลี่ยนไปจนมีตัวเลือกแบบ ‘Windows Legacy’ กับ ‘Windows Linux Workstation’ ผมคาดว่าจะพัฒนาไปเป็น Linux kernel + WINE ที่จูนมาอย่างดี + VM แบบบูรณาการสำหรับของ legacy บางส่วน ปัญหาคือ NT kernel มีหลายจุดที่ตามการออกแบบแล้วล้ำกว่า Linux (เช่น กู้ระบบได้หลังไดรเวอร์ GPU ล่มทั้งก้อน) แต่ตัว Windows เองกำลังกลายเป็นภาระมากกว่าสินทรัพย์เรื่อยๆ แรงขับเคลื่อนการเติบโตของ MS จริงๆ คือ Azure กับ Office 365 ส่วนไลเซนส์ Windows แทบจะนิ่งแล้ว อย่างน้อย Windows server และ workstation ที่มีฐานเป็น Linux ก็น่าจะพอคาดหวังได้
Azure Linux (เดิมชื่อ CBL-Mariner) คือ Linux distribution อย่างเป็นทางการของ MS ที่ทำมาสำหรับคอนเทนเนอร์, VM และเซิร์ฟเวอร์ ต้องแยกจากพวกสกินหรือเดสก์ท็อปเอนไวรอนเมนต์สำหรับผู้ใช้ Windows ทั่วไป
MS เคยมี Linux distribution ของตัวเองชื่อ “Xenix” มาก่อน แต่จำได้ว่าผลงานไม่ค่อยดี
เบื้องหลังการเกิด WSL คือความต้องการสภาพแวดล้อม Linux ของนักพัฒนาในองค์กรขนาดใหญ่ ฝั่ง IT support ไม่ค่อยรู้จัก Linux และก็ไม่อยากรองรับด้วย WSL จึงเข้ามาแก้ปัญหานี้ จริงๆ แล้วนักพัฒนาจำนวนมากไม่ได้อยากใช้ Linux และหลายคนก็ไม่ถนัดเทอร์มินัลด้วย พึ่งพาเครื่องมือ GUI เป็นหลัก
การที่ MS จะดูแลดิสโทรลับของตัวเองเพื่อเอาใจอารมณ์ความรู้สึกของผู้ใช้ Windows ฟังดูไม่ค่อยสมจริงนัก
ข่าวนี้ร้อนแรงถึงขนาดถูกโพสต์ขึ้นมาถึง 3 ครั้งภายในสัปดาห์เดียว
เดิมที edit.com (ตั้งแต่ DOS 6.22 ต่อมา 7.0/Windows 95) คือ IDE ตัวแรกของผม เริ่มจาก qbasic และมันก็แทบเป็นโปรแกรมเดียวกันกับ edit.com ตอนเรียน C/C++ ด้วย djgpp ผมก็ยังใช้ edit.com ต่อไป “ไฟล์โปรเจกต์” ของผมคือ
e.batที่เปิดหลายไฟล์พร้อมกันได้แบบedit file1.cpp file2.cpp...เอ็ดิเตอร์อื่นสลับหลายไฟล์ลำบาก แต่ตัวนี้กด alt-1,2,3... เพื่อสลับได้ทันที ซึ่งผมชอบมาก ทุกวันนี้เวลาปรับคีย์ลัดของเอ็กดิเตอร์ ผมก็ยังพยายามคงสไตล์นี้ไว้ แม้ว่าในฐานะ code editor มันจะค่อนข้างห่วย ไม่มี syntax highlighting และช่วยเรื่อง indentation ไม่ค่อยดีนัก (ผมเลยเริ่มต้นด้วยการย่อหน้าแค่สองช่อง เพราะทำมือได้ง่ายกว่า) ถึงอย่างนั้น ฟีดแบ็กที่ได้ทันทีจากโค้ดที่เขียนและความคุ้นเคยนั้นยอดเยี่ยมมาก เคยมีเอ็กดิเตอร์อย่าง qedit ด้วย แต่ไม่ใช่แนวของผม และผมรู้สึกว่าเอ็กดิเตอร์สาย Unix ไม่ค่อยเวิร์กบน DOS สำหรับ editor ใหม่ตัวนี้มันรองรับ multi-buffer ก็จริง แต่ดูเหมือนจะไม่ได้ใช้รูปแบบ key binding แบบที่ผมคุ้นเคยน่าจะเปิดเป็น issue ได้ ฟีดแบ็กแบบนี้ถ้าส่งตั้งแต่ช่วงต้นๆ มักมีโอกาสถูกนำไปใช้จริง และจริงๆ แล้วมันไม่ใช่แค่ “คล้ายกัน” เพราะ edit.com ก็คือ qbasic ที่บูตขึ้นมาพร้อมแฟล็กเพิ่มหนึ่งตัวเท่านั้น ผมเคยเรียก qbasic พร้อมแฟล็กนั้นมาใช้โดยตรงด้วย https://news.ycombinator.com/item?id=44037509
ถึงจะไม่มี syntax highlighting แต่มันมีการทำ syntax uppercasing (เช่น แปลง reserved word เป็นตัวพิมพ์ใหญ่โดยอัตโนมัติ) อย่างเช่น ต่อให้พิมพ์ทั้งบรรทัดเป็นตัวพิมพ์เล็ก พอกด Enter แล้ว reserved word ก็จะกลายเป็นตัวพิมพ์ใหญ่เอง ไม่ใช่อะไรใหญ่โต แต่สะดวกดีมาก
เมื่อเทียบกับยุค
copy conแล้ว edit ถือเป็นผู้กอบกู้จริงๆมีหลายอย่างที่ผมชอบมาก อย่างแรกเลยคือรายการ dependencies ที่สะอาดแบบไม่มีส่วนเกิน! ประทับใจสุดๆ แทบไม่อยากเชื่อว่าเขาทำ TUI ทั้งชุดขึ้นมาเองเพื่อเอ็กดิเตอร์ตัวนี้โดยเฉพาะ มีทั้งไดอะล็อกและ file browser ด้วย ผมอยากลองเอาไปใช้กับโปรเจกต์ของตัวเองบ้าง ถ้ามีคนเกี่ยวข้องผ่านมา ผมอยากรู้ว่าทำไมถึงไม่ใช้ Ratatui คุณภาพโค้ดดีมาก สรุปสั้นๆ คือ: Bravo!
เมื่อก่อนผมเคยแนะนำ micro[1] ให้คนที่หา text editor แบบนี้ เดี๋ยวนี้เริ่มลังเลว่าควรแนะนำอะไรดี
https://micro-editor.github.io/
ผมว่าไม่จำเป็นต้องเปลี่ยนคำแนะนำ edit อย่างน้อยจากที่ผมลอง ยังไม่รองรับ syntax highlighting
ล่าสุดที่เช็ก ขนาดไฟล์ไบนารีมันใหญ่เสียจนเรียกว่า macro มากกว่า micro
อีกตัวเลือกคือ dte[1] รองรับ Unicode, CUA key binding ฯลฯ เรียบง่ายแต่ทรงพลังมาก ผมใช้แทน nano เป็น terminal editor อย่างพอใจ https://craigbarnes.gitlab.io/dte/
บน Windows ติดตั้งได้ง่ายๆ ด้วย
winget install zyedidia.microให้อารมณ์เหมือนเอ็กดิเตอร์ยุค 8-bit/16-bit สมัยก่อนผมสงสัยจริงๆ ว่าในองค์กรใหญ่แบบ MS โปรเจกต์แนวนี้ผ่านอนุมัติได้อย่างไร มันเป็นแค่ side project ของนักพัฒนา เป็นส่วนหนึ่งของ product roadmap หรือมีการโน้มน้าวฝ่ายผู้นำด้วยหรือเปล่า
text editor เป็นเป้าหมายที่เหมาะมากสำหรับการบุกผสาน copilot
อย่างที่คำอธิบายเหตุผลบอกไว้ พวกเขาต้องการเอ็กดิเตอร์ที่ทำงานบน command line ได้ (สำหรับ Windows Core Server Install) ต้องใช้ผ่าน SSH ได้ด้วย (Windows มี SSH server ติดมาเป็นค่าเริ่มต้นตั้งแต่หลายปีก่อนแล้ว) และต้องการเอ็กดิเตอร์แบบไม่เป็น modal สำหรับผู้ดูแล Windows ที่ไม่มีประสบการณ์กับ vi ความต้องการเหล่านี้จึงนำมาสู่โปรเจกต์นี้
แต่ละทีมอาจต้องหาไอเดียมาเติมโควตาอะไรบางอย่าง บางครั้งก็เป็นคำสั่งจากผู้บริหาร (เช่น ให้ใช้ copilot) หรือเริ่มจากงานอย่าง hackathon แล้วค่อยขยายต่อ ในองค์กรวิจัย ถ้าคนเทคนิคยังว่างมือ ของแบบนี้ก็อาจโผล่มาได้ หรือบางทีกว่าจะได้งบก็ผ่านการวิเคราะห์กันมายาวนาน ดูจากจำนวนคอมมิตเตอร์แล้ว นี่น่าจะเป็นการลงทุนเชิงกลยุทธ์พอสมควร ไม่ใช่โปรเจกต์ที่โผล่มาแบบข้ามคืน
หวังว่าสักวันจะมี EDLIN เวอร์ชันรองรับ Unicode ออกมา EDLIN สามารถป้อนคีย์อินพุตผ่าน pipe จากแบตช์ไฟล์เพื่อทำงานอัตโนมัติเฉพาะอย่างได้ เลยเป็นตัวแทน sed หรือ awk บางส่วนได้ ผมคิดว่า vi ก็มีสถาปัตยกรรมคล้ายๆ กัน แต่อีกเรื่องหนึ่งก็คือมันผิดธรรมชาติแค่ไหน
edมากกว่า ถ้าใส่-sก็เหมาะกับการใช้ในสคริปต์เลยกระทู้ที่เกี่ยวข้อง (271 คะแนน, 185 ความเห็น) https://news.ycombinator.com/item?id=44031529