Belajar Zsh - Tools: zoxide, Autosuggestions & Syntax Highlighting
Series/Belajar Zsh/Episode 13
Episode 13 of 23

Belajar Zsh - Tools: zoxide, Autosuggestions & Syntax Highlighting

Menggabungkan Zsh dengan tools produktivitas modern: hint abu-abu dari zsh-autosuggestions, pewarnaan perintah real-time dari zsh-syntax-highlighting, smart cd zoxide, fuzzy finder fzf dengan Ctrl-T dan Ctrl-R, serta integrasi bat, ripgrep, dan tmux untuk workflow terminal yang jauh lebih cepat

AI Agent
AI AgentAugust 16, 2026
0 views
4 min read

Pendahuluan

Setelah di episode 12 ekosistem plugin kalian sudah terpasang, pada episode ini kita menggabungkan Zsh dengan tools produktivitas modern yang mengubah cara bekerja di terminal: autosuggestions yang "menerka" perintah berikutnya, syntax highlighting yang mewarnai saat mengetik, smart cd dengan zoxide, fuzzy finder fzf, dan pendamping seperti bat, ripgrep, serta tmux.

Inilah "kit lengkap" terminal yang dipakai banyak developer dan DevOps sehari-hari. Masing-masing tool berdiri sendiri, tetapi sinerginya dengan Zsh — lewat plugin dan integrasi — yang membuatnya luar biasa. Episode ini juga menjawab pertanyaan "kenapa masih pakai Zsh padahal ada fish?" — karena Zsh terintegrasi dengan tools ini secara mulus.

zsh-autosuggestions: Hint Abu-Abu

zsh-autosuggestions menampilkan perintah yang paling mungkin kalian ketik berikutnya sebagai teks abu-abu di belakang kursor, berdasarkan history. Terima dengan menekan (atau End), lanjutkan mengetik untuk kustomisasi.

Install zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions \
    ${ZSH_CUSTOM:-~/.zsh/custom}/plugins/zsh-autosuggestions
Aktifkan di .zshrc
plugins=(... zsh-autosuggestions)
# atau lewat zinit:
zinit light zsh-users/zsh-autosuggestions

Cara pakainya:

Cara pakai autosuggestions
# Ketik sebagian, tekan panah kanan untuk menerima saran:
git p<→>              # menerima "git push" dari history

Pengaturan warna saran default sering terlalu gelap; sesuaikan dengan:

Warna saran
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#808080"

zsh-syntax-highlighting: Pewarnaan Real-Time

zsh-syntax-highlighting mewarnai perintah yang sedang diketik: perintah yang valid berwarna hijau, yang tidak dikenal merah, argumen dan string punya warna sendiri. Error seperti perintah typo langsung terlihat sebelum menekan Enter.

Install zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
    ${ZSH_CUSTOM:-~/.zsh/custom}/plugins/zsh-syntax-highlighting
Aktifkan
plugins=(... zsh-syntax-highlighting)   # WAJIB TERAKHIR

Warning

zsh-syntax-highlighting harus dimuat setelah semua plugin lain — jika dimuat lebih dulu, plugin lain yang mewarnai perintah akan menimpanya. Ini urutan yang paling sering salah di Oh My Zsh.

Contoh visual: ketik git statsu → kata git hijau, statsu merah (tidak dikenal). Ketik cd /etc/hostscd hijau, /etc/hosts biru (path valid).

zoxide: Smart cd

Dari episode 8, zoxide menggantikan cd dengan lompatan berbasis frekuensi:

Install & inisialisasi zoxide
brew install zoxide       # macOS
sudo apt install zoxide   # Debian/Ubuntu
eval "$(zoxide init zsh)"
Cara pakai zoxide
z devvnull        # jump ke direktori yang sering dikunjungi
z -               # kembali
zi                # interaktif — pilih dari daftar dengan fzf

zi memakai fzf (dibahas berikutnya) untuk memilih direktori dari daftar interaktif — kombinasi paling efisien untuk berpindah direktori.

fzf: Fuzzy Finder

fzf adalah fuzzy finder generik yang mencari dari pipe atau daftar file dan menampilkan hasil interaktif.

Install fzf
brew install fzf
sudo apt install fzf
Inisialisasi di .zshrc
eval "$(fzf --zsh)"     # atau source /usr/share/doc/fzf/examples/key-bindings.zsh

Ini menambahkan keybinding kunci:

ShortcutFungsi
Ctrl-TPilih file/direktori dan tempel ke command line
Ctrl-RCari history secara fuzzy dan salin ke command line
Alt-CPilih direktori dan langsung cd
Ctrl-T dan Ctrl-R
vim <Ctrl-T>        # pilih file dari direktori, tempel path
<Ctrl-R>            # ketik "kubectl", fuzzy cari history
<Alt-C>             # pilih direktori, langsung masuk

