Bộ terminal setup hằng ngày: Ghostty, tmux, Workmux, Pi và các CLI đi kèm

Đi qua từng lớp terminal setup: Ghostty, tmux với SessionX và Floax, sesh, Workmux cho worktree, zsh, coding agent Pi, zoxide, Atuin, fzf, Starship, Neovim, mise.

Đã duyệt độc lập · cập nhật 03/11/2026 · 21 min

1. Cấu hình terminal có quan trọng không?

Người dẫn kênh DevOps Toolbox mở đầu bằng một câu khiêu khích: cấu hình terminal của bạn chẳng quan trọng gì cả, mấy công cụ nhỏ, đẹp mắt và hiệu quả kia chẳng có nghĩa lý gì. Rồi anh nói ngay: đó là điều anh sẽ nói nếu anh là một "LinkedIn AI influencer". Dĩ nhiên là nó quan trọng.

Với anh (video đăng ngày 16/10/2026), điều quan trọng là tốc độ, cách setup, một luồng làm việc trơn tru, khả năng điều khiển các worktree và các agent của mình, di chuyển mà không phải gắng sức, và thao tác trong không gian CLI như thể nó là phần nối dài của bộ não. Đó là nơi anh muốn đạt tới. Nhưng anh cũng nói không cần đẩy mọi thứ tới mức cực đoan như vậy. Thay vào đó, sao không giữ mọi thứ dễ nhìn, và quan trọng hơn là vui.

Người dẫn kênh DevOps Toolbox nói trước camera, xung quanh là biểu tượng của Ghostty, Git, fzf, Neovim và vài công cụ terminal khác
Mở đầu video: người dẫn kênh DevOps Toolbox với biểu tượng của các công cụ trong bộ setup, gồm Ghostty, Git, fzf và Neovim (video đăng ngày 16/10/2026).

Hôm nay anh đi qua toàn bộ terminal setup của mình: các tiện ích cốt lõi, các file config và mọi thứ anh đang có. Anh kể anh review rất nhiều công cụ và khá thường xuyên bị chỉ trích vì chuyện đó. Phần lớn những thứ anh giới thiệu rốt cuộc không ở lại với anh, nhưng không phải vì chúng tệ, mà vì chúng không hợp với cách anh làm việc. Danh sách hôm nay là mọi thứ anh đã tìm ra, giữ lại và đang vui vẻ dùng hằng ngày (theo lời anh, video đăng ngày 16/10/2026). Anh dựng nó theo từng lớp.

2. Terminal: Ghostty và một file config gọn

Lớp đầu tiên là chính cái terminal: anh nói bạn không thể chạy TUI và CLI mà không có, ừ thì, một terminal. Bạn hoàn toàn có thể dùng terminal mặc định đi kèm hệ điều hành, nhưng anh thì không làm vậy. Anh đề nghị một terminal emulator nhanh, nhiều tính năng, chạy đa nền tảng và dùng GPU acceleration. Anh thừa nhận nghe thì dài dòng, nhưng theo anh tất cả đều đúng (video đăng ngày 16/10/2026). Trang chủ Ghostty cũng tự mô tả là "a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration" (đọc ngày 03/11/2026).

Ghostty là terminal anh chọn. Anh nói từ lúc nó mới ra mắt tới giờ đã có quá nhiều thay đổi, khó mà theo dõi hết (video đăng ngày 16/10/2026). Anh bắt đầu từ phần nền: theo anh, gần như không có gì phải cấu hình. Anh mở file config của mình và nói trước rằng nó "bloated". Theo anh (video đăng ngày 16/10/2026), file này đủ để giữ giao diện đúng như anh thích, với phần hiển thị gọn, để lại đúng cái terminal như bạn thấy.

Neovim mở file config của Ghostty trong thư mục dotfiles/ghostty, gồm font-size, command, theme Catppuccin Mocha, custom-shader và window-padding
File config Ghostty của anh mở trong Neovim, nằm trong thư mục ~/dotfiles/ghostty cạnh thư mục shaders (video đăng ngày 16/10/2026).

Nội dung file trên màn hình:

font-size = 19
command = /bin/zsh -l
background-blur-radius = 20
mouse-hide-while-typing = true
window-decoration = true
macos-option-as-alt = true
theme = Catppuccin Mocha
macos-titlebar-style = hidden
custom-shader = ~/.config/ghostty/shaders/space.glsl
window-padding-x = 10
window-padding-y = 10

3. Mitchell Hashimoto, Ghostty và một multiplexer mới

Theo anh (video đăng ngày 16/10/2026), Ghostty có tài liệu tốt, là open source, và nổi tiếng vì được viết bằng Zig bởi "the one and only" Mitchell Hashimoto, người trước đây sáng lập HashiCorp. Anh kể rằng sau khi code ra cái mà anh gọi là terminal tốt nhất hiện có của thời đại này, chỉ để cho vui, Mitchell đã đóng góp project cho một tổ chức phi lợi nhuận, bảo đảm về mặt pháp lý rằng nó sẽ mãi là open source và miễn phí.

