Power Up Your Terminal 25 CLI Tools for Modern Developers
สวัสดีครับเพื่อนๆ
ปี 2025 แล้ว terminal nerd อย่างผม ก็เลยรวบรวม CLI tools ที่ผมใช้เป็นประจำทั้งหมด 25 ตัว ให้เข้ากับเลขปี
มาดูกันว่ามีอะไรบ้าง
Neovim
Neovim เป็น text editor บน terminal ที่มี plugins มากมาย
อันนี้แน่นอนอยู่แล้ว เป็น tools ที่ใช้บ่อยที่สุดก็ใช้เขียน code ด้วยอะนะ ผมลองเปลี่ยนไปใช้ text editor ตัวอื่นๆอยู่เหมือนกัน เช่น Helix, Zed
แต่สุดท้ายก็กลับมาที่ Neovim อยู่ดี
จริงๆชอบ Helix มากเลยนะ แต่ติดตรงที่ยังทำ plugin system ไม่เสร็จสักที
ผม config neovim ผ่าน LazyVim อีกทีนึง ซึ่งปัจจุบันคนที่ใช้ Neovim น่าจะเปลี่ยนมาใช้ LazyVim กันหมดแล้ว
Wezterm Terminal
ตลอดทั้งปีผมใช้ Wezterm มาตลอด พอใจมาก ตอนนี้ก็ยังพอใจกับมันอยู่มากครับ
ช่วงปลายปีมี Ghostty ออกมาผมก็ hype ไปกับเขาด้วย จากที่ไปฟังคุณ Michell พูดที่งาน Zig Showtime ใน Youtube เมื่อปีก่อน ก็ตามข่าวตลอดว่าจะปล่อยวันไหน ก็ได้ลองใช้ไปบ้าง คุณภาพดีจริงๆ แต่ผมกลับมาใช้ Wezterm ต่ออยู่ดีเพราะว่า font ที่ผมชอบ พอใช้ภาษาไทยแล้ว Ghostty มัน render ได้ไม่ถูก แต่ Wezterm ไม่เคยมีปัญหานี้เลย
ผม config Wezterm ให้มี background เป็น Transparency เพราะคิดว่ามันสวยดีฮ่าๆ ซึ่ง Ghostty ก็ทำได้เหมือนกันด้วย ตรงนี้ชอบมากๆ หรือจะใส่รูปลงไปเป็น background ก็ทำได้ด้วย อันนี้ feature เยอะกว่า ก็มันออกมานานแล้วอะนะ
เรื่อง Tab ใน Wezterm ก็ไม่ได้ใช้ Native tab เหมือนกับ Ghostty ซึ่ง performance อาจจะไม่ได้ดีเท่า(แบบว่ารู้สึกต่างนิดเดียวนะ) แต่ก็ไม่มีปัญหากับ Aerospace ผมก็เลยยังอยู่กับ Wezterm
แต่ก็ยังรอให้ Ghostty ปรับปรุงเพิ่มเติมแล้วจะค่อยๆกลับมาดูว่าพร้อมใช้หรือยัง ผมอยากใช้ Ghostty แหละ ติดใจความลื่นไหลอะนะ แต่ด้วยเหตุผลอย่างที่เล่าไปก็ยังอยู่กับ Wezterm ต่อไปครับ
Fish + Starship
ผมใช้ fish shell มานานแล้วครับ ตอนนี้ก็ยังใช้อยู่
เมื่อก่อนผมก็จะชอบแต่ง terminal ตกแต่ง zsh เปลี่ยน theme ไปมาติดตั้งหลายอย่างเลย เพื่อให้มันดูเท่ 😎😆
แต่พอผ่านไปก็เริ่มขี้เกียจ แล้วก็มาเจอ fish shell ที่มี feature มาให้ครบแล้วก็เลยเปลี่ยนเลย
แล้วก็ใส่ Starship เพื่อความสวยงามของ shell prompt โดยที่เราไม่ต้อง config อะไร
ตอนนี้ก็เล็งๆจะไปลองเล่น shell อีกยี่ห้อนึงชื่อว่า Elvish
Mise
Mise ออกเสียงว่า Meez เป็น tool ที่เหมาะกับ Developer มากๆ
Mise สามารถติดตั้ง programming language compiler, programming language runtime ให้เราผ่านคำสั่งของ Mise ซึ่งสามารถทำได้ในระดับ version ของภาษาที่เราต้องการเลย แล้วกำหนดให้มีผลเฉพาะบาง folder ได้ด้วย เผื่อบางทีเรามีหลายโปรเจคแล้วมันใช้ language version ที่ต่างกัน
ถ้าใครใช้ nodejs น่าจะเคยใช้ tools เช่น nvm หรือ fnm เอาไว้ติดตั้ง nodejs version ต่างๆ แล้วคอยสลับไปมาระว่าง version ที่ต้องการ แต่ทำได้ในระดับ global คือเปลี่ยน 1 ครั้งก็ส่งผลไปทั้งเครื่องเราเลย หรือใครใช้ java, scala ก็น่าจะเคยใช้ tool เช่น sdkman มันเหมือนกันเลย
แต่ถ้าใช้ Mise เราจะทำแบบเดียวกันกับ tools ด้านบนเลย แต่ว่ากับภาษาอะไรก็ได้ ผมว่าก็เกือบทั้งหมดเลยนะ มันเยอะมากๆ อาจจะไม่ใช่ 100% ของภาษาทั้งหมดบนโลกแต่ก็เยอะแหละ
จริงๆเบื้องหลัง Mise มี official supported languages แค่ไม่กี่ตัว ผม list มาให้ตามนี้
- Js -> Bun, Deno, Nodejs
- Elixir
- Erlang
- Go
- Java
- Python
- Ruby
- Rust
- Swift
- Zig
ส่วนภาษาอื่นๆ Mise ก็ supported โดยไปอาศัย tools ตัวอื่นๆช่วย เช่น asdf, vfox
ซึ่งพอเราใช้ Mise เราก็ไม่ต้องไปสนใจหรอกว่ามันจะใช้ tools อะไรในการติดตั้ง เราแค่บอก mise ว่าอยากติดตั้งภาษาอะไร version ไหน มันก็จะไปจัดการให้เราเองเลย
ถ้าเราอยากเปลี่ยน version ก็แค่ลบ version เก่า ติดตั้ง version ใหม่ หรือ upgrade เป็น version ล่าสุดได้ง่ายๆผ่าน mise cli ได้เลย
ยังไม่หมด
mise สามารถ integrate เข้ากับ project ได้ด้วย
เช่น
ทีมเราเขียน React บน Nodejs version 22.0.1 แล้วเราติดตั้ง nodejs version 22.0.1 ตัว mise จะสร้างไฟล์ mise.toml ไว้ที่ project folder
แล้วเพื่อนในทีมเราก็ใช้ mise เหมือนกัน เวลาเขาเปิด project ขึ้นมา mise ก็จะไปโหลด nodejs version 22.0.1 มาให้เพื่อนเราด้วยเลย ทำให้ทุกคนในทีมใช้ nodejs version เดียวกันในการทำงาน ซึ่ง mise cli มันก็จะไปดูไฟล์ mise.toml นั้นแหละ
พออยู่ใน folder project ที่มี mise.toml มันก็จะ inject nodejs version 22.0.1 เข้าไปที่ shell env ให้เราเอง พอเราออกจาก folder project มันก็จะสลับไปใช้ nodejs gobal version ซึ่งอาจจะต่างจาก version ของ project เรา
ยังมีอีก
ถ้าเพื่อนๆใช้ nodejs แล้วเคยติดตั้ง global lib เช่น npm i -g typescript
หรือ npm i -g @nestjs/cli
เราสามารถติดตั้งผ่าน mise ได้ด้วยนะ แล้วมันก็จะบันทึกลงไปที่ไฟล์ mise.toml ทำให้ global cli เราตรงกันกับเพื่อนร่วมงาน
EZA
eza เป็น cli tool ที่ใช้แทน ls
อย่างที่เห็นในภาพด้านล่าง เวลาเราต้องการ list file and folders ที่ terminal เราจะเห็น icons มีสีต่างๆ มีขนาดไฟล์ มี permission ให้ดูหมดเลย อันนี้สามารถกำหนดได้ว่าอยากเห็นอะไรบ้าง
eza สามารถ list แบบ tree ได้ด้วย
ซึ่งเวลาผมใช้งานจริงๆ จะไม่ได้เขียนยาวแบบนี้ ผมจำไม่ได้มันยาวไป
ผมใช้วิธีเขียน fish alias ไว้ ผมก็แค่สั่ง ls
หรือ tree
แล้ว fish ก็จะไปเขียนแบบยาวๆให้เอง
Atuin
atuin เป็น tool ที่จะเก็บคำสั่ง cli ที่เราเคยสั่งไปแล้ว แค่เรากดลูกศร เราก็จะได้ list รายการคำสั่งขึ้นมาแบบในภาพ เราสามารถ search ได้เลย
Fastfetch
fastfetch เป็น cli tool ที่ใช้ดู system information ของเรา แบบเท่ๆ แค่นั้นแหละ
tool ตัวนี้นานๆทีผมได้ใช้นะ ก็รู้อยู่แล้วว่าคอมซื้อมา specs อะไร ก็เอาไว้โชว์คนอื่นเท่ๆแค่นั้นแหละ
Onefetch
onefetch เป็น tool ที่คล้ายๆกับ fastfetch แต่ว่าแทนที่จะเอาไว้ดู system infomation
onefetch เอาไว้ดู project information ตามรูปที่เห็นด้านล่างเลย
เราจะเห็นว่าโปรเจคใช้ภาษาอะไรเขียน มี logo ให้สวยเลย แล้วก็บอกด้วยว่าใช้ภาษาไหนเป็นกี่ % ของโปรเจคทั้งหมด
ก่อนที่เราจะใช้ onefetch โปรเจคนั้นต้องมี git และต้องมี commit ด้วยนะ
Gitui
gitui เป็น tool ที่เอาไว้ดู git information ของโปรเจคที่เราทำงาน เราสามาถดู logs ดู commit ดู diff ของไฟล์ต่างๆ คล้ายๆกับการใช้ git ui ใน VSCode แต่ว่าอันนี้เราใช้บน terminal แทน
สามารถ commit code ใส่ msg, reset, checkout, สร้าาง branch, switch branch ผ่าน gitui ได้เลยด้วย
ผมก็จำคำสั่ง git ไม่ค่อยได้เพราะว่ากดๆใน gitui เอานี่แหละ
จริงๆก็มีอีกตัวหนึ่งที่ค่อนข้างฮิตเหมือนกัน ชื่อว่า lazygit แต่ผมชอบ gitui มากกว่า
Serie
serie เป็น tool ที่เอาไว้ดู git graph บน terminal
อันนี้ผมก็จะใช้คู่กับ Gitui
เนื่องจากว่า gitui ดู logs ได้แต่ไม่มี graph มาให้ ซึ่ง serie เข้ามาเติมตรงนี้ได้พอดี
Nix
Nix เป็น package manager ตัวหนึ่งคล้ายๆ Homebrew ที่มี prgram มี lib เยอะมากๆ น่าจะเยอะที่สุดละ เราสามารถติดตั้งทุกอย่างผ่าน Nix ได้ เท่าที่ผมใช้มา โปรแกรมที่ผมใช้มีให้ติดตั้งผ่าน Nix หมดเลย รวมถึง Neovim plugin ก็ติดตั้งผ่าน Nix ได้ด้วย สามารถใช้ได้ทั้งบน Mac และ Linux
เวลาเราอยากได้โปรแกรมอะไร เราก็ต้องไปแก้ Nix config แล้วสั่งให้ Nix ไปอ่าน config ถ้ามันเจอว่ามีการเปลี่ยนแปลงมันก็จะลบ และ ติดตั้งโปรแกรมให้ตรงกับ config file
เราก็ git push ตัว config นี้ไปไว้ที่ github ทำให้คอมเครื่องอื่นของเรา pull config นี้ไปใช้ ก็จะมีโปรแกรมเหมือนกัน ทั้งสองเครื่องแบบง่ายๆเลย
ตรงนี้ก็สะดวกดีผมชอบวิธีนี้ มันเรียกว่า Declarative
ถ้าใครเคยดูคลิปผม น่าจะเคยเห็นว่าผมใช้ nix ในการติดตั้ง program ต่างๆบน Mac
แต่ตอนนี้ผมเลิกใช้ไปแล้ว ผมว่ามันยุ่งยากเกินไป
แล้วก็มีปัญหามากตอนที่ Apple update OS ให้กับ Mac ตอนนั้นผมก็ upgrade MacOS ได้ปกติ แต่ Nix ดันไม่รองรับ ต้อง Work around ให้วุ่น ผมก็พยายามทำจนสำเร็จ สุดท้ายก็มาคิดว่า มันยุ่งยากจังวะ นั่นคือจุดที่ผมตัดสินใจเลิกใช้ ลบทิ้งไปเลย
แต่ตอนลบก็ไม่ยุ่งยากนะ อะไรที่เคยติดตั้งผ่าน Nix มันก็ถูกลบไปด้วย ก็ดีตรงนี้ 🤣
Homebrew
จากปัญหาด้านบน ผมกลับมาใช้ Homebrew
มีโปรแกรมให้เลือกติดตั้งได้เยอะเหมือนกัน
แต่ผมยังชอบ Declarative config อยู่ ตรงนี้แหละผมมาใช้ Brew bundle วิธีการก็คล้ายๆกับ Nix เลย คือเราจะมี Brewfile ที่เขียนว่าเราต้องการติดตั้งโปรแกรมอะไรบ้าง แล้วเราก็สั่ง brew bundle ให้มันไปอ่าน config แล้วลบ หรือ ติดตั้งโปรแกรมตาม config นั้น
แล้วผมก็ git push Brewfile นี้ไปเก็บไว้ที่ github เท่านี้อีกเครื่องนึงก็ pull Brewfile ลงไปแล้วสั่งติดตั้ง ผมก็จะได้โปรแกรมเหมือนกันทั้งสองเครื่องละ
Bottom
bottom เป็น tool ที่เอาไว้ดู process/system ผ่าน terminal รองรับการใช้งานทุก platform เลยนะ
ถ้าใครรู้จัก top หรือ htop ก็จะเหมือนกันเลย แต่ผมว่า bottom มันสวยกว่า 😆
Aerospace
aerospace เป็น tool ที่เอาไว้จัดระเบียบหน้าจอบน Mac ให้เป็นแบบ tile
โดย aerospace จะจัดการเอาหน้าต่างโปรแกรมไปวางเป็น tile ให้เราเอง พอปิดหน้าต่างบางอันไป มันก็จะขยายขนาดหน้าต่างที่ยังเหลืออยู่ให้เอง
ผมเคยใช้ yabai แต่ก็เลิกไป เพราะตอนนั้นใช้คู่กับ skhd ที่เป็น tool ที่ทำ keyboard shortcuts ผม setup จนใช้ได้ ใช้อยู่หลายเดือน แต่พอไม่เข้ามือก็ต้องแก้ config ผมขี้เกียจแก้ ก็เลยเลิกใช้ไปเลย
แล้วก็มาเจอ aerospace ก็เลยใช้ยาวมาเลย
Bat
bat เป็น tool ที่มาแทนที่ cat
ถ้าเราอยากดูเนื้อหา code หรือ text เราน่าจะเคยใช้ cat กันมาบ้าง
แต่ bat มันจะใส่สีให้เราด้วย ถ้าเป็น code มันจะอ่านง่ายขึ้นมาทันทีเลย สามารถใช้แทน cat ได้เลย
Caraspace
caraspace เป็น tool ที่เอาไว้แสดง auto complete บน terminal เวลาเรานึกคำสั่งไม่ออก ก็ให้กด tab มันจะขึ้น auto complete พร้อมคำอธิบายสั้นๆให้เรา
เราสามารถกด tab เพื่อเลื่อนไปในแต่ละ item แล้ว enter เพื่อเลือกคำสั่งได้ง่ายๆเลย
Dust
dust เป็น tool ที่เอาไว้ดูขนาดของไฟล์ใน folder ที่เราต้องการ มันจะเรียงลำดับตามขนาดของ file หรือ folder มาให้เลย แล้วบอกด้วยว่า file หรือ folder นั้นมีขนาดเป็นกี่ % เมื่อเทียบกับ file หรือ folder อื่นๆใน folde หลักของเรา
ซึ่งถ้าใครเคยใช้ du มันก็จะเหมือนกันเลย แต่ dust เขียนด้วย Rust
K9S
k9s เป็น tool ที่ใช้ monitor kubernetes cluster โดยเราเปิดดูบน Terminal ได้เลย เขาทำ Terminal UI มาให้สวยงาม ใช้งานง่าย ไม่ต้องพิมพ์คำสั่ง kubectl
ยาวๆ
ผมก็ใส่ cluster context ไว้ในเครื่องแล้วก็ monitor ผ่าน terminal บนเครื่องผมได้เลย
Lazydocker
lazydocker เป็น tools ที่ใช้ดู docker information ต่างๆ ผ่าน Terminal UI ทำให้เราไม่ต้องมาใส่คำสั่ง docker
ยาวๆ
ก็เหมือนกับ k9s ด้านบนแหละ แต่ว่าใช้กับ docker
Zoxide
zoxide เป็น tool ที่เอาไว้ navigate ระหว่าง folder ต่างๆผ่าน terminal
มันเหมือนคำสั่ง cd
เลย
ซึ่ง zoxide มีดีกว่าตรงที่ ถ้าเราเคยไปที่ folder นั้นแล้ว เราไม่ต้องพิมพ์ path ให้ถูกทั้งหมดก็ได้ zoxide จะจำได้ว่า folder แบบนี้ หรือ path แบบนี้มันอยู่ตรงไหน มันก็จะพาเราโดดไปตรงนั้นเลย
tool นี้ผมใช้บ่อยมากๆ ผมใช้คำสั่ง cd
น้อยมากๆ
Mac-Cleanup
mac-cleanup เป็น tool ที่เอาไว้เคลียร์เครื่อง mac เอาพื้นที่คืนมา
เป็นการสั่ง clean ผ่าน cli เท่านั้นเอง
Atac
atac (Arguably a Terminal API Client) เป็น api client เหมือนกับ Postman เลย แต่ว่าอยู่บน terminal
การใช้งานก็ไม่ได้ยากอะไร มีปุ่มบอกว่ากดอะไรด้านล่างอยู่แล้ว
Kondo
kondo เป็น tool ที่เอาไว้ cleanup project ของเรา
ยกตัวอย่างเช่น เราเขียน NodeJS project เวลาทำงานไปหลายๆ project เราก็จะมี node_module อยู่ มี build folder มี folder ต่างๆที่ dev server เป็นคนสร้าง นานๆไป โปรเจคเหล่านี้เราก็ไม่ค่อยได้เปิด
เราสามารถใช้ kondo ไป cleanup ให้ได้ เราแค่ cd เข้าไปที่ project’s folder แล้วสั่ง kondo .
มันก็จะไปหาให้เองว่าอะไรลบได้ แล้วก็จะถามเราว่าลบไหม เราก็แค่กดยืนยันไป
kondo สามารถ cleanup project ได้หลายภาษา เช่น
- Rust (Cargo)
- C (CMake)
- C++ (CMake, Unreal engine)
- Elixir
- PHP (Composer)
- C# (.NET, Godot, Unity)
- Java(Gradle, Maven)
- Scala(SBT)
- Python (Jupyter Notebook)
- Node(npm, pnpm, yarn, bun and turborepo)
- Haskell (Stack, Cabal)
- Swift
- Zig
Chezmoi
chezmoi เป็น tool ที่เอาไว้ช่วยจัดการ dotfiles
dotfiles ก็คือ config ไฟล์ของโปรแกรมต่างที่เราใช้นี่แหละ ส่วนใหญ่จะเป็น terminal program ที่เล่าไปด้านบน
ผมจะเก็บ config พวกนี้ไว้ใน folder .dotfiles
แล้ว upload ขึ้น github ไป ถ้าวันหนึ่งผมซื้อคอมใหม่ ก็ไม่ต้องกังวลเรื่องย้ายของ ผมแค่ clone repo จาก github มาแล้วก็ sync config ทั้งหมดได้เลย
program ส่วนใหญ่รองรับการ config แบบนี้แทบทุกตัวอยู่แล้ว
chezmoi ยังสามารถ encrypt file ได้ด้วยนะ แต่ผมไม่เคยใช้
ตอนนี้ผมก็เล็งๆจะไปลองเล่น dotfile manager อีกตัวยี่ห้อที่ชื่อว่า yadm
Asciiquarium
asciiquarium เป็น tool ที่มีไว้เพื่อความสวยงานเฉยๆ
เอาไว้แสดงภาพตู้ปลาผ่าน terminal เท่านั้นเลย
เป็นยังไงดูรูปประกอบด้านล่างได้เลย ปลามันขยับได้นะ ผมแคปมาแต่ภาพนิ่ง
Conclusion
เอาละครบแล้วครับ 25 ตัว
จริงๆก็น่าจะมากกว่า 25 ตัว ผมมีพูดถึงตัวอื่นๆไปด้วยนิดหน่อย แต่ไม่ได้ลงรายละเอียด
ยังไงถ้าเพื่อนๆใช้ตัวไหนอยู่ หรืออยากใช้แล้วติดปัญหาก็ส่ง msg มาถามกันได้ ไม่ว่าจะเป็นใน page หรือใน Youtube หรือถ้าใครใจร้อนจะโทรมาก็ไม่ติดครับ
บทความนี้ค่อนข้างยาว ผมก็ใช้เวลาเขียนนานด้วย
ขอขอบคุณเพื่อนๆที่อ่านจนจบ หวังว่าจะได้ประโยชน์จากบทความนี้กันนะครับ