Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows

ทำไม Terminal แบบคลาสสิกของ Windows จึงเกินสมัย Microsoft รุ่นใหม่

เผยแพร่เมื่อวันที่ 26 เมษายน 2569 เวลา 10:00 น. EDT

Tashreef เริ่มหลงใหลเทคโนโลยีผู้บริโภกที่ห้องสมุดโรงเรียนเมื่อพบนิตยสารเทคโนโลยี CHIP ซึ่งสุดท้ายจูงให้เขาศึกษาวิทยาการคอมพิวเตอร์ ตั้งแต่ปี 2555 Tashreef เขียนบทความ how-to มากกว่า 1,000 บทความ ให้กับ Windows Report และ How-To Geek ปัจจุบันเขาเน้นเนื้อหา Microsoft Windows ที่ MakeUseOf ซึ่งเขาใช้มาตั้งแต่ปี 2550

ด้วยประสบการณ์โดยตรงในการสร้างเว็บไซต์และบล็อกเทคโนโลยี เขานำมุมมองนักพัฒนาที่ปฏิบัติจริงมาสู่การเขียนเทคนิค ดูพอร์ตโฟลิโอครบได้ที่ itashreef.com

คุณอาจพบวิดีโอสั้นๆ ของเขาที่อธิบายหัวข้อซับซ้อนให้เข้าใจง่าย นอกจากเขียน Tashreef ยังชอบสร้างวิดีโออธิบายสั้นๆ เล่นเกม และดูอนิเมะ

Windows Terminal กลายเป็นหนึ่งในสิ่งที่ Microsoft ส่งมอบได้ดีที่สุดอย่างเงียบๆ แท็บ Split panes Quake mode ที่เหมาะสม GPU rendering รองรับ Unicode ได้ดี และ Settings UI ที่ไม่บังคับให้แก้ JSON เว้นแต่ต้องการ มันคือ Terminal ที่ผมใช้โดยค่าเริ่มต้น และผมไม่มีเหตุผลที่จะมองหาที่อื่นมานานแล้ว

ก่อนที่ Windows Terminal จะดีขนาดนี้ ผมใช้ Cmder มันคือแพ็กเกจที่ทำให้การทำงานใน Windows shell ทนทานได้ มัน portable มาพร้อม Git for Windows และมีค่าเริ่มต้นที่สมเหตุสมผลมาก ผมคิดว่าจะทิ้งมันทันทีที่ Terminal ของ Microsoft ติดเท้าจับคู่กับ profiles และ shell integration ที่เหมาะสม และในส่วนใหญ่ก็เป็นเช่นนั้น แต่มันไม่เคยจากระบบของผมหมด เพราะยังมีบางอย่างที่ชุดเก่าๆ นี้ทำได้ดีกว่าอะไรก็ตามที่ Microsoft ส่งมอบเอง

Git ls grep ssh พร้อมใช้งานบนเครื่อง Windows ใดๆ

Windows Terminal เป็นแค่ terminal host มันเรนเดอร์ shell ที่คุณชี้ไป แต่ไม่ได้นำเครื่องมือมาด้วย บน Windows ติดตั้งใหม่ cmd และ PowerShell ยังไม่มาพร้อมคำสั่ง Unix ที่ผมใช้ทุกวัน ไม่มี ls grep cat หรือ ssh หากต้องการ ต้องติดตั้ง Git for Windows แยก จัดการ PATH และทำซ้ำบนเครื่องใหม่ทุกครั้ง

Cmder ไม่มีปัญหานี้ รุ่น full ประมาณ 100 MB มาพร้อม Git for Windows ที่รวมอยู่ในตัว (vendored) หมายความว่าผมได้ git, ls, grep, cat, ssh และ bash shell ที่ใช้งานได้โดยไม่ติดตั้งอะไรเพิ่ม คำสั่งทั้งหมดที่ใช้บน Linux box ทำงานได้ทันทีจากไฟล์ Zip

มันยังผนวก Clink เข้า cmd อีกด้วย ซึ่งให้การแก้ไขบรรทัดคำสั่งแบบ bash นั่นคือ reverse history search ด้วย Ctrl+R tab completion ที่ดีกว่า และ shortcuts ที่รู้สึกเป็นธรรมชาติสำหรับคนที่เคยอยู่ใน Linux shell cmd ธรรมดาใน Windows Terminal ไม่ทำอะไรได้แบบนี้โดยไม่ติด Clink เอง

ประโยชน์จริงคือการชี้ Windows Terminal profile ไปที่ init.bat ของ Cmder ให้ผมได้ทดีของทั้งสองโลก: GPU rendering และ tab handling ของ Windows Terminal และ shell ของ Cmder เติม Unix tools ทุกอย่างที่ผมต้องการเข้าไปใน environment เงียบๆ

Cmder เป็นแบบ portable

ทั้ง environment อยู่ในโฟลเดอร์เดียว คัดลอกไปไหนได้

