Linux kabuğu (shell) olarak zsh'i denemek istedim. Fedora kullandığım makineye şu satırla kurulum yaptım:
$ sudo dnf install zsh util-linux-user
util-linux-user paketi, varsayılan kabuğu zsh olarak kullanmamızı sağlayacak chsh'e sahip. Bu arada şu anda kullanılan shell'i öğrenmek istersek
$ echo $0
veya
$ echo $SHELL
kullanılabilir. Şu aşamada açtığımız ilk terminal hala varsayılan kabuğu (çoğu durumda bash) kullanıyor olacaktır. zsh'e geçmek için ya terminalde zsh yazıp elle giriş yapmamız lazım, ya da terminal'i açar açmaz zsh'in gelmesi için chsh'i kullanmamız lazım:
$ chsh -s $(which zsh)
Bunu sudo/root ile çalıştırmaya falan gerek yok. Sadece kendi kabuğumuzu değiştiriyoruz. Dolayısıyla mevcut kullanıcının parolasını girmemizi isteyecek. Bundan sonra bir kez oturumu kapatıp tekrar açmak gerek.
chsh kullanmayan başka bir yöntem ise usermod'u kullanmak:
$ sudo usermod -s $(which zsh) $(whoami)
Bir sonraki oturum açılışında artık varsayılan kabuğumuz zsh olacak. İlk açılışta da bir yapılandırma ekranı bizi karşılayacak.
zsh, aynı bash gibi profilin altında .zshrc adındaki bir yapılandırma dosyasına ihtiyaç duyar. Bu ekran, bu yapılandırma dosyasının olmaması durumunda çıkıyor. zsh'i yanlışlıkla çalıştıranlar ve henüz bir .zshrc dosyası oluşturmadan çıkmak isteyenler için (q) seçeneği makul. Eğer boş bir yapılandırma dosyası oluşturup devam etmesini istiyorsak (0)ı, ya da tam gaz yapılandırmaya geçmek için (1)i seçmemiz gerek. Bu durumda sıradaki ekranımız şöyle olacak:
Ben bu ekranda (1) ile komut geçmişi, (2) ile komut tamamlama sistemi, (3) ile tuşların işlervlerini yapılandırabilir ve (4)e basarak diğer bazı ayarları (1), (2), (3) ve (5)'i (s)ye basarak ayarlıyorum. Her ekrandan da (0)a basarak ayarlarımı hatırlamasını ve nihayetinde yukarıdaki ekrana döndüğümde de (0) seçeneği için açıklama "boş bir .zshrc dosyası oluşturup çıkmak" yerine "ayarları kaydederek çık"a dönüştüğünde bu seçenek ile ayarları kaydedip çıkmayı seçiyorum.
İşler bittiğinde yukarıdaki gibi bir ekran ile karşılaşıyorum. Aslında prompt'ta sadece değişen $ karakterinin yerine % karakterinin gelmiş olmasının dışında bir fark gözükmüyor.
Bu arada yukarıda yazan birkaç açıklamaya vurgu yapalım; bu çalışan karşılama ekranını tekrar çalıştırmak için
$ autoload -Uz zsh-newuser-install
$ zsh-newuser-install -f
yazabiliriz. Ayrıca .zshrc yapılandırma dosyasında
# Lines configured by zsh-newuser-install
# End of lines configured by zsh-newuser-install
satırları arasına müdahale etmememiz, yapaacğımız değişiklikleri bu satırlar dışına eklememiz önerilmiş.
Bu noktada sade bir zsh'ımız oldu. Hiçbir ek bileşene ihtiyaç duymadan prompt'umuzu özelleştirmek mümkün. Ev klasörümüzde yer alan .zshrc dosyasını açık için şu satırları yazalım:
autoload -Uz promptinit promptinit prompt bart
Autoload, zsh ile gelen bir betik çalıştırıcı. Bu satırlarda prompt'umuz için mevcut temalardan bart'ı seçmiş olduk. Tüm temaları görmek için
$ prompt -l
(her promptun örneğini görmek için -p de olur) veya mevcut temayı görmek için
$ prompt -c
kullanabiliriz. Karşılaştığım sorunlardan biri ctrl+ok tuşlarının kelime atlama yapmaması. ctrl+ok tuşları ile bir önceki kelime başına veya bir sonraki kelime başına atlamak istersem terminale ";5D" ve ";5C" yazılıyor. Bunu düzeltmek için .zshrc dosyasına aşağıdaki satırları ekleyerek çözebildim:
bindkey ";5D" backward-wordbindkey ";5C" forward-word
bindkey "^W" backward-delete-word
Benzer şekilde Home tuşuyla satırın başına, End tuşuyla sonuna gitmek ve Del tuşu ile silebilmek için
bindkey "^[[H" beginning-of-linebindkey "^[[F" end-of-line
bindkey "^[[3~" delete-char
Son satır Ctrl+w kısayolu ile önceki sola doğru bir kelime silmek için. İstenen karakterin kodunu bulmak için
$ cat -v
kullanılabilir.
Biraz daha renklendirmek için oh-my-zsh kurmayı tercih ediyorum. curl kullanarak
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
ya da git clone ile
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
ilgili dosyaları aldıktan sonra profil klasörümüzün altında .oh-my-zsh gizli klasörü oluşacak. oh-my-zsh bize hazır bazı temalar getirecek. Curl yöntemini seçtiysek .zshrc dosyasına varsayılan tema da girilmiş olacak. git clone yaptıysak bu işi el ile yapmamız gerekecek. Mevcut temalara göz atmak için projenin github sayfasına bakabiliriz. Bir tema seçtikten sonra .zshrc dosyasına
ZSH_THEME="duellj"
gibi bir tema adı yazmak, temamızı her açtığımızda rastgele değişecek şekilde belirlemek için
ZSH_THEME="random"
ya da belli birkaç temanın içinden rastgele seçmek için
ZSH_THEME_RANDOM_CANDIDATES=( "duellj" "agnoster" )
yapılabiliyor.
zsh'i güzel yapan şeylerden biri de eklentileri. Çok kullanılan 2 güzel eklenti Fedora'nın depolarında mevcut. Kurmak için
$ sudo dnf install zsh-autosuggestions zsh-syntax-highlighting
yazmak yeterli. Kurulum sonrası bu iki eklentiyi yapılandırmamıza dahil etmek için yine .zshrc dosyasını açıp son satıra şu satırları eklemek gerek:
# plugins
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Bu eklentilere ek olarak zsh-Z, fsf de kullanılabilir. Bu şekilde source komutu ile eklentileri .zshrc'ye dahil etmek, oh-my-zsh öncesi yöntem. oh-my-zsh kullanırken daha kolay bir yöntem var; eklentilerin ~/.oh-my-zsh/plugins klasörünün altına yerleştirildiğini varsayarsak bu plugin'lerin isimlerini plugins=(...) satırında parantes içine boşlukla ayrılmış dizi şeklinde yazabiliriz. Örneğin zsh-autosuggestions'ın nereye kurulduğuna bakmak için
$ rpm -ql zsh-autosuggestions
yazdığımda /usr/share/zsh-autosuggestions klasörne kurulduğunu gördüm. Şunun gibi yaparak bu plugin'i oh-my-zsh'in plugin klasörüne kopyalayabiliriz:
$ cp /usr/share/zsh-autosuggestions ~/.oh-my-zsh/plugins -r
Bu noktadan sonra şu mümkün:
plugins=(zsh-autosuggestions)
Oh-my-zsh ile gelen plugin'ler de faydalı olabilir. Herhangi bir plugin'i etkinleştirmek için .zshrc dosyasına
plugins=(rails git ruby)gibi isimlerini yazmak gerek.
oh-my-zsh ile birlikte gelen temaları terminalden görmek istersek (2023-04-07)
$ omz theme list
ve hatta bu temalardan birini kullanmaya başlamak için ise
$ omz theme set duellj
yazılabilir. Ayrıca plugin'leri etkinleştirmek için de
$ omz plugin enable
Bu komutlar sadece mevcut oturumda prompt'u değiştirmekle kalmaz, .zshrc dosyasında da gerekli değişiklikleri yaparak sonraki oturumlarda da geçerli olmasını sağlar.
Görselliğe seviye atlatacak powerlevel10k temasını yüklemek için ise
$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
$ echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
yazabiliriz. En son satırdaki echo ile source'u .zshrc'ye ilave etmek yerine aşağıdakini de yapabiliriz
ZSH_THEME="powerlevel10k/powerlevel10k"
Niye 2 kere powerlevel10k yazdık? Çünkü profil klasörümüzün içinde powerline10k klasörünün içindeki powerlevel10k dosyasını göstermeye çalışıyoruz.
Powerlevel10k'in github sayfasında özel bir fonta ihtiyaç duymadığı, ama ek karakterlere sahip bir font ailesinin avantajlarını kullanabileceği yazılmış. Dolayısıyla şu fontlardan birini kullanmak isteyebiliriz:
Powerlevel10k'yı etkinleştirdikten sonraki ilk açılışta aşağıdaki gibi bir ekran ile karşılaşacağız.
Görülebileceği gibi seçili fontlar ile bazı karakterleri göstermeyi deniyor ve bunların uygun şekilde gözüküp gözükmediği konusunda kullanıcıdan bir geri dönüş bekliyor. Diamond için hadi neyse, ama bir sonraki ekrandaki asma kilit sembolü için Fedora'nın varsayılan sabit genişlikli fontu monospace yeterli olmadı. Şu sayfada anlatıldığı gibi powerlevel10k-media reposundaki fontları indirdim.
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
$ wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf
Kurmak için Gnome fonts uygulaması ile açtıktan sonra sağ üst köşedeki Kur düğmesine bastım. Kurultuktan sonra bu düğme pasif hale geldi.
powerlevel10k'i tekrar yapılandırmak istersek
$ p10k configure
çalıştırmak gerek.
---
https://github.com/rothgar/mastering-zsh/blob/master/docs/config/general.md
https://dev.to/voracious/a-guide-to-customizing-the-zsh-shell-prompt-2an6
Hiç yorum yok:
Yorum Gönder