Konfigurasi zsh di Arch Linux dan mengaktifkan vi-mode
insert_invitation Tanggal: Rabu, 23 Desember 2020. 12:25:13 WIB
perm_contact_calendar Penulis: selene
local_offer Tags: Linux, shell, zsh
Halo!
Selamat siang teman-teman, di post pertama di situs saya ini, saya akan membagikan tutorial cara konfigurasi shell zsh di Arch Linux dan mengaktifkan vi-mode.
Gunakan daftar isi diatas untuk memudahkan pencarian tutorial.
Instalasi shell zsh
Pertama pastikan list repo sudah diupdate ke yang terbaru, saya asumsikan pakai sudo untuk eskalasi perijinan super user / root.
$ sudo pacman -Syy
Jika sudah melakukan update repo, maka selanjutnya install zsh dari package manager:
$ sudo pacman -S zsh
Kemudian lakukan pengecekan dengan which & chsh:
$ which zsh
/usr/bin/zsh
$ chsh -l
/bin/sh
/bin/bash
/bin/zsh
/usr/bin/zsh
Jika muncul path /usr/bin/zsh berarti zsh sukses terinstall.
Setting default shell ke zsh
Lakukan perintah berikut untuk mengganti default shell ke zsh:
$ chsh -s /usr/bin/zsh
Lalu lakukan logout user atau reboot untuk menerapkan zsh:
$ logout
atau
$ sudo reboot
Jika sudah logout / reboot biasanya muncul wizard zsh teman-teman bisa skip wizardnya karena kita nanti kita akan konfigurasi sendiri, selanjutnya cek dengan perintah berikut untuk memastikan:
$ echo $0
/bin/zsh
Jika muncul path /bin/zsh berarti default shell sekarang sudah di set dengan zsh.
Membuat file konfigurasi zsh ~/.zshrc
Buat file history & alias:
% cd ~
% touch .histfile .aliases
Buka file ~/.zshrc dengan text editor favorit teman-teman.
Bisa dihapus semua line disana, sehingga isi file menjadi kosong.
Set history, bisa diubah ke 10000 misal:
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
Mengaktifkan dukungan 256color untuk terminal emulator:
export TERM="xterm-256color"
Set editor ke neovim, bisa ubah ke vim / pico / micro:
export VISUAL=nvim
export EDITOR="$VISUAL"
Set path environtment, untuk path env lain teman-teman bisa tambahkan sendiri:
PATH='/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin'
Set autoload file alias:
if [ -f ~/.aliases ]; then
. ~/.aliases
fi
Set shared history, jadi jika membuka terminal / terminal emulator lain maka ikut 1 history:
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
Set auto cd, bisa cd ke suatu dir tanpa menambahkan perintah “cd” diawal:
setopt AUTO_CD
# Contoh penggunaan:
# % /tmp
# tanpa
# % cd /tmp
Set alias agar tidak expand:
setopt COMPLETE_ALIASES
Mengaktifkan auto correct command & expand dir:
setopt CORRECT_ALL
# Contoh penggunaan, misal salah command, ingin run less keliru kess:
# % kess file.txt
# zsh: correct 'kess' to 'less' [nyae]?
#
# Maka otomatis keluar prompt auto correct, bisa tekan 'y' untuk setuju
#
# Contoh penggunaan auto expand dir:
# % cd /h/s/Dow
#
# Ketika menekan tombol 'Tab' pada keyboard, auto expand menjadi:
# % cd /home/selene/Downloads/
Mengaktifkan vi-mode, disini opsional, kecuali teman-teman sudah terbiasa menggunakan vi(m):
bindkey -v
# Jika vi-mode aktif, teman-teman bisa menggunakan
# keyboard shortcut vi seperti:
# 2cw
# 4b
# 0
# $
# 4l
# Bisa digunakan, asyik 'kan
Dengan mengaktifkan vi-mode, teman-teman juga bisa menggunakan CTRL+h sebagai ganti backspace, sehingga lebih praktis.
Set keyboard shortcut zsh:
# ctrl+e = masuk editor nvim untuk menulis command
# cocok untuk menulis command yg panjang
bindkey "^e" edit-command-line
# ctrl+p = scroll history keatas
bindkey "^p" up-history
# ctrl+n = scroll history kebawah
bindkey "^n" down-history
# ctrl+j = run command, di posisi cursor sekarang berada
# mirip tekan 'Enter'
bindkey "^[j" accept-line
# ctrl+w = hapus kata cursor sekarang berada
bindkey "^[w" backward-kill-word
# ctrl+r = pencarian history
bindkey "^[r" history-incremental-search-backward
# kj = escape / masuk normal mode
bindkey "kj" vi-cmd-mode
# Jika teman-teman ingin mapping sendiri, teman-teman bisa menggunakan
# perintah "% cat" lalu tekan keyboard / kombinasi keyboard
# & lihat output disana
# Hasil output bisa dituliskan ke file konfigurasi
#
# ctrl+p & ctrl+n mungkin akan jarang digunakan,
# karena kita bisa langsung masuk
# normal mode 'kj' & scroll history dengan tombol 'j' & 'k'
Menonaktifkan zsh ctrl+s, karena kita bisa menggunakan ctrl+s untuk neovim nantinya:
stty -ixon
Set zsh auto completion:
zstyle :compinstall filename '~/.zshrc'
autoload -Uz compinit && compinit -I
compinit
Mengaktifkan editor mode dengan ctrl+e:
autoload -z edit-command-line
zle -N edit-command-line
Set key timeout, agar keybind ‘kj’ tadi dapat bekerja:
export KEYTIMEOUT=25
Konfigurasi shell prompt zsh
Langkah terakhir untuk setting zsh sekarang adalah mengonfigurasi shell prompt.
Silahkan teman-teman pilih sendiri yang mana yang disuka:
PROMPT='%/ %# '
# /home/selene/Documents %
PROMPT='%~ %# '
# ~/Documents %
PROMPT='%1~ %# '
# Documents %
PROMPT='%2~ %# '
# ~/Documents %
PROMPT='[%t] %2~ %# '
# [ 3:30] ~/selene/Documents %
PROMPT='[%T] %2~ %# '
# [15:30] ~/selene/Documents %
Untuk kustomisasi lain lebih lengkapnya bisa lihat “% man zshmisc”.
Menambahkan plugin zsh-autosuggestions
Untuk menambahkan plugin zsh-autosuggestions, pertama kita harus membuat directory untuk menyimpan plugin tersebut.
Directory-nya bebas, bisa di ~/.zsh, ~/.git, terserah.
Untuk tutorial ini saya memakai ~/.zsh:
% cd ~
% mkdir .zsh
Clone repo zsh-autosuggestions ke dalam directory tadi:
% git clone https://github.com/zsh-users/zsh-autosuggestions .zsh/zsh-autosuggestions
Tambahkan konfigurasi berikut ke dalam ~/.zshrc:
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
# Bisa ditaruh dibawah PATH
# Dimanapun tapi diatas PROMPT
Sentuhan terakhir pada file konfigurasi ~/.zsh
Sekarang kita sudah bisa mengonfigurasi shell zsh di Arch Linux, selanjutnya tambahkan command berikut di bagian paling bawah file konfigurasi, setelah PROMPT:
clear
Fungsinya untuk wipe layar ketika kita melakukan source ke ~/.zshrc atau ketika meload file konfigurasi baru.
Konfigurasi file ~/.aliases
Konsep alias adalah kita bisa menyingkat command yg panjang menjadi singkat, sehingga menjadi praktis.
Alias ini sangat powerful, bisa menghemat waktu & mempermudah pekerjaan.
Sekarang kita edit file ~/.aliases, silahkan teman-teman buka dengan text editor favorit teman-teman.
Lalu tambahkan misal:
# git
alias giib='git branch'
alias giic='git commit'
alias giig='git log --all --decorate --oneline --graph'
alias giis='git status'
alias giil='git log'
alias giiw='git switch'
alias gicek='git checkout'
alias giip='git push origin'
alias giict='git config --global credential.helper "cache --timeout=3600"'
alias giicc='git config --global credential.helper cache'
# tmux
alias ta='tmux a -t'
alias ts='tmux new-session -t'
alias tl='tmux ls'
# directory
alias hh='cd ~/'
alias hd='cd ~/Documents'
alias hdw='cd ~/Downloads'
alias ll='ls -hal | less'
# zsh
alias cll='source ~/.zshrc'
alias editz='nvim ~/.zshrc'
Diatas sebagai contoh saja, teman-teman bisa menambahkan alias apapun sesuka hati.
Rekap konfigurasi zsh di Arch Linux
Kita sudah menginstall zsh.
Sudah mengonfigurasi zsh.
Sudah mengintegrasikan zsh dengan aliases dan zsh-autosuggestions.
Sudah mengaktifkan vi-mode di zsh.
Berikut rekap file konfigurasi ~/.zsh dari atas ke bawah:
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
export TERM="xterm-256color"
export VISUAL=nvim
export EDITOR="$VISUAL"
PATH='/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin'
if [ -f ~/.aliases ]; then
. ~/.aliases
fi
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt AUTO_CD
setopt COMPLETE_ALIASES
setopt CORRECT_ALL
bindkey -v
bindkey "^[e" edit-command-line
bindkey "^[p" up-history
bindkey "^[n" down-history
bindkey "^[j" accept-line
bindkey "^[w" backward-kill-word
bindkey "^[r" history-incremental-search-backward
bindkey "kj" vi-cmd-mode
stty -ixon
zstyle :compinstall filename '~/.zshrc'
autoload -Uz compinit && compinit -I
compinit
autoload -z edit-command-line
zle -N edit-command-line
export KEYTIMEOUT=25
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
PROMPT='%1~ %# '
clear
Penutup
Demikian cara konfigurasi zsh di Arch Linux dan mengaktifkan vi-mode, semoga isi post ini bisa bermanfaat buat teman-teman semua.