Portability เป็นอีกเหตุผลที่ Cmder ยังมีข้อได้เปรียบเหนืออะไรที่ Windows เสนอ Windows Terminal เป็นแอป Store ผูกกับ Microsoft account และ OS เอง คุณไม่สามารถคัดลอกไปเครื่องอื่นได้ Cmder อยู่ปลายตรงข้าม

มันเป็นโฟลเดอร์เดียว เมื่อแตก zip ไปที่ C:\tools\Cmder ตั้งค่า environment variable %CMDER_ROOT% และนั่นคือการตั้งค่าทั้งหมด หากต้องการย้ายไปไดรฟ์อื่นหรือเครื่องอื่น เพียงคัดลอกโฟลเดอร์ ทุกอย่างเดินทางไปพร้อมกัน รวมถึง aliases, color scheme, keyboard shortcuts, Git ที่รวมอยู่ และ binary ใดๆ ที่วางในโฟลเดอร์ bin เพื่อใส่ PATH

Windows Terminal ให้ export settings ได้ แต่ครอบคลุมแค่ Windows Terminal เอง ไม่นำ Git binary, Unix tools หรือ aliases ไปด้วย Cmder จัดการ whole shell environment เป็นหน่วย portable เดียว และไม่มีอะไรที่ Microsoft ส่งมอบเทียบเท่าได้

ไฟล์ alias ของ Cmder ชนะการตั้งค่า PowerShell profile

ไฟล์ข้อความธรรมดาสำหรับ shortcut ไม่ต้องเขียนสคริปต์

Portability จะมีแต่ครึ่งหนึ่งของความน่าดึงดูด หากผมต้อง rebuild shortcuts บนทุกเครื่อง นี่คือที่ที่ไฟล์ alias ของ Cmder คุ้มค่า และเป็นชิ้นส่วนที่ผมไม่เคยหาทางเลือกแทนที่สะอาดใน PowerShell แบบบริสุทธิ์

Cmder เก็บ aliases ในไฟล์ข้อความธรรมดาใต้โฟลเดอร์ config และ syntax เรียบง่ายที่สุด หนึ่งบรรทัดต่อ alias เช่น alias gs=git status $* หรือ alias ..=cd .. และ shortcut ทำงานทันทีครั้งหน้าที่เปิด shell ไม่ต้องกังวลเรื่องสคริปต์ execution policy หรือหา profile path ที่ถูกต้อง หากเคยตั้งค่า PowerShell profile ด้วยคำสั่งที่นำกลับมาใช้จริง คุณรู้ความต่าง

PowerShell profile เป็นไฟล์สคริปต์ที่รันตอน startup อยู่ที่หนึ่งในหลายพาธใต้ Documents ขึ้นอยู่กับ host และ version ของ PowerShell Set-Alias จัดการแค่ mapping คำสั่งต่อคำสั่งอย่างง่าย ดังนั้นสิ่งที่ต้องการ arguments เช่น gs ขยายเป็น git status พร้อม flags ต้องเขียนเป็น function เต็มรูปแบบ นั่นโอเคถ้าคุณชอบเขียน PowerShell แต่เป็นพิธีการมากเกินไปถ้าอยากได้แค่ shortcut สองตัวอักษรสำหรับ git status

จุด portability ทำให้สิ่งนี้หนักขึ้นอีก ไฟล์ alias ของผมอยู่ในโฟลเดอร์ Cmder หมายความว่าเมื่อคัดลอก Cmder ไปเครื่องใหม่ ทุก shortcut ที่เคยกำหนดก็ไปด้วย PowerShell profile ไม่เดินทางมาด้วยเว้นแต่ sync Documents path อย่างชัดเจน และ即便如此ก็แค่ครึ่งหนึ่งของการตั้งค่า

ทำไมชุดเก่านี้จึงยังคงมีที่อยู่

ผมจะยอมรับเป็นคนแรกว่า UI ของ Cmder แสดงอายุแล้ว การเรนเดอร์ช้าตรงกับ Windows Terminal ที่เร่งด้วย GPU tab handling เบื้องต้น และ UI ของ ConEmu ที่อยู่ด้านล่างดูเหมือนออกแบบมาเมื่อสิบปีก่อน หากคุณยังเปิด Cmder โดยตรง ผมเข้าใจว่าทำไมอยากย้าย

เคล็ดลับคือหยุดจัดการ Cmder เป็น terminal และเริ่มจัดการมันเป็น shell bundle ภายใน Windows Terminal ชี้ WT profile ไปที่ init script ของ Cmder และ UI เก่าจะไม่โหลดอีกต่อไป สิ่งที่คุณเก็บคือ Unix tooling, โฟลเดอร์ portable และไฟล์ alias ห่อหุ้มใน renderer สมัยใหม่ของ Microsoft Cmder สร้างขึ้นจากความหงุดหงิดกับ Windows console emulators และ Microsoft ได้แก้ไขส่วนใหญ่ของความหงุดหงิดด้าน rendering แล้ว ส่วนที่ยังไม่ได้แก้ ก็คือเหตุผลที่ชุดเก่านี้ยังคงมีที่อยู่