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 und completion.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:

Beispiel für .zshrc Antigen Minimal Konfigurationsdatei

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:

Beispiel für .zshrc Antigen Konfigurationsdatei

Alles - wie immer - ohne Gewähr und hoffentlich mit viel Spaß beim Anwenden.