zsh

Kompatibler Ersatz zur bash – nur viele Details besser. z.B.

  • Angenehmeres Verhalten beim Rückwärts-Suchen mit ctrl-R.
  • Übersichtlichere und hübschere Tab-Completion
  • git-Unterstützung:
    • Completion (kennt git-Kommandos und -Logik).
    • Der Prompt zeigt schon die wesentlichen Infos von git status an, sobald man in einem git-Verzeichnis ist. Sehr super!
  • history sharing (muss man erst aktivieren – s.u.).

  • Viele Plugins (eine nicht ganz vollständige Plugin-Übersicht), die zsh noch weiter verbessern.

    • z.B. habe ich das docker-Plugin ausprobiert.
    • Und das docker-compose-Plugin.
    • …sehr cool beide. Tab schlägt einem dann immer die entsprechenden Sub-Commands und Optionen vor.
    • Folgende Plugins laufen bei mir jetzt, in dem ich sie einfach mit vi ~/.zshrc aktiviert habe:

      plugins=(git docker docker-compose git-remote-branch gitignore jira ubuntu vagrant ).

  • Sowie Themes für die Optik und Prompt. Ich habe mir nur den Prompt um den kompletten Pfad erweitert (s.u.):

    zsh git prompt

Links

Oh my zsh: Konfiguration von zsh.
Why zsh is cooler: Slides.

Mein Prompt mit vollständigem Verzeichnis:

  • Basierend auf dem Theme robbyrussell:
    cp ~/.oh-my-zsh/themes/robbyrussell.zsh-theme ~/.oh-my-zsh/themes/dstk.zsh-theme
  • Anpassen:
function collapse_pwd {
    echo $(pwd | sed -e "s,^$HOME,~,")
}

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT='${ret_status} %{$fg[cyan]%}$(collapse_pwd)%{$reset_color%} $(git_prompt_info)'

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
  • Aktivieren: vi ~/.zshrc
    ZSH_THEME="dstk"
    

share history between terminals in zsh

siehe How do you share history between terminals in zsh?:

vi ~/.zshrc:

setopt inc_append_history
setopt share_history

2 thoughts on “zsh

  1. Um das “alte” Profile .profile auch von zsh immer mit einzulesen kann man das in ~/.zshrc schreiben:

    emulate sh
    . ~/.profile
    emulate zsh
    

    (siehe hier)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.