Giờ có thời gian rảnh, theo anh (video đăng ngày 16/10/2026), Mitchell lại lập thêm một công ty nữa, công ty này đang build một multiplexer. Anh nói thật lòng là ai cũng thấy chuyện này sắp tới: Mitchell từng tweet về việc tránh tmux và ở lại trong Ghostty, thử dùng khả năng multiplexing của chính Ghostty. Nhưng anh đoán là cách đó chưa ổn.

Trang web Superlogical với dòng chữ We are building the multiplexer for all work và thông báo Rex is now in beta
Trang Superlogical trên màn hình ghi "We are building the multiplexer for all work" và "Rex is now in beta" (video đăng ngày 16/10/2026).

Anh nói đây có lẽ sẽ là một "Mars Inc." tiếp theo, rồi kể câu chuyện về thanh Milky Way: người con trai của nhà phát minh cãi nhau với cha mình, chuyển sang Anh, lập một công ty khác làm ra thanh Mars, để rồi sau đó hai bên lại hợp sức và gom tất cả những thứ ngon lành ấy về dưới một mái nhà. Bỏ qua chuyện mâu thuẫn cha con, với anh nghe như Ghostty và Rex mới này là "a match made in heaven". Rồi sẽ biết (video đăng ngày 16/10/2026).

4. Multiplexer: vì sao vẫn là tmux, và hai file config

Trong lúc chờ, anh nói chúng ta không thiếu multiplexer. Có Herdr, theo anh đang cực kỳ được chú ý vào thời điểm quay (video đăng ngày 16/10/2026), và TUIOS, thứ mà anh cho là xứng đáng được chú ý nhiều hơn. Nhưng lựa chọn của anh cho máy local trước giờ vẫn là, và vẫn sẽ là, tmux.

Anh dùng các plugin yêu thích, trong đó có hai plugin do anh tự viết và là open source. Theo anh (video đăng ngày 16/10/2026), config tmux của anh có hai phần chính. Phần thứ nhất là file tmux.reset.conf, về cơ bản đặt ra một nền các phím bind và bỏ bind các mặc định, để chắc chắn môi trường đúng như anh muốn.

File tmux.reset.conf mở trong Neovim với nhiều dòng bind cho list-windows, split-window, select-pane, resize-pane và source-file
File tmux.reset.conf: các phím bind nền mà anh đặt trước khi nạp phần còn lại của config (video đăng ngày 16/10/2026).

Một đoạn của file trên màn hình:

bind ^W list-windows
bind w list-windows
bind z resize-pane -Z
bind ^L refresh-client
bind l refresh-client
bind | split-window
bind s split-window -v -c "#{pane_current_path}"
bind v split-window -h -c "#{pane_current_path}"
bind '"' choose-window
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r -T prefix , resize-pane -L 20
bind -r -T prefix . resize-pane -R 20
bind -r -T prefix - resize-pane -D 7
bind -r -T prefix = resize-pane -U 7
bind : command-prompt
bind * setw synchronize-panes
bind P set pane-border-status
bind c kill-pane
bind x swap-pane -D
bind S choose-session
bind R source-file ~/.config/tmux/tmux.conf
bind K send-keys "clear"\; send-keys "Enter"
bind-key -T copy-mode-vi v send-keys -X begin-selection

Từ đó anh chuyển sang file tmux.conf quen thuộc, bắt đầu bằng việc nạp file reset kia rồi đặt các plugin. Anh nhắc tới sesh, một session manager nổi tiếng, không phải của anh nhưng theo anh là một lựa chọn tốt hơn, và hẹn sẽ quay lại với nó. Catppuccin là style tmux anh chọn. Anh nói một lần cho mọi tiện ích trong danh sách: tất cả đều nằm trong repo dotfiles công khai của anh trên GitHub (video đăng ngày 16/10/2026).

5. SessionX và Floax, hai plugin anh tự viết

Plugin đầu tiên là SessionX trong lúc chạy: một danh sách các session đang hoạt động mà bạn có thể fuzzy search, phần preview của session ở phía trên, các tuỳ chọn ở phía dưới. Theo anh (video đăng ngày 16/10/2026), mọi thành phần của nó đều tuỳ biến được hoàn toàn. Các dòng cấu hình SessionX trong tmux.conf của anh, một đoạn trên màn hình:

set -g @sessionx-x-path '~/dotfiles'
set -g @sessionx-window-height '85%'
set -g @sessionx-window-width '75%'
set -g @sessionx-zoxide-mode 'on'
set -g @sessionx-custom-paths-subdirectories 'false'
set -g @sessionx-filter-current 'false'

Plugin thứ hai là Floax, thứ anh hay đưa lên màn hình và nhiều người hỏi. Floax cho anh chạy floating pane trên tmux. Theo anh (video đăng ngày 16/10/2026), nó đi kèm các tuỳ chọn để phóng to, thu nhỏ, reset và vài tuỳ chọn hay khác mà các maintainer thêm vào theo thời gian. Nhưng thật lòng, 99% thời gian anh dùng nó đúng như bản chất của nó: một popup bền vững nằm trên tmux.

