Tento staromódny Windows terminál stále robí niekoľko vecí lepšie než Microsoft
Windows Terminal sa ticho stal jednou z lepších vecí, ktoré Microsoft dodáva. Karty, rozdelené panely, správny Quake režim, GPU vykresľovanie, veľmi použiteľná podpora Unicode a používateľské rozhranie nastavení, ktoré ma nenúti upravovať JSON, pokiaľ nechcem. Je to terminál, na ktorý mám prednastavené predvolenie, a už dlho som nemal dôvod pozerať sa inde.
Predtým, než bol Windows Terminal taký dobrý, som však používal Cmder. Bol to balík, ktorý robil prácu v prostredí Windows shell znesiteľnou. Bol prenosný, balený s Git pre Windows a ponúkal oveľa rozumnejšie predvolené nastavenia hneď po inštalácii. Predpokladal som, že ho odstránim v momente, keď Microsoftov vlastný terminál dobehne s riadnymi profilmi a integráciou shellu, a väčšinou som tak urobil. Ale Cmder nikdy úplne neopustil moju výbavu, pretože stále existuje niekoľko vecí, ktoré stará dobrá sada robí lepšie než čokoľvek, čo Microsoft sám ponúka.
Cmder poskytuje Windows Terminálu Unixové nástroje, ktoré mu chýbajú
Git, ls, grep a ssh sú pripravené na použitie na každom počítači so systémom Windows
Windows Terminal je iba terminálový hosť. Zobrazí akýkoľvek shell, na ktorý ho nasmerujete, ale neprináša so sebou žiadne nástroje. Na čistej inštalácii Windows cmd a PowerShell stále neobsahujú Unix príkazy, ktoré používam každý deň. Nemá ls, grep, cat ani ssh. Ak niečo z toho chcem, musím si samostatne nainštalovať Git pre Windows, riešiť PATH a opakovať tento postup na každom novom počítači.
Cmder nemá tento problém. Plná verzia má približne 100 MB a obsahuje dodávanú inštaláciu Git pre Windows, čo znamená, že získam git, ls, grep, cat, ssh a funkčný bash shell bez potreby inštalovať čokoľvek navyše. Všetky príkazy, ktoré by som používal na Linuxovom počítači, fungujú priamo z archívu Zip.
Tiež to pripája Clink k cmd, čo poskytuje úpravu príkazového riadku v štýle bash. To znamená spätné vyhľadávanie histórie s Ctrl+R, lepšie dopĺňanie pomocou tabulátora a druh skratiek, ktoré pôsobia prirodzene, ak ste strávili nejaký čas v Linuxovom shelli. Bežný cmd vo Windows Terminal toto všetko nerobí, pokiaľ si Clink nepridáte sami.
Praktickým výsledkom je, že nasmerovanie profilu Windows Terminal na súbor init.bat Cmdera mi poskytuje to najlepšie z oboch svetov. Získam GPU vykresľovanie a správu kariet Windows Terminal a shell Cmdera ticho naplní prostredie všetkými Unix nástrojmi, ktoré potrebujem.
Cmder je prenosný
Celé prostredie žije v jednom priečinku, môžete ho kopírovať kamkoľvek
Prenositeľnosť je ďalším dôvodom, prečo Cmder stále má výhodu oproti čomukoľvek, čo Windows ponúka. Napríklad Windows Terminal je aplikácia z Obchodu viazaná na účet Microsoft a samotný operačný systém; nemožno ju jednoducho skopírovať na iný počítač. Cmder je opačný koniec toho spektra.
Je to jeden jediný priečinok. Keď ho rozbalíte do C:\tools\Cmder, nastavíte premennú prostredia %CMDER_ROOT%, a tým je celý proces nastavenia hotový. Ak ho chcem presunúť na iný disk alebo iný počítač, jednoducho skopírujem priečinok a všetko pôjde s ním, vrátane mojich aliasov, farebnej schémy, klávesových skratiek, zabudovaného Git a akéhokoľvek binárneho súboru, ktorý som vložil do priečinka bin na umiestnenie do PATH.
Windows Terminal vám umožňuje exportovať nastavenia, ale to sa týka len samotného Windows Terminalu. Neprenáša váš Git binárny súbor, vaše Unix nástroje ani vaše aliasy. Cmder považuje celé shellové prostredie za jednu prenosnú jednotku, a nič, čo Microsoft poskytuje, tomu úplne nevyhovuje.
Aliasový súbor Cmdera prekonáva nastavenie profilu PowerShellu
Jednoduchý textový súbor pre skratky, nie je potrebné žiadne skriptovanie
Prenosnosť by bola len polovičná výhoda, keby som si musel znovu vytvárať skratky na každom počítači. Práve tu sa súbor aliasov Cmdera oplatí, a je to časť, pre ktorú som nikdy nenašiel čistú náhradu v samotnom PowerShelli.
Cmder ukladá aliasy do obyčajného textového súboru v jeho konfiguračnej zložke a syntax je taká jednoduchá, ako to len ide. Jeden riadok na alias, alias gs=git status $* alebo alias ..=cd .., a skratka je aktívna pri ďalšom otvorení shellu. Nemusíte sa starať o skriptovanie, nastavovanie zásad vykonávania alebo hľadanie správnej cesty k profilu. Ak ste niekedy nastavovali profil PowerShell s užitočnými príkazmi, ktoré skutočne používate, poznáte ten kontrast.
PowerShell profil je skriptový súbor, ktorý sa spustí pri štarte, a nachádza sa na jednej z niekoľkých ciest vo vašom priečinku Dokumenty, v závislosti od toho, ktorý hostiteľ a ktorú verziu PowerShell používate. Set-Alias zvláda iba jednoduché mapovanie príkaz na príkaz, takže čokoľvek, čo potrebuje argumenty, ako napríklad gs rozširujúci sa na git status s príznakmi, musí byť napísané ako úplná funkcia. To je v poriadku, ak si užívate písanie v PowerShell. Je to však veľa obradov, ak chcete len dvojpísmenový skratkový príkaz pre git status.
Bod prenosnosti sa tu tiež zhoršuje. Môj súbor aliasov je vo vnútri priečinka Cmder, čo znamená, že keď skopírujem Cmder na nový počítač, každá skratka, ktorú som kedy definoval, ide s ním. PowerShell profil necestuje, pokiaľ explicitne nesynchronizujem cestu Dokumenty, a aj potom je to len polovica nastavenia.
Prečo si tento starý balík stále zaslúži svoje miesto
Budem prvý, kto prizná, že okno Cmder ukazuje svoj vek. Vykresľovanie je pomalé v porovnaní s GPU-akcelerovaným výstupom Windows Terminal, spracovanie kariet je základné a používateľské rozhranie ConEmu pod ním vyzerá, akoby bolo navrhnuté pred desiatimi rokmi. Ak stále spúšťate Cmder priamo, chápem, prečo by ste chceli prejsť ďalej.
Trik spočíva v tom, prestať považovať Cmder za terminál a začať ho považovať za balík shellu vo Windows Terminal. Nasmerujte profil WT na init skript Cmderu a staré rozhranie sa nikdy nenabije. Čo si zachováte, je unixové nástroje, prenosná zložka a súbor aliasov, zabalené v modernom rendereri od Microsoftu. Cmder vznikol z frustrácie s emulátormi konzoly Windows a Microsoft konečne opravil väčšinu tejto frustrácie na strane renderovania. Časti, ktoré neopravili, sú presne dôvodom, prečo starý balík stále má svoje miesto.







