Zsh
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コマンド
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 | 右プロンプト |
| SPROMPT | correctで訂正の候補を出すときに表示されるプロンプトです |
| 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}%}'
色の文字か番号で色を指定できる。
| 番号 | 色 |
|---|---|
| 0 | black |
| 1 | red |
| 2 | green |
| 3 | yellow |
| 4 | blue |
| 5 | magenta |
| 6 | cyan |
| 7 | white |
参考:
色: 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%}'
- 上2つはどちらも同じ効果を表す
- エスケープシーケンスについては See シェル#ANSIエスケープシーケンス
参考:
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にも表れない。
参考:
- zsh/vcs_info-examples at master · zsh-users/zsh
- zshのターミナルにリポジトリの情報を表示してみる · けんごのお屋敷
- Show Git State in ZSH Prompt via vcs_info | Timothy Basanov
Feature
ZLE
Zshのコマンドライン編集機能。
たぶん、peco等でキーボードショートカットを作るときに使う人が多いのではないかな。
Examples:
# 編集を終了し、入力されたコマンドを実行する
zle accept-line
# 画面をクリアする
zle clear-screen
参考:
Tools
パッケージ管理ツールについては、シェル > パッケージ管理参照。
Packages / Plugins
- https://github.com/zsh-users/zsh-syntax-highlighting
- fish shellのようなシンタックスハイライトを提供してくれる
- See 2020-05-22#Ubuntu 18.04でzsh-syntax-highlightingを入れた
Child Pages
最終更新 2020-06-26: [zsh] About zshoptions(1) (e6b9e51cf)