Theo anh (video đăng ngày 16/10/2026), trong config của anh có các tham số của Floax: khoảng không gian nó chiếm, màu sắc, phím điều khiển, và việc bạn có muốn đường dẫn đi theo hay không. Project có tên tmux-floax trên GitHub. Các dòng đó trên màn hình:

set -g @floax-width '80%'
set -g @floax-height '80%'
set -g @floax-border-color 'magenta'
set -g @floax-text-color 'blue'
set -g @floax-bind 'p'
set -g @floax-change-path 'true'

Tương tự, SessionX nằm dưới tên tmux-sessionx, và theo anh (video đăng ngày 16/10/2026) có tài liệu tốt, điều mà anh coi là lời khen dành cho những người đóng góp tuyệt vời của project.

6. sesh, session manager của Josh Medeski

Anh nói sẽ không công bằng nếu đưa ra những thứ này mà không nhắc tới sesh, cái tên anh đã nói qua lúc trước: một session manager mạnh hơn, nhiều tính năng hơn, và theo anh (video đăng ngày 16/10/2026) có lẽ là lựa chọn tốt hơn cho phần đông mọi người.

Popup sesh trong tmux liệt kê các thư mục, các preset như sessionx, aerospace, fatbot, nvimconf, tmuxconf, các worktree và phần preview file tmux.conf bên phải
Popup sesh: bên trái là thư mục, các preset (sessionx, fatbot, nvimconf, tmuxconf...) và các worktree; bên phải là preview của file config đang chọn (video đăng ngày 16/10/2026).

sesh có các preset như anh đã đặt ở đây: một session cho config Neovim, hay cho file tmux config mở sẵn trong Neovim, để anh vào thẳng chỗ cần khi cần. Side project của anh là fatbot mở ra bằng danh sách của Worktrunk, một project bạn sẽ thấy ngay sau đây, và theo anh nếu đó là kiểu làm việc của bạn thì bạn sẽ rất thích nó (video đăng ngày 16/10/2026).

sesh do Josh Medeski maintain, và theo anh (video đăng ngày 16/10/2026) nó làm được nhiều hơn hẳn những gì anh trình bày ở đây.

7. Worktree: từ Worktrunk tới Workmux

Anh đoán bạn đang thắc mắc về đám biểu tượng nhánh với những cái tên nghe như tính năng trong git. Anh bảo hãy nhấp một ngụm "hipster coffee", vì phần tiếp theo cần tập trung.

Anh nói anh đã nói khá nhiều về worktree. Anh cho rằng đó là tính năng tốt nhất của git nhưng có UX tệ nhất (video đăng ngày 16/10/2026). Vì chưa bao giờ có một cách hợp lý để điều khiển vòng đời của worktree, mọi thứ lúc nào cũng thành một mớ hỗn độn, ít nhất là với anh, cho tới khi anh tìm ra Worktrunk, một project mà anh gọi là tuyệt vời, xuất sắc, nhắm đúng vào vấn đề này.

Nhưng theo thời gian, anh muốn làm nó thông minh hơn: dùng session, điều khiển chúng bằng các plugin tmux của mình, và, khi mọi agent đang làm chúng ta mất dần tình yêu với code, điều khiển được khối công việc song song, nhiều tính năng nhưng vô hồn này. Thế là anh tìm ra Workmux. Nói đơn giản, theo anh (video đăng ngày 16/10/2026), Workmux gom mọi thứ anh vừa nhắc lại với nhau và thêm một UI, đúng hơn là một TUI.

Dashboard của Workmux với bảng Agents gồm các cột Project, Worktree, Git, PR, Status, Time, Title và một ô preview ở dưới
Dashboard Workmux: mỗi dòng là một project và worktree, với git diff, PR, trạng thái và thời gian chạy; ô preview ở dưới cho phép gõ vào agent (demo trong video đăng ngày 16/10/2026).

Dashboard này, chẳng hạn, liệt kê các project và worktree anh đang chạy, git diff của chúng, PR đã tồn tại hay thậm chí đã merge, cùng thời gian chúng đã chạy (demo trong video đăng ngày 16/10/2026). Ở dưới có một ô preview, và theo anh nó cho phép điều khiển agent ngay từ đây. Đây không phải tuỳ chọn anh thích nhất, nhưng anh thấy rất hay.

Khi cần một tính năng, cách anh hay làm là gọi lệnh add của Workmux kèm một cái tên; trên màn hình anh gõ:

workmux dashboard
wm add somefeature

Vì anh đã cấu hình sẵn (config cũng nằm trong dotfiles của anh), lệnh này mở một session mới, và một cửa sổ bật lên với agent Pi (demo trong video đăng ngày 16/10/2026). Anh hẹn sẽ nói về Pi ngay sau. Anh có thể mở SessionX, thấy mọi session ngay ở đó, trong khi plugin đã gợi ý session mới nhất ngay dưới con trỏ.

8. Herdr và TUIOS, hai multiplexer khác

