Skip to content
CodeSook
CodeSook

Power Up Your Terminal 25 CLI Tools for Modern Developers


25 cli tools logo
#Terminal#CLITools#CLI
CodeSookPublish: 31st December 2024

สวัสดีครับเพื่อนๆ
ปี 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 ต่อไปครับ

wezterm screen example

Fish + Starship

ผมใช้ fish shell มานานแล้วครับ ตอนนี้ก็ยังใช้อยู่
เมื่อก่อนผมก็จะชอบแต่ง terminal ตกแต่ง zsh เปลี่ยน theme ไปมาติดตั้งหลายอย่างเลย เพื่อให้มันดูเท่ 😎😆
แต่พอผ่านไปก็เริ่มขี้เกียจ แล้วก็มาเจอ fish shell ที่มี feature มาให้ครบแล้วก็เลยเปลี่ยนเลย
แล้วก็ใส่ Starship เพื่อความสวยงามของ shell prompt โดยที่เราไม่ต้อง config อะไร

wezterm screen example

ตอนนี้ก็เล็งๆจะไปลองเล่น 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 เราตรงกันกับเพื่อนร่วมงาน

wezterm screen example

EZA

eza เป็น cli tool ที่ใช้แทน ls
อย่างที่เห็นในภาพด้านล่าง เวลาเราต้องการ list file and folders ที่ terminal เราจะเห็น icons มีสีต่างๆ มีขนาดไฟล์ มี permission ให้ดูหมดเลย อันนี้สามารถกำหนดได้ว่าอยากเห็นอะไรบ้าง

wezterm screen example

eza สามารถ list แบบ tree ได้ด้วย

wezterm screen example

ซึ่งเวลาผมใช้งานจริงๆ จะไม่ได้เขียนยาวแบบนี้ ผมจำไม่ได้มันยาวไป
ผมใช้วิธีเขียน fish alias ไว้ ผมก็แค่สั่ง ls หรือ tree แล้ว fish ก็จะไปเขียนแบบยาวๆให้เอง


Atuin

atuin เป็น tool ที่จะเก็บคำสั่ง cli ที่เราเคยสั่งไปแล้ว แค่เรากดลูกศร เราก็จะได้ list รายการคำสั่งขึ้นมาแบบในภาพ เราสามารถ search ได้เลย

wezterm screen example

Fastfetch

fastfetch เป็น cli tool ที่ใช้ดู system information ของเรา แบบเท่ๆ แค่นั้นแหละ

tool ตัวนี้นานๆทีผมได้ใช้นะ ก็รู้อยู่แล้วว่าคอมซื้อมา specs อะไร ก็เอาไว้โชว์คนอื่นเท่ๆแค่นั้นแหละ

fastfetch example

Onefetch

onefetch เป็น tool ที่คล้ายๆกับ fastfetch แต่ว่าแทนที่จะเอาไว้ดู system infomation
onefetch เอาไว้ดู project information ตามรูปที่เห็นด้านล่างเลย

เราจะเห็นว่าโปรเจคใช้ภาษาอะไรเขียน มี logo ให้สวยเลย แล้วก็บอกด้วยว่าใช้ภาษาไหนเป็นกี่ % ของโปรเจคทั้งหมด

ก่อนที่เราจะใช้ onefetch โปรเจคนั้นต้องมี git และต้องมี commit ด้วยนะ

onefetch1 example onefetch2 example

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 มากกว่า

gitui

Serie

serie เป็น tool ที่เอาไว้ดู git graph บน terminal
อันนี้ผมก็จะใช้คู่กับ Gitui
เนื่องจากว่า gitui ดู logs ได้แต่ไม่มี graph มาให้ ซึ่ง serie เข้ามาเติมตรงนี้ได้พอดี

serie example

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 มันก็ถูกลบไปด้วย ก็ดีตรงนี้ 🤣

serie example

Homebrew

จากปัญหาด้านบน ผมกลับมาใช้ Homebrew
มีโปรแกรมให้เลือกติดตั้งได้เยอะเหมือนกัน

แต่ผมยังชอบ Declarative config อยู่ ตรงนี้แหละผมมาใช้ Brew bundle วิธีการก็คล้ายๆกับ Nix เลย คือเราจะมี Brewfile ที่เขียนว่าเราต้องการติดตั้งโปรแกรมอะไรบ้าง แล้วเราก็สั่ง brew bundle ให้มันไปอ่าน config แล้วลบ หรือ ติดตั้งโปรแกรมตาม config นั้น
แล้วผมก็ git push Brewfile นี้ไปเก็บไว้ที่ github เท่านี้อีกเครื่องนึงก็ pull Brewfile ลงไปแล้วสั่งติดตั้ง ผมก็จะได้โปรแกรมเหมือนกันทั้งสองเครื่องละ

serie example

Bottom

bottom เป็น tool ที่เอาไว้ดู process/system ผ่าน terminal รองรับการใช้งานทุก platform เลยนะ

ถ้าใครรู้จัก top หรือ htop ก็จะเหมือนกันเลย แต่ผมว่า bottom มันสวยกว่า 😆

bottom example

Aerospace