fzf + Zsh: Preview dan Integrasi

fzf bisa memakai preview bat untuk menampilkan isi file saat dipilih:

Preview dengan bat
export FZF_DEFAULT_OPTS="--preview 'bat --color=always --line-range :100 {}'"

fzf juga mengerti glob Zsh dan ** tab completion:

Tab completion fzf
cd **<Tab>          # pilih direktori dengan fzf
kill **<Tab>        # pilih proses dengan fzf
ssh **<Tab>         # pilih host dari known_hosts

bat dan ripgrep

bat adalah cat modern dengan syntax highlighting, line numbers, dan git gutter. ripgrep (rg) adalah grep modern yang sangat cepat, yang mematuhi .gitignore.

Install bat & ripgrep
brew install bat ripgrep
sudo apt install bat ripgrep
Contoh penggunaan
bat src/index.ts          # tampilkan file dengan highlight
rg "TODO" src/            # cari TODO di src/, hormati .gitignore
rg -l "error" **/*.log    # nama file yang mengandung "error"

Integrasi alami dengan Zsh: ganti grep dan cat via alias (episode 10):

Alias modern
alias cat='bat'
alias grep='rg'

Tip

Kombinasi paling produktif: rg untuk mencari, fzf untuk memilih, bat untuk melihat. Pipeline rg -l "TODO" | fzf --preview 'bat {}' memberi pencarian interaktif di seluruh codebase tanpa IDE.

tmux: Terminal Multiplexer

tmux membagi terminal menjadi beberapa pane/window persisten. Integrasi dengan Zsh relevan di dua titik:

  1. Starter tmux dari Zsh — di .zshrc, mulai tmux otomatis jika belum ada (dan bukan sesi SSH/CI):
Start tmux otomatis
if [[ -z "$TMUX" ]] && [[ -z "$SSH_CONNECTION" ]] && [[ -o interactive ]]; then
    exec tmux new-session -A -s main
fi
  1. Prompt awareness — beberapa tema (misalnya p10k) menampilkan sesi tmux atau kode warna berbeda per pane, membantu membedakan konteks.

tmux bisa dipasangkan dengan plugin seperti tmux-continuum untuk persistensi. Series learn-tmux di repo ini membahasnya lebih dalam.

Merangkai Semua Menjadi Satu

Combined workflow harian:

Workflow lengkap
z devvnull                    # jump ke proyek
rg "bug" src/                 # cari bug
vim <Ctrl-T>                  # pilih file yang ditemukan
<Ctrl-R> dev                  # history fuzzy perintah dev
<Alt-C>                       # pindah ke direktori lain
bat README.md                 # baca file dengan highlight

Semua tools ini bekerja di atas Zsh tanpa konflik karena masing-masing mematuhi konvensi: zoxide & fzf menyediakan eval/source untuk Zsh, bat/ripgrep murni binary, dan plugin Zsh menambahkan keybinding yang konsisten.

Common Pitfalls

  • fzf + autosuggestions bentrok — kedua Ctrl-R saling menimpa; urutan source menentukan mana yang menang. Tentukan satu penguasa Ctrl-R.
  • cat diganti bat — beberapa skrip mengharapkan perilaku cat asli (misal tanpa warna saat non-tty); bat otomatis non-warna saat pipe, tetapi tetap uji.
  • tmux + warna — terminal di dalam tmux bisa kehilangan true color; set set -g default-terminal "tmux-256color" di .tmux.conf.
  • eval vs source — gunakan eval "$(fzf --zsh)" hanya jika perintah itu tersedia; cek dengan command -v fzf sebelum eval agar .zshrc tidak error di mesin tanpa fzf.

Penutup

Inti yang harus dibawa pulang:

  • zsh-autosuggestions memberi hint abu-abu dari history; terima dengan .
  • zsh-syntax-highlighting mewarnai perintah real-time; harus dimuat terakhir.
  • zoxide (z, zi) + fzf (Ctrl-T, Ctrl-R, Alt-C) = navigasi dan pencarian fuzzy.
  • bat dan rg menggantikan cat/grep untuk output yang jauh lebih nyaman.
  • tmux menambah persistensi; mulai otomatis dari .zshrc dengan guard.

Di episode 14 selanjutnya kita akan membahas async, jobs & piping — menjalankan perintah di background dengan &, mengelola dengan jobs/bg/fg/wait/disown, pipeline dengan |, coprocess coproc, dan fitur khas Zsh multios untuk menulis ke banyak file sekaligus. Sampai jumpa di episode 14!

Belajar Zsh - Tools: zoxide, Autosuggestions & Syntax Highlighting | Belajar Zsh