Anh nhắc lại Herdr, thứ mà anh tin là dashboard của Workmux đã lấy một phần cảm hứng. Theo anh (video đăng ngày 16/10/2026), Herdr là một multiplexer đầy đủ, quản lý mọi thứ theo cách gần giống vậy. Nó có tab và split, có một status bar cho thấy bạn đang có những space nào và các agent đang chạy trong đó cùng trạng thái của chúng. Anh nói phải công nhận: nó đẹp ngay từ đầu, và những gì bạn thấy là khi chưa cấu hình gì cả. Nó còn điều khiển được bằng chuột và có UX tử tế. Trong khi với tmux, bạn phải vượt qua nhiều trở ngại chỉ để đổi tên cửa sổ nếu chưa đặt sẵn.

Một lựa chọn khác mà anh gọi là "incredible" là TUIOS. Theo anh (video đăng ngày 16/10/2026), nó tự hào là một "terminal operating system", một cách nói hoa mỹ của multiplexer, nhưng bạn sẽ hiểu ngay vì sao có chữ OS. Bạn mở một pane mới và nó cứ nằm đó, lơ lửng, giống như khi bạn mở một cửa sổ trên hệ điều hành. Nó có thể hiện metrics ở phía trên, điều khiển workspace, tiling, và có nhiều mode khác nhau. Các nút ở trên gợi ý bạn có thể thu nhỏ, phóng to và đóng pane, đúng như cửa sổ của một hệ điều hành. Mở thêm một pane nữa, nó cũng lơ lửng.

Máy local tmux sesh, SessionX, Floax, Catppuccin Máy remote TUIOS pane nổi như cửa sổ hệ điều hành
Hình 8.1Anh dùng TUIOS trên máy remote, còn trên máy local vẫn là tmux cùng các plugin của anh (theo lời anh, video đăng ngày 16/10/2026).

Anh gọi TUIOS là đẹp, mượt và rất sáng tạo, và nói đó không phải điều anh nói một cách dễ dãi, nhất là khi đụng tới multiplexing và điều khiển terminal (video đăng ngày 16/10/2026). TUIOS là một trong những thứ anh dùng trên máy remote. Còn trên máy local, một lần nữa, lựa chọn của anh là tmux.

9. Shell: rời Nushell, quay về zsh

Anh muốn đi tiếp tới những phần thú vị khác, nhưng nói mình phải dừng lại, cư xử như người lớn và, dù ngượng, nói về shell của mình. Chính cái shell mà anh đã cổ vũ suốt phần lớn năm vừa rồi, và là lựa chọn mặc định của anh. Giờ thì không nữa. Anh nói anh đã tự làm mình xấu hổ đủ rồi, nên chỉ nói thế này: anh không còn dùng Nushell.

Anh đã quay về zsh, "the good old POSIX compatible friend" (video đăng ngày 16/10/2026). Anh không còn những danh sách file đẹp mắt, ít nhất là không trực tiếp. Anh không còn cấu trúc bảng, thứ không phải lúc nào cũng làm mọi thứ dễ đọc hơn, nhưng cho phép bạn query bằng những toán tử rất đơn giản, dù đó là một danh sách file, một file JSON, YAML hay một SQLite DB. Thứ anh mệt mỏi vì không có là chuyện export biến môi trường, hay eval một danh sách.

Thế nên anh quay về một công cụ ls quen thuộc để liệt kê file và in cây thư mục, cùng một file config shell đơn giản dựa trên bash. Khi muốn query một DB ngay từ command line, anh luôn có thể bật nu lên. Theo anh (video đăng ngày 16/10/2026), nó vẫn ở đây, không mất đi, chỉ không còn là mặc định. Anh nói cách này còn cho phép anh gọi ls qua nu ngay khi cần: vừa có bánh vừa được ăn bánh.

Terminal: từ zsh gõ nu, rồi chạy open fat.db | query db SELECT * FROM workouts, kết quả là một bảng với các cột id, created_at, updated_at
Từ zsh, anh gõ nu rồi query một SQLite DB của fatbot; Nushell trả về kết quả dạng bảng (demo trong video đăng ngày 16/10/2026).

Lệnh trên màn hình:

open fat.db | query db "SELECT * FROM workouts"

Anh xin lỗi nếu đã làm ai thất vọng, vì đã kéo mọi người theo mình sang Nushell rồi cuối cùng lại quay về. Anh nói anh có ý tốt. Rồi, xong phần ngượng ngùng.

10. Coding agent: Pi thay chỗ OpenCode

Tới lúc cho thứ mà anh gọi là có lẽ là mảnh quan trọng nhất của bức tranh, ít nhất là với môi trường làm việc hiện đại (video đăng ngày 16/10/2026): coding agent của anh, hay harness, hay bất kỳ từ thời thượng nào ta đang dùng cho cái tiện ích terminal nói chuyện với LLM.

Với anh, Pi đã thay chỗ OpenCode. Anh nói đừng hiểu lầm, OpenCode cực kỳ xuất sắc, nhưng có điều gì đó ở Pi làm anh say mê. Anh bị ấn tượng bởi tốc độ, sự đơn giản, và cách tiếp cận gọn nhẹ ngay từ thiết kế. Theo anh (video đăng ngày 16/10/2026), Pi mặc định ở chế độ YOLO, và mọi phần thêm đều là extension để bạn lấy về và cài. Anh nói thật lòng nó đơn giản hết mức có thể. Trên màn hình lúc này là README của Pi trên GitHub, mục "Security (YOLO by default)", ghi rằng agent chạy ở chế độ YOLO hoàn toàn, có quyền truy cập không giới hạn vào filesystem và chạy mọi lệnh mà không có permission check hay safety rails (README hiện trong video đăng ngày 16/10/2026).