aerospace เป็น tool ที่เอาไว้จัดระเบียบหน้าจอบน Mac ให้เป็นแบบ tile
โดย aerospace จะจัดการเอาหน้าต่างโปรแกรมไปวางเป็น tile ให้เราเอง พอปิดหน้าต่างบางอันไป มันก็จะขยายขนาดหน้าต่างที่ยังเหลืออยู่ให้เอง

ผมเคยใช้ yabai แต่ก็เลิกไป เพราะตอนนั้นใช้คู่กับ skhd ที่เป็น tool ที่ทำ keyboard shortcuts ผม setup จนใช้ได้ ใช้อยู่หลายเดือน แต่พอไม่เข้ามือก็ต้องแก้ config ผมขี้เกียจแก้ ก็เลยเลิกใช้ไปเลย
แล้วก็มาเจอ aerospace ก็เลยใช้ยาวมาเลย

aerospace example

Bat

bat เป็น tool ที่มาแทนที่ cat
ถ้าเราอยากดูเนื้อหา code หรือ text เราน่าจะเคยใช้ cat กันมาบ้าง

แต่ bat มันจะใส่สีให้เราด้วย ถ้าเป็น code มันจะอ่านง่ายขึ้นมาทันทีเลย สามารถใช้แทน cat ได้เลย

bat example

Caraspace

caraspace เป็น tool ที่เอาไว้แสดง auto complete บน terminal เวลาเรานึกคำสั่งไม่ออก ก็ให้กด tab มันจะขึ้น auto complete พร้อมคำอธิบายสั้นๆให้เรา
เราสามารถกด tab เพื่อเลื่อนไปในแต่ละ item แล้ว enter เพื่อเลือกคำสั่งได้ง่ายๆเลย

caraspace1 example caraspace2 example

Dust

dust เป็น tool ที่เอาไว้ดูขนาดของไฟล์ใน folder ที่เราต้องการ มันจะเรียงลำดับตามขนาดของ file หรือ folder มาให้เลย แล้วบอกด้วยว่า file หรือ folder นั้นมีขนาดเป็นกี่ % เมื่อเทียบกับ file หรือ folder อื่นๆใน folde หลักของเรา

ซึ่งถ้าใครเคยใช้ du มันก็จะเหมือนกันเลย แต่ dust เขียนด้วย Rust

dust example

K9S

k9s เป็น tool ที่ใช้ monitor kubernetes cluster โดยเราเปิดดูบน Terminal ได้เลย เขาทำ Terminal UI มาให้สวยงาม ใช้งานง่าย ไม่ต้องพิมพ์คำสั่ง kubectl ยาวๆ

ผมก็ใส่ cluster context ไว้ในเครื่องแล้วก็ monitor ผ่าน terminal บนเครื่องผมได้เลย

K9S example

Lazydocker

lazydocker เป็น tools ที่ใช้ดู docker information ต่างๆ ผ่าน Terminal UI ทำให้เราไม่ต้องมาใส่คำสั่ง docker ยาวๆ
ก็เหมือนกับ k9s ด้านบนแหละ แต่ว่าใช้กับ docker

Lazydocker example

Zoxide

zoxide เป็น tool ที่เอาไว้ navigate ระหว่าง folder ต่างๆผ่าน terminal
มันเหมือนคำสั่ง cd เลย
ซึ่ง zoxide มีดีกว่าตรงที่ ถ้าเราเคยไปที่ folder นั้นแล้ว เราไม่ต้องพิมพ์ path ให้ถูกทั้งหมดก็ได้ zoxide จะจำได้ว่า folder แบบนี้ หรือ path แบบนี้มันอยู่ตรงไหน มันก็จะพาเราโดดไปตรงนั้นเลย
tool นี้ผมใช้บ่อยมากๆ ผมใช้คำสั่ง cd น้อยมากๆ


Mac-Cleanup

mac-cleanup เป็น tool ที่เอาไว้เคลียร์เครื่อง mac เอาพื้นที่คืนมา
เป็นการสั่ง clean ผ่าน cli เท่านั้นเอง

Mac-Cleanup example

Atac

atac (Arguably a Terminal API Client) เป็น api client เหมือนกับ Postman เลย แต่ว่าอยู่บน terminal
การใช้งานก็ไม่ได้ยากอะไร มีปุ่มบอกว่ากดอะไรด้านล่างอยู่แล้ว

Atac example

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 เท่านั้นเลย
เป็นยังไงดูรูปประกอบด้านล่างได้เลย ปลามันขยับได้นะ ผมแคปมาแต่ภาพนิ่ง

asciiquarium example

Conclusion

เอาละครบแล้วครับ 25 ตัว
จริงๆก็น่าจะมากกว่า 25 ตัว ผมมีพูดถึงตัวอื่นๆไปด้วยนิดหน่อย แต่ไม่ได้ลงรายละเอียด
ยังไงถ้าเพื่อนๆใช้ตัวไหนอยู่ หรืออยากใช้แล้วติดปัญหาก็ส่ง msg มาถามกันได้ ไม่ว่าจะเป็นใน page หรือใน Youtube หรือถ้าใครใจร้อนจะโทรมาก็ไม่ติดครับ

บทความนี้ค่อนข้างยาว ผมก็ใช้เวลาเขียนนานด้วย
ขอขอบคุณเพื่อนๆที่อ่านจนจบ หวังว่าจะได้ประโยชน์จากบทความนี้กันนะครับ