mengintegrasikan zellij dengan ekosistem developer modern: navigasi seamless dengan neovim dan vs code, lazygit dan task runner dalam pane, fzf dan session-manager, hingga ai coding assistant keyboard-only.

Fitur internal yang dibahas di episode 25 hanyalah separuh cerita. Separuh lainnya adalah bagaimana Zellij bergaul dengan tools yang sudah kalian pakai setiap hari: editor, git client, task runner, dan pencari file. Episode 26 ini menjembatani Zellij dengan ekosistem developer modern — dari Neovim dan VS Code hingga lazygit, fzf, dan AI coding assistant — dengan tujuan satu hal: membangun daily driver yang nyaman dan cepat, sepenuhnya keyboard-first.
Mengapa episode ini penting? Banyak orang mencoba Zellij, lalu berhenti karena terasa "asing" — padahal masalahnya bukan Zellij, melainkan integrasi yang belum disiapkan. Neovim yang tidak tahu cara berkomunikasi dengan clipboard Zellij, lazygit yang ditaruh di pane yang salah, atau session switcher yang tidak ada, membuat pengalaman terasa patah-patah. Episode ini merapikan semua titik sambung itu satu per satu.
Rencana episode ini mengikuti alur kerja nyata seorang developer: (1) menyunting kode di Neovim atau VS Code di dalam pane Zellij, (2) memeriksa perubahan dengan lazygit, (3) menjalankan task dengan task runner, (4) berpindah antar session dengan fzf dan session-manager, dan (5) memanfaatkan AI coding assistant tanpa meninggalkan terminal. Di akhir episode, kalian akan melihat pola umum yang membuat semua integrasi itu terasa mulus.
Neovim adalah pasangan paling natural bagi Zellij: keduanya lahir dari filosofi keyboard-first, dan keduanya hidup di dalam terminal. Pola paling dasar adalah menempatkan Neovim di satu pane dan shell di pane sebelahnya. Pindah fokus antara keduanya cukup dengan Alt+h/j/k/l — tidak perlu keluar dari insert mode, tidak perlu menyentuh mouse.
Satu hal yang sering membuat frustrasi adalah clipboard. Zellij mendukung OSC 52, protokol yang memungkinkan aplikasi di dalam terminal membaca dan menulis clipboard sistem. Dengan dukungan ini, Neovim yang menetapkan clipboard ke unnamedplus akan menyinkronkan yank dan paste dengan clipboard sistem — seolah-olah tidak ada Zellij di antara keduanya:
vim.opt.clipboard = "unnamedplus"
vim.opt.mouse = "a"Aturan mouse = "a" membuat seleksi mouse di dalam Neovim ditangani oleh Neovim sendiri, sementara di pane shell murni seleksi ditangani oleh Zellij — keduanya koeksistensi tanpa konflik. Untuk workspace yang lebih fokus, zoom pane dengan Ctrl+p lalu f (ToggleFocusFullscreen) agar Neovim menempati layar penuh, lalu kembali ke tata letak semula dengan tombol yang sama.
Ada juga pola "editor menguasai seluruh pane": jalankan Neovim di satu pane besar, lalu buka floating pane di atasnya untuk perintah cepat seperti git diff, rg, atau cargo test. Buat floating pane dengan Ctrl+p lalu w, dan jangan lupa fitur pinned floating panes dari episode 25 (Ctrl+p lalu i) jika kalian ingin pane itu selalu tampil di atas.
Satu integrasi yang sering terlewat adalah scrollback editor. Dari Scroll mode (Ctrl+s), tekan e untuk membuka isi scrollback di $EDITOR — default-nya Neovim atau Vim. Ini berguna ketika output log panjang dan kalian ingin mengolahnya dengan editing normal: g untuk ke awal buffer, / untuk mencari, lalu :w untuk menyimpan. Dengan cara ini, buffer terminal yang panjang tidak pernah lagi menjadi dinding teks yang tidak bisa digarap.
Tip
Scrollback di dalam Neovim ditangani oleh Neovim itu sendiri, bukan oleh Zellij. Jika kalian berada di dalam Neovim dan menekan Ctrl+s, Zellij akan scroll buffer terminal di balik Neovim — hasilnya tidak sesuai ekspektasi. Untuk menggulir kode, gunakan scroll Neovim (Ctrl+d/Ctrl+u); simpan Scroll mode Zellij untuk output shell, log, dan perintah CLI murni.
Tidak semua orang hidup di Neovim, dan itu tidak masalah. Zellij berjalan sempurna di dalam terminal built-in VS Code — di Linux, macOS, maupun Windows. Pendekatan yang umum adalah menggabungkan dua lapis: VS Code menangani editing dan debugging, sementara Zellij di dalam terminalnya menangani session, banyak pane, dan persistence. Dengan cara ini, kalian tetap mendapat keuntungan session Zellij yang bertahan meskipun jendela VS Code ditutup.
Agar Zellij tampil benar di terminal VS Code, pastikan dua hal. Pertama, set font terminal ke Nerd Font — di VS Code, atur terminal.integrated.fontFamily ke font Nerd Font yang sudah diinstal, misalnya JetBrainsMono Nerd Font. Kedua, pastikan true color aktif; terminal VS Code mendukungnya secara default. Tanpa keduanya, tab-bar dan status-bar Zellij akan tampil rusak.
{
"terminal.integrated.fontFamily": "JetBrainsMono Nerd Font",
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.enableBell": false
}Untuk Windows, 0.44 membawa dukungan native yang membuat pengalaman ini jauh lebih mulus. Bagi yang memakai WSL, Zellij juga berjalan normal di dalam distribusi Linux pada WSL. Pola yang perlu diingat: Zellij di dalam terminal VS Code adalah proses biasa seperti bash atau zsh — jangan ragu menaruh zellij -l welcome sebagai shell startup VS Code, sehingga setiap terminal baru langsung membuka welcome screen untuk memilih session.
| Editor | Posisi Zellij | Hasil |
|---|---|---|
| Neovim | Zellij membungkus Neovim | Workspace penuh dengan mode & floating pane |
| VS Code | Zellij di dalam terminal built-in | Editing VS Code + session Zellij yang persisten |
| Terminal polos | Zellij sebagai lapisan atas | Multiplexing murni |
lazygit adalah terminal UI untuk Git yang berjalan sempurna di dalam pane Zellij. Pola yang paling produktif adalah satu pane khusus lazygit yang selalu terbuka di samping pane editor: Alt+h untuk pindah ke editor, Alt+l untuk kembali ke lazygit. Di lazygit, pilih file, tekan space untuk stage, c untuk commit — lalu kembali ke pane editor untuk lanjut menulis kode.
Karena lazygit adalah aplikasi TUI penuh, ia paling nyaman di pane yang cukup lebar. Dalam layout, berikan pane lazygit porsi yang seimbang:
layout {
tab name="code" focus=true {
pane command="nvim" size=60%
pane split_direction="vertical" {
pane command="lazygit" size=50%
pane command="git log --oneline --graph --decorate --all -20"
}
}
}Untuk task runner, Zellij menawarkan dua pendekatan. Pertama, command pane: buka pane yang menjalankan satu perintah dan menutup diri saat selesai — misalnya zellij run untuk menjalankan task di pane baru tanpa meninggalkan session. Kedua, CLI automation 0.44 dengan flag blocking untuk urutan task ala CI:
zellij run --block-until-exit-success -- npm run test
zellij run --block-until-exit-success -- npm run buildDengan pola ini, script hanya melanjutkan ke task berikutnya jika task sebelumnya sukses. Jika gagal, script berhenti dan pane tetap terbuka untuk inspeksi. Ini mengubah Zellij dari sekadar tempat menaruh proses menjadi orkestrator task yang nyata.
Bila kalian menjalankan banyak project dalam satu hari, kombinasikan ketiga elemen ini — lazygit, task runner, dan layout per project — menjadi satu layout yang terbuka dengan satu perintah zellij -l nama-project. Dengan begitu, struktur workspace tidak perlu dibangun manual setiap pagi: editor, lazygit, task runner, dan log semuanya sudah tersusun di posisinya masing-masing. Inilah esensi dari "workspace sebagai kode" yang akan kalian bawa ke episode 27.
Penting juga untuk memahami kapan memakai command pane dibanding pane biasa. Command pane (zellij run) menjalankan satu perintah dan menutup diri saat selesai — cocok untuk task sekali jalan seperti test, build, atau lint. Pane biasa cocok untuk proses yang berjalan terus seperti dev server atau log watcher. Membedakan keduanya membuat workspace kalian lebih rapi: pane yang bisa menutup sendiri tidak menumpuk.
Semakin banyak session yang kalian buat — satu per project, seperti yang disarankan di episode 18 — semakin penting kemampuan berpindah session secara cepat. Dua tools yang bekerja bersama: fzf untuk pencarian fuzzy dari shell, dan session-manager plugin untuk pengelolaan visual dari dalam Zellij.
Untuk switching via fzf, buat fungsi shell yang me-list session, memfilter dengan fzf, lalu attach. Fungsi yang sama bisa dipakai di semua shell, hanya cara binding-nya yang berbeda:
zellij_sessionizer() {
local selected
selected=$(zellij list-sessions 2>/dev/null | fzf --height 40% --reverse --prompt="session> ")
if [[ -n "$selected" ]]; then
zellij attach "$selected"
fi
}
bindkey '^[s' zellij_sessionizerbindkey '^[s' mengikat fungsi ke Alt+s di zsh; baris bind -x '"\es": ...' melakukan hal yang sama di bash. Pilih tombol yang tidak bertabrakan dengan mode Zellij — Alt+s aman karena tidak dipakai default. Sekarang, dari mana pun kalian berada, satu ketukan membuka daftar session yang bisa difilter, dan pilihan langsung membawa kalian ke session itu.
Dari dalam Zellij, session-manager plugin adalah pilihan utamanya. Tekan Ctrl+o lalu w untuk membuka layar manajemen session terbaru (0.44) yang menampilkan create, attach, dan resurrect dalam satu tampilan dengan fuzzy finding. Kombinasikan keduanya: fzf untuk bergerak cepat antar session dari shell, session-manager untuk operasi yang lebih lengkap seperti rename, disconnect client lain, atau resurrect session lama.
Variasi lain dari pola fzf adalah berpindah proyek, bukan session: list direktori proyek, pilih dengan fzf, lalu buka session Zellij baru di direktori tersebut dengan nama yang konsisten. Skrip ini sangat mirip sessionizer yang populer di komunitas tmux, dan bekerja sama baiknya di Zellij. Dengan dua switcher ini — fzf dari shell dan session-manager dari dalam — tidak ada alasan untuk membuka terminal baru saat ingin berpindah konteks kerja.
AI coding assistant kini menjadi bagian penting ekosistem developer — dan Zellij adalah wadah yang sangat baik untuk mereka. Pola yang nyaman adalah menjalankan assistant di satu pane (misalnya codex, Claude Code, atau aider), editor di pane lain, dan terminal biasa di pane ketiga. Kalian bertanya ke assistant, membaca jawabannya, lalu memindahkan hasilnya ke editor — semua dengan navigasi Alt+h/j/k/l.
Zellij 0.44 menambahkan dukungan notifikasi desktop OSC 99, sehingga assistant yang selesai menjawab bisa mengirim notifikasi ke sistem — kalian tidak perlu terus-menerus menatap pane tersebut. Versi 0.44.3 juga memperbaiki kompatibilitas scrollback dengan codex. Ini contoh kecil dari komitmen Zellij untuk menjadi rumah yang nyaman bagi tooling AI berbasis terminal.
Kunci daily driver keyboard-only bukan pada satu fitur, melainkan konsistensi pola:
Alt+h/j/k/l untuk berpindah antar pane — satu pola untuk semua aplikasi.Ctrl+p lalu n untuk pane baru, Ctrl+t lalu n untuk tab baru.Ctrl+s untuk scroll dan mencari di output.Ctrl+o lalu w untuk pindah session.Jika kalian menguasai lima pola di atas, kalian sudah memiliki 90 persen kebutuhan navigasi harian — editor apa pun yang kalian pakai.
Important
AI coding assistant yang meminta akses ke seluruh repo sebaiknya dijalankan di pane sendiri dengan batasan yang jelas, bukan di pane yang menampung proses produksi. Selalu verifikasi perintah yang disarankan assistant sebelum menjalankannya di pane yang berbagi session dengan orang lain — terutama di session yang di-share lewat web client atau remote sessions.
vim.opt.clipboard = "unnamedplus" di Neovim.terminal.integrated.fontFamily ke Nerd Font.Ctrl+p) akan mengganggu mode pane. Solusi: pilih tombol bebas seperti Alt+s.--block-until-exit-success dan sejenisnya untuk urutan task yang berurutan.Episode 26 ini mengisi titik sambung antara Zellij dan ekosistem developer: Neovim dengan clipboard OSC 52 dan navigasi Alt+h/j/k/l, VS Code dengan terminal built-in dan Nerd Font, lazygit yang hidup di pane khusus, task runner dengan blocking pane ala CI, fzf dan session-manager untuk switching session yang cepat, serta AI coding assistant yang nyaman dijalankan di dalam workspace Zellij. Semua pola itu berputar di sekitar satu filosofi: satu set shortcut yang konsisten di seluruh aplikasi.
Poin yang harus kalian bawa:
zellij run --block-until-exit-success mengubah Zellij menjadi task orchestrator.Di episode 27 selanjutnya kita menaikkan level: menyiapkan setup Zellij yang siap produksi — menyimpan konfigurasi, layout, theme, dan plugin di repo dotfiles, membangun install script otomatis, menangani perbedaan Linux, macOS, dan Windows, memastikan session persistence yang otomatis, serta menstandarkan workflow di tim. Sampai jumpa di episode 27!