Pi khởi động trong terminal mà không có banner màu mè nào, cứ thế sẵn sàng. Nó đưa bạn tới các menu, bắt đầu từ settings, cho phép bật auto compact cho session, đổi giao diện và nhiều thứ khác. Theo anh (video đăng ngày 16/10/2026), tất cả đều có trong một file config, cùng với nơi mà các thay đổi đó được ghi lại khi bạn đổi chúng.

Pi trong terminal: sau lời chào hi và câu What do you need help with, anh gõ dấu gạch chéo và một menu hiện các lệnh settings, model, tree, thinking, scoped-models
Gõ / trong Pi mở danh sách slash command: settings, model, tree, thinking, scoped-models; dòng trạng thái ghi (openai-codex) gpt-6-astra • high (demo trong video đăng ngày 16/10/2026).

Bạn đổi model bằng một phím. Và nếu bạn lo, anh nói anh đang dùng Codex ở đây, qua subscription trả phí của mình, không phải bằng API token như trước đây bạn phải làm (video đăng ngày 16/10/2026).

Pi có một cây hội thoại hữu ích, cho phép bạn xem lại nhưng cũng fork bất kỳ nhánh nào, phòng khi bạn hỏi model một thanh Snickers có bao nhiêu calo trong lúc đang build một backend bằng Rust. Lấy một cuộc hội thoại bận rộn hơn, với context window đã đầy 75%: theo anh (video đăng ngày 16/10/2026), cái cây này trở nên rất hữu ích nếu bạn cần giải phóng cửa sổ đó từ một điểm nhất định mà không cần compaction. Bạn cũng có thể xoay vòng giữa các model đã đặt sẵn, nếu bạn dùng các model khác nhau cho các việc khác nhau mỗi ngày.

Session có thể export, điều quan trọng cho việc cộng tác, và cũng có thể chia sẻ dưới dạng gist (theo anh, video đăng ngày 16/10/2026). Nếu có gì không ổn, ví dụ như việc tìm lại đầu của câu trả lời gần nhất khi làm việc trong tmux, thứ mà hoá ra gây ra vấn đề, thì hãy tự build một giải pháp nhỏ. Anh đã tự viết một slash command cho việc đó, có trên GitHub của anh, và anh dùng nó hằng ngày.

11. ASD-STE100: Simplified Technical English cho agent

Nhân tiện đang nói về agent, anh đưa ra một "nugget" anh mới bắt đầu dùng gần đây, thứ liên quan tới LLM hơn là tới harness, nhưng anh đã cấu hình nó vào Pi. ASD-STE100 là viết tắt của Simplified Technical English. Theo anh (video đăng ngày 16/10/2026), đó là một chuẩn từ thập niên 80, làm ra để đơn giản hoá chỉ dẫn ở những lúc chúng quan trọng, ví dụ trong các sứ mệnh Apollo hay quy trình của phi công chiến đấu. Và nếu nó tốt cho họ, thì nó cũng ổn cho agent nhỏ của anh, đúng không?

Trên màn hình anh gõ cho Pi:

Use ASD-STE100 and explain this repo
Trang About STE của asd-ste100.org, mục Origin và Requirements, recommendations, and references
Trang asd-ste100.org trên màn hình ghi STE là một "controlled natural language" phát triển từ cuối thập niên 1970, ban đầu là AECMA Simplified English cho tài liệu bảo dưỡng ngành hàng không, và được phát hành lần đầu năm 1986 (video đăng ngày 16/10/2026).

Trang asd-ste100.org mà anh mở trên màn hình ghi rằng STE phát triển từ cuối thập niên 1970, ban đầu dưới tên AECMA Simplified English, để người đọc tài liệu bảo dưỡng tiếng Anh hiểu được những gì họ đọc; ban đầu áp dụng cho hàng không thương mại, sau đó thành yêu cầu cho các dự án quốc phòng, và được phát hành lần đầu năm 1986 dưới dạng tài liệu AECMA PSC-85-16598 (trang hiện trong video đăng ngày 16/10/2026).

Anh nói anh không phải thiên tài nghĩ ra chuyện này, mà là "anh chàng này", Andrej Karpathy, và xin đừng ai mắng anh trong phần bình luận vì gọi ông là "anh chàng này", anh biết Andrej Karpathy là ai. Nhưng theo anh (video đăng ngày 16/10/2026), ngay cả Karpathy cũng không phải người đầu tiên có ý tưởng này: có một Pi extension từ ngày 18 tháng 8, hai tháng trước tweet đó, cài giao thức STE vào Pi. Đơn giản hoá chỉ dẫn và từ ngữ, vì lợi ích của tất cả mọi người.

12. Di chuyển trong terminal với zoxide

