My .zshrc¶
Spätestens wenn ich in meinen Seminaren auch einmal meine eigenen Konsolen nutze, dann stellen die Trainees fragen nach meiner Zsh-Konfiguration.
Dem will ich mit diesem Kapitel Rechnung tragen. Allerdings sind die dargestellten Tools natürlich auch meine persönlichen Favoriten und manchmal ändern sich die Tools auch über die Zeit - sind ja auch schließlich meine Tools und Konfigurationen.
Für diese Konfiguration sollten folgende Vorbereitungen / Installationen erfolgt sein.
Erforderlich:
Zsh - die Z-Shell
Installation aus den Standard-Repositories möglich
Antigen - Zsh-Plugin Managers
curl -L git.io/antigen > antigen.zsh
fzf und ripgrep
Installationen aus den meisten Standard-Repositories möglich
Beachten: Ordner für benötigte
key-bindings.zsh
undcompletion.zsh
Ganz ehrlich: wenn man mal mit fzf / ripgrep angefangen hat, dann will man diese Tools wirklich nicht mehr missen.
Das führt zu folgender .zshrc-antigen-minimal
Version:
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# ANTIGEN Solution for Plugins:
# =============================================================================
# https://github.com/zsh-users/antigen
# https://github.com/zsh-users/antigen/wiki/Quick-start
# curl -L git.io/antigen > antigen.zsh
# or use git.io/antigen-nightly for the latest version
source $HOME/antigen.zsh
# antigen commands: antigen help
# =============================================================================
#
antigen use oh-my-zsh
# plugins in: ~/.antigen/bundles/robbyrussel/oh-my-zsh/...
antigen bundle git
antigen bundle colorize
antigen bundle colored-man-pages
antigen bundle alias-finder
# plugins in: ~/.antigen/bundles/zsh-users/...
antigen bundle zsh-users/zsh-completions
antigen bundle z
antigen bundle zsh-users/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-autosuggestions
# antigen theme robbyrussell
# look ~/.antigen/bundles/romkatv/...
antigen theme romkatv/powerlevel10k
# apply bundles
antigen apply
# =============================================================================
# use completions:
# =============================================================================
autoload -U compinit && compinit
# FZF - RIPGREP
# =============================================================================
# https://github.com/junegunn/fzf
# fzf environment and exports:
#
. /usr/share/doc/fzf/examples/key-bindings.zsh
. /usr/share/doc/fzf/examples/completion.zsh
export FZF_DEFAULT_OPTS='--height 40% --border'
# use ripgrep with FZF instead of find
# export FZF_DEFAULT_COMMAND='find ~ -name .git -prune -o -name tmp -prune -o -type f,d -print'
export FZF_DEFAULT_COMMAND='rg --files --hidden -g !.git/'
# more commands:
export FZF_ALT_C_COMMAND='find .'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
# configuration for ripgrep
# export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc"
# =============================================================================
# ZSH-Plugin COLORIZE - see Chapter with antigen above
# =============================================================================
# provides tools colorize_cat (alias ccat)
# and colorize_less (cless):
#
if [ -n "$(command -v colorize_cat)" ] && [ -n "$(command -v colorize_less)" ]; then
alias cat='colorize_cat'
alias less='colorize_less'
fi
# EXPORTS
# put my Exports here - later in extra file?
# =============================================================================
#
# ZSH Colorize Style
export ZSH_COLORIZE_STYLE="native"
# alternative Editor
export MICRO_TRUECOLOR=1
# fixing Exports for RANGER standard Editor vim
export VISUAL=vim
#To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
Und an dieser Stelle auch mal ein Link zu einer Version, die online über ein öffentliches Gitlab-Repo gepflegt wird.
Tipp
Link zu Gitlab-Projekt mit Dateien für Linux-Seminar-Teilnehmer:
Die folgenden Tools dann nach eigenem Wunsch und in meiner Config auch nur für die Aliase von Bedeutung, die in den meisten Fällen über if gecheckt und dann erzeugt werden.
Und natürlich haben manche Tools auch noch eigene Konfigurationsdateien mit denen man die Nutzung und das Erscheinungsbild anpassen kann.
lf - eine Alternative zum Ranger
Download von lf Releases für Ordner
~/opt
Anm.: Release packe ich gerne in
~/opt/lf...
und linke dann in~/bin/
exa - moderne Alternative zu ls
Download für exa Releases für Ordner
opt
colorls - ein Ruby Script für das Einfärben von ls
Anleitung der Installation: gem install colorls
Anm.: die Ruby-Development Pakete müssen installiert sein!
makepasswd - generieren von Passworten
Installation aus den meisten Standard-Repositories möglich
mogrify - aus Graphiktools imagemagick
Installation imagemagick aus den meisten Standard-Repositories möglich
yad - Tool für graphische Dialoge
Installation aus den meisten Standard-Repositories möglich
vifm - und noch eine Rangervariante und hier extrem spartanisch
Installation aus den meisten Standard-Repositories möglich
Für eine saubere Verwaltung der eigenen Tools und Konfigurationen sollte man dann wirklich mal zu Git greifen und sich die Umgebungen für schnelle Clones bereithalten.
Am Meisten lernt man natürlich, wenn man sich die Zsh-Umgebung von der Pike an selbst auf- und zusammenbaut.
Tipp
Link zu Gitlab-Projekt mit Dateien für Linux-Seminar-Teilnehmer:
Alles - wie immer - ohne Gewähr und hoffentlich mit viel Spaß beim Anwenden.