Zsh

http://www.zsh.org/

Documentation

Source Code

Syntax

配列

Bashと違って、配列の添字が 1 から始まることに注意が必要。

a=(x y z)
echo $a[1] #=> x
echo $a[2] #=> y

参考:

Configuration

# history -i でコマンドの実行時間表示
setopt extended_history

参考:

Options

http://zsh.sourceforge.net/Doc/Release/Options.html

setopt, unsetopt はPOSIXの set +/-o の代わりにzshoptionsの設定に用いることができる。 set +/-o も使えるみたい。

Examples:

setopt shwordsplit # 他のシェルと文字列変数の分割方法を揃える
setopt ksharrays   # 配列の添字を0から始める

参考:

emulate

他のシェルと互換性のあるモード。色んなオプションがセットされる。

emulate -R sh  # POSIX shに近いモード
emulate -R ksh # ksh (bash) に近いモード

参考:

helpコマンド

Zsh - ArchWiki#ヘルプコマンドより。

Bashとは違って、Zshは組み込まれている help コマンドを有効にしていません。Zshでhelpを使うには、以下をzshrcに追加してください:

autoload -U run-help
autoload run-help-git
autoload run-help-svn
autoload run-help-svk
unalias run-help
alias help=run-help

プロンプト

参考:

プロンプトの種類

プロンプト説明
PROMPT左プロンプト
RPROMPT右プロンプト
SPROMPTcorrectで訂正の候補を出すときに表示されるプロンプトです
PROMPT2, RPOMPT2コマンドが複数行になった時に表示されるプロンプトです
PROMPT3?
PROMPT4?

特殊文字

文字出力内容
%nユーザー名root
%#ユーザー種別#(rootのとき)
%(root以外)
%mホスト名localhost
%d, %/カレントディレクトリ/home/me/dir
%~カレントディレクトリ~/dir
%Cカレントディレクトリdir
%T時間 (HH:MM)
%*時間 (HH:MM:SS)
%D日付 (YY-MM-DD)

こんな感じで色を付けられれる。

# ①依存なし
PROMPT='%F{cyan} $n %f'

# ②colorsを使う
autoload -Uz colors
colors

PROMPT='%{${fg[cyan]}%} $n %{${reset_color}%}'

色の文字か番号で色を指定できる。

番号
0black
1red
2green
3yellow
4blue
5magenta
6cyan
7white

参考:

色: 256色対応

Examples:

# Zshパラメータ利用
# - %F{文字色番号}
# - %K{背景色番号}
# - %f ... 文字色リセット
# - %k ... 背景色リセット
PROMPT="%K{082}%F{001}[%n@%m]%f%k"

# エスケープシーケンス利用
PROMPT=$'%{\e[30;48;5;082m%}%{\e[38;5;001m%}[%n@%m]%{\e[0m%}'

参考:

MEMO:

  • (2020-05-19)上のZshパラメータを使う方法がUbuntu 18.04デスクトップ環境 + 端末アプリだと上手く行ってない
  • (2020-05-24)macOS + iTerm2なら上手く行った^

複数行対応

左側のPROMPTなら改行文字を入れればいいが、 precmd() でプリントするという手もある。
print -P オプションを付けると、PROMPTのフォーマットで出力できるみたい。

参考:

vcs_info

メモ:

  • check-for-changes をtrueにしても、まだgitの管理下にない新規ファイルがあるだけだと stagedstr にも unstagedstr にも表れない。

参考:

Feature

ZLE

Zsh Line Editor.

Zshのコマンドライン編集機能。

たぶん、peco等でキーボードショートカットを作るときに使う人が多いのではないかな。

Examples:

# 編集を終了し、入力されたコマンドを実行する
zle accept-line
# 画面をクリアする
zle clear-screen

参考:

Tools

パッケージ管理ツールについては、シェル > パッケージ管理参照。

Packages / Plugins

Child Pages

最終更新 2020-06-26: [zsh] About zshoptions(1) (e6b9e51cf)