Tới phần di chuyển trong terminal. Anh nói dù đây chắc không phải tin mới với ai, anh dùng zoxide cho mọi thứ. Theo anh (video đăng ngày 16/10/2026), nó tích hợp với các plugin tmux của anh, với các multiplexer khác anh đã giới thiệu, và với những tiện ích khác sắp xuất hiện trong video.

Về cơ bản, zoxide là một cỗ máy đoán có cơ sở cho đường dẫn bạn muốn tới: bạn gõ z rồi một từ, và theo anh 9 trên 10 lần bạn sẽ tới đúng chỗ (video đăng ngày 16/10/2026). Nếu không, hoặc đơn giản là có nhiều hơn một lựa chọn hợp lý, thêm i và fzf sẽ hiện ra các lựa chọn, chứa những đường dẫn đã lưu cho lượt tìm này cùng điểm số mà zoxide chấm cho chúng. Điểm này dựa trên mức độ gần đây và tần suất ghé thăm, nên đường dẫn dotfiles nằm trên cùng, rõ ràng là người thắng. Có những trường hợp không rõ ràng như vậy, và đó là lúc zi phát huy tác dụng.

Terminal: z download đưa tới thư mục Downloads, rồi zi dotfiles mở danh sách fzf với hai đường dẫn dotfiles và điểm số 1412.0 và 1.2
Sau z download, anh gõ zi dotfiles: fzf liệt kê hai đường dẫn khớp, đường dẫn dotfiles chính có điểm 1412.0, đường dẫn còn lại 1.2 (demo trong video đăng ngày 16/10/2026).
z download
zi dotfiles

zoxide còn nhiều hơn thế, nhưng theo anh (video đăng ngày 16/10/2026) đây là 99.9% những gì anh, và có lẽ mọi người khác, dùng nó để làm. zoxide là một CLI viết bằng Rust, nhưng như phần lớn các CLI Rust thời nay, nó dựa trên một shell script cũ tên là z, 267 dòng bash làm gần như cùng việc đó, chỉ theo cách rất ngây thơ. Theo anh, zoxide đã đưa mọi thứ ở đó lên một tầm cao mới.

13. Lịch sử lệnh với Atuin, và fzf

Một thứ khác rất phổ biến trên terminal của anh là Atuin, trình quản lý lịch sử lệnh thông minh. Theo anh (video đăng ngày 16/10/2026), nó không chỉ tốt sẵn như vậy mà gần đây còn được nâng cấp: giờ nó làm việc với tmux, chạy trong một popup, và có AI riêng có thể tìm trong các lệnh local của bạn hoặc tạo ra lệnh.

"Ai cần trình quản lý lịch sử lệnh chứ? Cứ dùng cái mặc định, hoặc fzf." Anh hỏi bạn đã nghe câu đó, hay đã nói câu đó chưa. Theo anh (video đăng ngày 16/10/2026), Atuin làm được những thứ rất hay như đồng bộ lịch sử giữa các máy, dùng backend của họ hoặc một backend bạn tự host, nhưng đó không phải điểm chính, ít nhất với anh. Nó giữ một SQLite local nên bạn không bao giờ mất một lệnh nào. Không chỉ giữ, nó cho bạn tìm trong đó. Nhanh, rất nhanh. Và giờ bạn còn có thể dùng ngôn ngữ tự nhiên để làm chính việc đó, không chỉ là fzf thuần trên lịch sử lệnh.

Atuin SQLite local, không mất lệnh nào tìm trong lịch sử, rất nhanh tìm bằng ngôn ngữ tự nhiên đồng bộ giữa các máy fzf nhận bất kỳ danh sách input nào cho fuzzy search trên đó tuỳ biến giao diện, menu, màu icon, nerd font, key bindings
Hình 13.1Những gì anh nói về Atuin và fzf (video đăng ngày 16/10/2026): với anh điểm chính của Atuin là SQLite local và khả năng tìm, còn fzf là thứ mà SessionX dựa vào.

Dù vậy, anh vẫn giữ phím Ctrl-R quen thuộc gán cho fzf chạy trên output lịch sử lệnh. Anh nói anh thật ra không hề dùng nó, nhưng đó là cái cớ tốt để chuyển sang một trong những project open source phổ biến và hay ho nhất mà anh dùng (video đăng ngày 16/10/2026). Thậm chí, plugin SessionX vốn khá phổ biến của anh sẽ chẳng là gì nếu không có thứ anh gọi là "the king of CLIs": fzf, một fuzzy finder. Anh nói hình như giờ còn có cả merch.

Theo anh (video đăng ngày 16/10/2026), fzf cài được ở bất kỳ đâu, cực kỳ dễ cắm vào và hữu ích. Bạn đưa cho nó bất kỳ danh sách input nào, nó parse và tạo ra một lớp fuzzy search bên trên. Theo thời gian nó tích luỹ rất nhiều tuỳ chọn: bạn có thể tuỳ biến giao diện như bạn thấy trên SessionX, thêm menu, đổi màu, tuỳ biến picker cả về hình thức lẫn logic, chọn icon, dùng nerd font, đổi key bindings và nhiều nữa.

14. Shell prompt với Starship

Anh hỏi còn thứ gì khác làm việc của nó một cách lặng lẽ và hiệu quả? Một shell prompt cập nhật theo bạn. Ở đây có phiên bản Python, AWS profile kèm region, và tuỳ theo project, những thứ này thay đổi động, nhờ Starship (demo trong video đăng ngày 16/10/2026). Trên màn hình anh gõ:

export AWS_PROFILE=private-test
export AWS_PROFILE=private
export AWS_REGION=us-west-3

Sau đó dòng prompt hiện phiên bản Python v3.14.6 và profile: "private" (region: us-west-3) (demo trong video đăng ngày 16/10/2026). Theo anh, Starship không chỉ là một script: nó biết khi nào bạn đặt một giá trị giả hoặc sai, và khi nào giá trị đó có ý nghĩa. Nó cho bạn thấy git status, và thay đổi bất cứ thứ gì bạn muốn dựa trên những gì bạn cấu hình.

Như các dotfiles khác của anh, bạn sẽ thấy config của anh, mà anh nói là khá gọn. Theo anh (video đăng ngày 16/10/2026), anh chủ yếu muốn thấy git, AWS và các project Go. Thật lòng, chủ yếu chỉ vậy.

Trước đây việc này do Oh My Zsh làm, thứ mà anh gọi là cực kỳ phổ biến, với gần 200.000 sao vào thời điểm quay (theo lời anh, video đăng ngày 16/10/2026). Anh thấy nó hơi chậm, dựa rất nhiều vào shell script và khó theo dõi, lại dễ làm hỏng. Anh chuyển sang Starship hai hay ba năm trước và từ đó không nhìn lại.

15. Neovim, LazyVim và năm "out of the box"

Thứ tiếp theo, anh nói ai cũng biết. Neovim là IDE "one and only" mà anh yêu. Theo anh (video đăng ngày 16/10/2026), nó thật sự có mọi thứ, từ gợi ý code, LSP, debugger, khám phá file và còn nhiều nữa. Framework anh chọn là LazyVim.

Anh nói thật lòng, bất chấp hay chính vì AI, đội ngũ đứng sau Neovim đã quyết định 2027 sẽ là năm của Neovim "out of the box", điều anh thấy vừa thú vị vừa đáng chú ý. Trên trang roadmap của Neovim mà anh mở, mục Completed ghi bản 0.12 là "The year of Nvim OOTB", với plugin manager vim.pack, lệnh :lsp, statusline mặc định và vài tính năng khác (video đăng ngày 16/10/2026).

Trang neovim.io/roadmap, mục Completed với bản 0.12 The year of Nvim OOTB và bản 0.11
Trang roadmap của Neovim: bản 0.12 mang tên "The year of Nvim OOTB", liệt kê plugin manager, LSP, statusline mặc định và các cải tiến prompt-buffer (video đăng ngày 16/10/2026).

Theo anh (video đăng ngày 16/10/2026), trong một thế giới vibe code, nơi mọi thứ đều chạy ngay khi cài, Neovim vẫn là con quái vật mà bạn phải cấu hình từng chút một mới dùng được. Anh mong là sẽ không còn như vậy nữa. Anh gợi ý bạn có thể thử Zed editor, thứ cũng có mặc định rất tốt, hoặc thậm chí Helix.

Theo anh (video đăng ngày 16/10/2026), vì Neovim được cấu hình làm editor của anh, nó cũng tích hợp với các công cụ khác, nên dù anh không viết nhiều dòng code, nó vẫn bật lên từ những chỗ như dòng prompt của agent. Anh nói không chắc chuyện này buồn cười hay đáng buồn hơn. Config Neovim của anh nằm trong dotfiles.

16. File explorer: Superfile và television

Anh nhắc lại zoxide từ lúc trước: có một cách trực quan hơn để di chuyển giữa các file trong terminal, đó là dùng một file explorer dạng TUI. Theo anh (video đăng ngày 16/10/2026), cũng như nhiều mảng khác, vì lý do nào đó đây là một thị trường bão hoà: có khá nhiều file explorer cho terminal tuyệt vời, hiện đại, nhanh và nhiều tính năng. Có nnn, Ranger, Yazi, mà anh nói cũng là cái phổ biến nhất. Và rồi có Superfile.

Điều anh thích ở cái cuối là nó "fancy" không chỉ vì họ nói vậy, anh thật sự cảm thấy thế: nó đẹp và thông minh (video đăng ngày 16/10/2026). Superfile cho bạn thấy các đường dẫn để dễ điều hướng, preview cả thư mục lẫn file, phím bind dễ dùng và một menu tuỳ chọn có thể tìm kiếm, một danh sách yêu thích với pin board tuỳ biến được để bạn thêm các vị trí của mình. Có metadata của file và những cách dễ dàng để cut, copy, paste và xoá file, mọi thứ ngay đầu ngón tay.

Superfile trong terminal: cột trái gồm Home, Desktop, Downloads, mục Pinned và Disks; giữa là thư mục dotfiles; dưới là các ô Processes, Metadata và Clipboard
Superfile mở thư mục dotfiles: cột trái có các vị trí, mục Pinned và Disks; ở giữa là danh sách thư mục; phía dưới là các ô Processes, Metadata và Clipboard (demo trong video đăng ngày 16/10/2026).

Theo anh (video đăng ngày 16/10/2026), UI được nghĩ kỹ: bạn sẽ thấy các tiến trình khi cut, và hộp xác nhận khi xoá. Nó thật sự nhanh, dễ dùng và dễ nhìn.

Và nếu bạn thích những tiện ích mượt mà, television là một lựa chọn như vậy nữa. Theo anh (video đăng ngày 16/10/2026), về cơ bản đó là fzf trong một TUI. Nó có các channel, đúng như một cái TV phải có: đó là các danh sách khác nhau mà bình thường bạn sẽ tìm và preview, như dotfiles hay thư mục, hoặc những thứ hữu ích hơn như alias hay AWS bucket. Và cái panel bật lên này, anh nói, được gọi là "TV remote".

17. mise cho môi trường dev, và lời kết

Món anh gọi là phát hiện hay nhất cuối cùng của năm ngoái là mise (trang chủ gọi là mise-en-place), dành cho dev tool, biến môi trường và các task khác (video đăng ngày 16/10/2026). Anh hỏi bạn còn nhớ direnv không? Theo anh, đó chỉ là một trong những việc mise làm, và mise làm việc đó tốt hơn. Bạn đi vào một project, và nếu project có file cấu hình của mise, nó sẽ đặt mọi thứ cho bạn khi bạn ở đó. Biến môi trường sẽ bị gỡ khi bạn rời đi. Và các tool cũng có sẵn trong một shell bật lên theo nhu cầu. Docs của mise có một trang hướng dẫn chuyển từ direnv sang, ghi rằng mise đặt biến môi trường, nạp file dotenv và thêm PATH khi bạn vào một thư mục (đọc ngày 03/11/2026).

Anh nói còn vài thói quen nhỏ khác của riêng anh, như cách anh quản lý dotfiles, hay một TUI anh chạy để quản lý cloud profile hoặc xác thực Kubernetes, nhưng những thứ đó khá ngách. Theo anh (video đăng ngày 16/10/2026), danh sách trong video này bao phủ 95% việc dùng terminal hằng ngày của anh, tất cả được theo dõi công khai trong Git, tất cả đã được thử qua nhiều năm.

Anh mong video trả lời được những câu hỏi anh nhận được suốt năm qua, và hy vọng ai cũng tìm được điều gì đó mới. Anh cảm ơn mọi người đã xem.

Nguồn và liên kết 25 nguồn

  1. Tên gốc: I Tried Everything. This is the Best Terminal Setup
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=QpiZOKul1U8 youtube.com
  4. Kênh YouTube DevOps Toolbox (DevOps Toolbox): youtube.com/channel/UCYeiozh-4QwuC1sjgCmB92w youtube.com
  5. Ghostty, trang chủ (đọc ngày 03/11/2026): ghostty.org ghostty.org
  6. Superlogical, trang ghi "We are building the multiplexer for all work" và "Rex is now in beta" (đọc ngày 03/11/2026): superlogical.com superlogical.com
  7. tmux, mã nguồn (đọc ngày 03/11/2026): github.com/tmux/tmux github.com
  8. sesh, "Smart tmux session manager" (đọc ngày 03/11/2026): github.com/joshmedeski/sesh github.com
  9. Worktrunk (đọc ngày 03/11/2026): worktrunk.dev worktrunk.dev
  10. Workmux (đọc ngày 03/11/2026): workmux.dev workmux.dev
  11. Herdr (đọc ngày 03/11/2026): herdr.dev herdr.dev
  12. TUIOS (đọc ngày 03/11/2026): tuios.dev tuios.dev
  13. Pi, trang chủ (đọc ngày 03/11/2026): pi.dev pi.dev
  14. Pi, repo trên GitHub (đọc ngày 03/11/2026): github.com/earendil-works/pi github.com
  15. ASD-STE100, trang About STE (đọc ngày 03/11/2026): asd-ste100.org/about_STE.html asd-ste100.org
  16. zoxide, "A smarter cd command" (đọc ngày 03/11/2026): github.com/ajeetdsouza/zoxide github.com
  17. Atuin (đọc ngày 03/11/2026): atuin.sh atuin.sh
  18. fzf, "A command-line fuzzy finder" (đọc ngày 03/11/2026): github.com/junegunn/fzf github.com
  19. Starship (đọc ngày 03/11/2026): starship.rs starship.rs
  20. Oh My Zsh (đọc ngày 03/11/2026): ohmyz.sh ohmyz.sh
  21. Neovim roadmap (đọc ngày 03/11/2026): neovim.io/roadmap neovim.io
  22. LazyVim (đọc ngày 03/11/2026): lazyvim.org lazyvim.org
  23. Superfile (đọc ngày 03/11/2026): superfile.dev superfile.dev
  24. mise, trang chủ (đọc ngày 03/11/2026): mise.jdx.dev mise.jdx.dev
  25. mise, hướng dẫn chuyển từ direnv (đọc ngày 03/11/2026): mise.jdx.dev/direnv.html mise.jdx.dev