「Zsh」の版間の差分
Mizunashi mana (トーク | 投稿記録) 細 (→$PATH の設定) |
(→プラグインマネージャー: zrを追加) |
||
(4人の利用者による、間の31版が非表示) | |||
7行目: | 7行目: | ||
[[ru:Zsh]] |
[[ru:Zsh]] |
||
[[zh-hans:Zsh]] |
[[zh-hans:Zsh]] |
||
− | [http://www.zsh.org Zsh] は対話式シェルとしてもスクリプト言語のインタプリタとしても使えるパワフルなシェルです。 |
+ | [http://www.zsh.org Zsh] は対話式シェルとしてもスクリプト言語のインタプリタとしても使えるパワフルな[[コマンドシェル|シェル]]です。POSIX sh と互換性がありながら (デフォルトではありません、{{ic|emulate sh}} を実行した時だけです)、[http://zsh.sourceforge.net/Guide/zshguide06.html タブ補完]の改善や [http://zsh.sourceforge.net/Doc/Release/Expansion.html グロビング]などの利点があります。 |
+ | [http://zsh.sourceforge.net/FAQ/zshfaq01.html#l4 Zsh FAQ] には他にも Zsh をあなたのシェルとして使うべき理由が列挙されています。 |
||
− | * 高速 |
||
− | * 高度なタブ補完 |
||
− | * 高度なグロブ |
||
− | * 高度な行列処理 |
||
− | * 完全にカスタマイズ可能 |
||
− | |||
− | Zsh FAQ には他にも Zsh をあなたのシェルとして使うべき [http://zsh.sourceforge.net/FAQ/zshfaq01.html#l4 理由] が列挙されています。 |
||
== インストール == |
== インストール == |
||
31行目: | 25行目: | ||
$ zsh |
$ zsh |
||
− | 基本的な設定を説明する '''zsh-newuser-install''' が表示されるはずです。これをスキップしたい場合、{{ic|q}} を押して下さい。手動で呼び出す |
+ | 基本的な設定を説明する '''zsh-newuser-install''' が表示されるはずです。これをスキップしたい場合、{{ic|q}} を押して下さい。表示されない場合は、次のコマンドで手動で呼び出すことができます: |
− | $ |
+ | $ autoload -Uz zsh-newuser-install |
+ | $ zsh-newuser-install -f |
||
+ | |||
+ | {{Note|仮想端末のサイズが少なくとも 72×15 であることを確認してください。そうでないと ''zsh-newuser-install'' は実行されません。}} |
||
=== Zsh をデフォルトのシェルにする === |
=== Zsh をデフォルトのシェルにする === |
||
51行目: | 48行目: | ||
{{Tip|{{Pkg|bash}} を置き換える場合、{{ic|~/.bashrc}} から {{ic|~/.zshrc}} に (例: プロンプトと[[Bash#エイリアス|エイリアス]]) また {{ic|~/.bash_profile}} から {{ic|~/.zprofile}} に (例: [[ログイン時に X を起動|X Window System を起動するコード]]) にコードを移動するとよいでしょう。}} |
{{Tip|{{Pkg|bash}} を置き換える場合、{{ic|~/.bashrc}} から {{ic|~/.zshrc}} に (例: プロンプトと[[Bash#エイリアス|エイリアス]]) また {{ic|~/.bash_profile}} から {{ic|~/.zprofile}} に (例: [[ログイン時に X を起動|X Window System を起動するコード]]) にコードを移動するとよいでしょう。}} |
||
− | == |
+ | == スタートアップ/シャットダウン ファイル == |
+ | |||
+ | {{Tip| |
||
+ | * インタラクティブシェルとログインシェルの説明、およびスタートアップファイルに何を入れるかについては、[http://zsh.sourceforge.net/Guide/zshguide02.html A User's Guide to the Z-Shell] を参照してください。 |
||
+ | * Zsh 構成ファイルには [https://wiki.archlinux.jp/index.php/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%B7%E3%82%A7%E3%83%AB#.E6.A8.99.E6.BA.96.E5.8C.96 標準パスの実装] を検討できます。}} |
||
+ | |||
+ | {{Note| |
||
+ | *{{ic|$ZDOTDIR}} が設定されていない場合は、代わりに {{ic|$HOME}} が使用されます。 |
||
+ | *オプション {{ic|RCS}} がいずれかのファイルで設定されていない場合、そのファイルの後に構成ファイルは読み取りません。 |
||
+ | *オプション {{ic |
||
+ | |GLOBAL_RCS}} がいずれかのファイルで設定されていない場合、そのファイルの後にグローバル構成ファイル({{ic|/etc/zsh/*}})は読み取りません。 |
||
+ | }} |
||
ログイン時、Zsh は以下のファイルをこの順番で読み込みます: |
ログイン時、Zsh は以下のファイルをこの順番で読み込みます: |
||
102行目: | 110行目: | ||
=== $PATH の設定 === |
=== $PATH の設定 === |
||
− | 通常 |
+ | 通常、PATH は {{ic|~/.zshenv}} で設定すべきですが、Arch Linux は {{ic|~/.zshenv}} を読み込んだ後に {{ic|/etc/profile}} を読み込みます (全体の流れは[[#設定ファイル|設定ファイル]]を見てください)。 |
− | {{ic|$PATH}}の上書きを防ぐに |
+ | {{ic|$PATH}} の上書きを防ぐために、{{ic|~/.zprofile}} で設定するようにしてください: |
{{hc|1=~/.zprofile|2= |
{{hc|1=~/.zprofile|2= |
||
110行目: | 118行目: | ||
path=(~/bin /other/things/in/path $path[@])}} |
path=(~/bin /other/things/in/path $path[@])}} |
||
− | [http://zsh.sourceforge.net/Guide/zshguide02.html#l24 |
+ | 詳しくは [http://zsh.sourceforge.net/Guide/zshguide02.html#l24 Z-Shell のユーザーガイド] を参照してください。 |
=== コマンド補完 === |
=== コマンド補完 === |
||
135行目: | 143行目: | ||
{{hc|~/.zshrc| |
{{hc|~/.zshrc| |
||
setopt completealiases}} |
setopt completealiases}} |
||
− | |||
− | === "command not found" フック === |
||
− | |||
− | [[Pkgfile#.22Command_not_found.22_フック|Pkgfile/"Command not found" フック]] を見て下さい。 |
||
− | |||
− | === 履歴に同じ行が重複するのを避ける === |
||
− | |||
− | 履歴の重複する行を無視するには、以下を追加して下さい: |
||
− | {{hc|~/.zshrc| |
||
− | setopt HIST_IGNORE_DUPS}} |
||
− | |||
− | 既に作成された重複を履歴から取り除くには、次を実行: |
||
− | $ sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history |
||
− | |||
− | === ttyctl コマンド === |
||
− | |||
− | [http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#index-tty_002c-freezing] には Zsh の {{ic|ttyctl}} コマンドの説明があります。{{ic|ttyctl}} を使うことでターミナルを "freeze/unfreeze" することができます。ターミナルの状態を変更するプログラムは多数存在しますが、終了時にターミナルの設定を元に戻さないことがあります。手動でターミナルをリセットしなくてもいいようにするには、以下を使います: |
||
− | |||
− | {{hc|~/.zshrc| |
||
− | ttyctl -f}} |
||
=== キーバインド === |
=== キーバインド === |
||
205行目: | 193行目: | ||
}} |
}} |
||
+ | {{Note|特定のキーの組み合わせに対して適切なシーケンスを取得するには、 {{ic|cat}} を起動するか、パラメーターなしで {{ic|read}} を押します。 その後、端末に印刷する必要があります。 {{ic|Ctrl+c}} を使用して両方を再び閉じることができます。}} |
||
− | {{Note|To get the proper sequences for certain key combinations, start {{ic|cat}} or {{ic|read}} without any parameters and press them; they should then be printed in the terminal. Both can be closed again via {{ic|Ctrl+c}}.}} |
||
− | ==== |
+ | ==== 履歴検索 ==== |
+ | {{ic|key}} 配列を設定し、ZLEがアプリケーションモードになっている事を確認して、以下の手順を使用してください。[[#キーバインド]] を参照してください。 |
||
− | {{ic|autoload zkbd}} を実行してから {{ic|zkbd}} を実行して下さい。キーを押せない場合は (例: {{ic|F11}} はウィンドウを最大化します)、スペースを押してスキップして下さい。zkbd が完了した後、以下を {{ic|~/.zshrc}} に追加して下さい: |
||
+ | 履歴検索を有効にするには、以下の行を {{ic|.zshrc}} ファイルに追加します: |
||
− | {{hc|~/.zshrc|autoload zkbd |
||
− | source ~/.zkbd/$TERM-:0.0 # may be different - check where zkbd saved yours |
||
+ | {{hc|~/.zshrc| |
||
− | [[ -n ${key[Backspace]} ]] && bindkey "${key[Backspace]}" backward-delete-char |
||
+ | autoload -Uz up-line-or-beginning-search down-line-or-beginning-search |
||
− | [[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode |
||
+ | zle -N up-line-or-beginning-search |
||
− | [[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line |
||
+ | zle -N down-line-or-beginning-search |
||
− | [[ -n ${key[PageUp]} ]] && bindkey "${key[PageUp]}" up-line-or-history |
||
+ | |||
− | [[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char |
||
− | [[ -n ${key[ |
+ | [[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search |
− | [[ -n ${key[ |
+ | [[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search |
− | [[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-search |
||
− | [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char |
||
− | [[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-search |
||
− | [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char |
||
}} |
}} |
||
+ | これにより、{{ic|up}} または {{ic|down}} キーを押すと、現在の行から現在のカーソル位置までに一致する過去のコマンドのみが表示されます。 |
||
− | ==== ncurses アプリケーションのキーバインド ==== |
||
+ | |||
+ | ==== Shift, Alt, Ctrl and Meta modifiers ==== |
||
+ | |||
+ | xterm-compatible terminals can use extended key-definitions from {{man|5|user_caps}}. Those are combinations of {{ic|Shift}}, {{ic|Alt}}, {{ic|Ctrl}} and {{ic|Meta}} together with {{ic|Up}}, {{ic|Down}}, {{ic|Left}}, {{ic|Right}}, {{ic|PageUp}}, {{ic|PageDown}}, {{ic|Home}}, {{ic|End}} or {{ic|Del}}. |
||
+ | |||
+ | For example, for {{ic|Ctrl+Left}} to move to the beginning of the previous word and {{ic|Ctrl+Right}} to move to the beginning of the next word: |
||
− | ncurses アプリケーションをキーストロークにバインドすることが可能ですが、対話はできません。{{ic|BUFFER}} 変数を使って動作させて下さい。以下の例は {{ic|Alt+\}} で ncmpcpp を開きます: |
||
{{hc|~/.zshrc|2= |
{{hc|~/.zshrc|2= |
||
+ | key[Control-Left]="${terminfo[kLFT5]}" |
||
− | ncmpcppShow() { BUFFER="ncmpcpp"; zle accept-line; } |
||
+ | key[Control-Right]="${terminfo[kRIT5]}" |
||
− | zle -N ncmpcppShow |
||
+ | |||
− | bindkey '^[\' ncmpcppShow |
||
+ | [[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word |
||
+ | [[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word |
||
}} |
}} |
||
− | === |
+ | === プロンプト === |
+ | Zsh offers the options of using a prompt theme or, for users who are dissatisfied with the themes (or want to expand their usefulness), the possibility to build a custom prompt. |
||
− | 以下の行を .zshrc に追加して下さい: |
||
+ | ==== Prompt themes ==== |
||
− | {{hc|~/.zshrc|<nowiki> |
||
− | [[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" history-beginning-search-backward |
||
− | [[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" history-beginning-search-forward |
||
− | </nowiki>}} |
||
+ | プロンプトテーマは、Zshで色付きのプロンプトを設定するためのすばやく簡単な方法です。それらの詳細については、{{man|1|zshcontrib|PROMPT THEMES}} を参照してください。 |
||
− | これを設定すると、現在の入力で始まる過去のコマンドだけが表示されるようになります。 |
||
+ | テーマを使用するには、プロンプトテーマシステムが、{{ic|.zshrc}} に自動でロードされるよう設定されていることを確認してください。自動ロードを行うには、以下の行を追加します。 |
||
− | === プロンプト === |
||
− | |||
− | Zsh には手軽にカラープロンプトを設定する方法があります。{{ic|.zshrc}} でプロンプトが自動ロードされるように設定してください。以下の行を追加することで自動ロードされます: |
||
{{hc|~/.zshrc| |
{{hc|~/.zshrc| |
||
− | autoload - |
+ | autoload -Uz promptinit |
promptinit |
promptinit |
||
}} |
}} |
||
− | 次のコマンドを実行することで利用可能なプロンプトを見ることができます: |
+ | 次のコマンドを実行することで利用可能なプロンプトを見ることができます: |
+ | |||
− | |||
$ prompt -l |
$ prompt -l |
||
− | + | 例えば、walters プロンプトを使うには、次のように入力します: |
|
$ prompt walters |
$ prompt walters |
||
− | 全ての利用可能なテーマをプレビューするには次のコマンドを使って下さい: |
+ | 全ての利用可能なテーマをプレビューするには次のコマンドを使って下さい: |
$ prompt -p |
$ prompt -p |
||
− | === プロンプト |
+ | ===== プロンプトテーマの手動インストール ===== |
+ | 外部の設定管理ツールを使わずに、テーマを手動でインストールすることもできます。ローカルインストールの場合、最初にフォルダを使用し、それを {{ic|fpath}} 配列に通過します。例: |
||
− | 上述のプロンプトに満足がいかない(もしくはプロンプトを拡張したい)場合、Zsh にはカスタムプロンプトを作る機能が備わっています。全てのシェルに共通な左側だけのプロンプトに加え、Zsh は左右両側を使うプロンプトをサポートしています。{{ic|1=PROMPT=}} と以下の変数を使うことでプロンプトをカスタマイズできます: |
||
+ | $ mkdir ~/.zprompts |
||
− | ==== プロンプト変数 ==== |
||
+ | $ fpath=("$HOME/.zprompts" "$fpath[@]") |
||
+ | |||
+ | 次に、このフォルダにテーマファイルのシンボリックリンクを作成します: |
||
+ | |||
+ | $ ln -s mytheme.zsh ~/.zprompts/prompt_mytheme_setup |
||
+ | |||
+ | 代わりに、テーマをグローバルにインストールする場合は、次のようにします: |
||
+ | |||
+ | # ln -s mytheme.zsh /usr/share/zsh/functions/Prompts/prompt_mytheme_setup |
||
+ | |||
+ | これで、次のコマンドを使ってアクティブ化できるはずです: |
||
+ | |||
+ | $ prompt mytheme |
||
+ | |||
+ | すべてが機能する場合は、{{ic|.zshrc}} をそれに応じて編集することができます。 |
||
+ | |||
+ | ==== プロンプトのカスタマイズ ==== |
||
+ | |||
+ | 上述のプロンプトに満足がいかない(もしくはプロンプトを拡張したい)場合、Zsh にはカスタムプロンプトを作る機能が備わっています。全てのシェルに共通な左側だけのプロンプトに加え、Zsh は左右両側を使うプロンプトをサポートしています。{{ic|1=PROMPT=}} と以下の変数を使うことでプロンプトをカスタマイズできます: |
||
+ | |||
+ | ===== プロンプト変数 ===== |
||
{| class="wikitable" |
{| class="wikitable" |
||
341行目: | 347行目: | ||
{{Note|太字の文字色は通常の文字色と必ずしも同じ色になるわけではありません。例えば、{{ic|$fg['yellow']}} は褐色や濃黄のようになりますが、{{ic|$fg_bold['yellow']}} はやや明るい普通の黄色のようになります。}} |
{{Note|太字の文字色は通常の文字色と必ずしも同じ色になるわけではありません。例えば、{{ic|$fg['yellow']}} は褐色や濃黄のようになりますが、{{ic|$fg_bold['yellow']}} はやや明るい普通の黄色のようになります。}} |
||
− | ==== サンプル ==== |
+ | ===== サンプル ===== |
以下のようにすることで左右両側にプロンプトを表示できます: |
以下のようにすることで左右両側にプロンプトを表示できます: |
||
349行目: | 355行目: | ||
次のようになります (色は省略): |
次のようになります (色は省略): |
||
username@host ~ % [0] |
username@host ~ % [0] |
||
+ | |||
+ | === サンプル .zshrc ファイル === |
||
+ | |||
+ | 以下は {{ic|.zshrc}} ファイルのリストです。自由に自分のファイルを追加してください: |
||
+ | |||
+ | * 公式リポジトリにある {{Pkg|grml-zsh-config}} パッケージは http://grml.org/zsh から取られて来たもので Zshell の多数の調整が含まれた zshrc ファイルが入っています。これは[https://www.archlinux.org/download/ 毎月リリースされている ISO] のデフォルト設定です。 |
||
+ | * 動的なプロンプトとウィンドウタイトル、hardinfo を使う、基本セットアップ => https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc |
||
+ | * https://github.com/slashbeast/things/blob/master/configs/DOTzshrc - 複数の機能を有効にした zshrc、コメントを見て下さい。特徴: ユーザーが電源オフ・再起動・ハイバネートをすることを確認する関数、プロンプトの GIT サポート (vcsinfo を使わずに実現)、メニューの付いたタブ補完、実行中のコマンドをウィンドウのタイトルバーに表示など。 |
||
+ | |||
+ | == ヒントとテクニック == |
||
+ | |||
+ | === 履歴に同じ行が重複するのを避ける === |
||
+ | |||
+ | 履歴の重複する行を無視するには、以下を追加して下さい: |
||
+ | {{hc|~/.zshrc| |
||
+ | setopt HIST_IGNORE_DUPS}} |
||
+ | |||
+ | 既に作成された重複を履歴から取り除くには、次を実行: |
||
+ | $ sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history |
||
+ | |||
+ | === ttyctl コマンド === |
||
+ | |||
+ | [http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#index-tty_002c-freezing] には Zsh の {{ic|ttyctl}} コマンドの説明があります。{{ic|ttyctl}} を使うことでターミナルを "freeze/unfreeze" することができます。ターミナルの状態を変更するプログラムは多数存在しますが、終了時にターミナルの設定を元に戻さないことがあります。手動でターミナルをリセットしなくてもいいようにするには、以下を使います: |
||
+ | |||
+ | {{hc|~/.zshrc| |
||
+ | ttyctl -f}} |
||
+ | |||
+ | ==== terminfo を使わない方法 ==== |
||
+ | |||
+ | {{ic|autoload zkbd}} を実行してから {{ic|zkbd}} を実行して下さい。キーを押せない場合は (例: {{ic|F11}} はウィンドウを最大化します)、スペースを押してスキップして下さい。zkbd が完了した後、以下を {{ic|~/.zshrc}} に追加して下さい: |
||
+ | |||
+ | {{hc|~/.zshrc|autoload zkbd |
||
+ | source ~/.zkbd/$TERM-:0.0 # may be different - check where zkbd saved yours |
||
+ | |||
+ | [[ -n ${key[Backspace]} ]] && bindkey "${key[Backspace]}" backward-delete-char |
||
+ | [[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode |
||
+ | [[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line |
||
+ | [[ -n ${key[PageUp]} ]] && bindkey "${key[PageUp]}" up-line-or-history |
||
+ | [[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char |
||
+ | [[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line |
||
+ | [[ -n ${key[PageDown]} ]] && bindkey "${key[PageDown]}" down-line-or-history |
||
+ | [[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-search |
||
+ | [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char |
||
+ | [[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-search |
||
+ | [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char |
||
+ | }} |
||
+ | |||
+ | ==== ncurses アプリケーションのキーバインド ==== |
||
+ | |||
+ | ncurses アプリケーションをキーストロークにバインドすることが可能ですが、対話はできません。{{ic|BUFFER}} 変数を使って動作させて下さい。以下の例は {{ic|Alt+\}} で ncmpcpp を開きます: |
||
+ | {{hc|~/.zshrc|2= |
||
+ | ncmpcppShow() { BUFFER="ncmpcpp"; zle accept-line; } |
||
+ | zle -N ncmpcppShow |
||
+ | bindkey '^[\' ncmpcppShow |
||
+ | }} |
||
+ | |||
+ | === 履歴検索 === |
||
+ | |||
+ | 以下の行を .zshrc に追加して下さい: |
||
+ | |||
+ | {{hc|~/.zshrc|<nowiki> |
||
+ | [[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" history-beginning-search-backward |
||
+ | [[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" history-beginning-search-forward |
||
+ | </nowiki>}} |
||
+ | |||
+ | これを設定すると、現在の入力で始まる過去のコマンドだけが表示されるようになります。 |
||
=== ディレクトリスタック === |
=== ディレクトリスタック === |
||
393行目: | 465行目: | ||
}} |
}} |
||
− | === |
+ | === アプリケーションの自動起動 === |
+ | Zsh はいつでも {{ic|/etc/zsh/zshenv}} と {{ic|$ZDOTDIR/.zshenv}} を実行します。なのでこれらのファイルをあまり肥大化させないでください。 |
||
− | [[Fish]] には強力なシェルシンタックスハイライトがあります。これを zsh で使うには、公式リポジトリから {{pkg|zsh-syntax-highlighting}} をインストールして以下を zshrc に追加します: |
||
− | {{bc| |
||
− | source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
||
− | }} |
||
+ | シェルがログインシェルの場合、{{ic|/etc/profile}} そして {{ic|$ZDOTDIR/.zprofile}} からコマンドが読み込まれます。次に、シェルがインタラクティブの場合、{{ic|/etc/zsh/zshrc}} さらに {{ic|$ZDOTDIR/.zshrc}} からコマンドが読み込まれます。最後に、シェルがログインシェルの場合、{{ic|/etc/zsh/zlogin}} ついで {{ic|$ZDOTDIR/.zlogin}} が読み込まれます。 |
||
− | === サンプル .zshrc ファイル === |
||
− | + | {{ic|man zsh}} の ''STARTUP/SHUTDOWN FILES'' セクションも参照してください。 |
|
+ | == サードパーティ拡張 == |
||
− | * 公式リポジトリにある {{Pkg|grml-zsh-config}} パッケージは http://grml.org/zsh から取られて来たもので Zshell の多数の調整が含まれた zshrc ファイルが入っています。これは[https://www.archlinux.org/download/ 毎月リリースされている ISO] のデフォルト設定です。 |
||
− | * 動的なプロンプトとウィンドウタイトル、hardinfo を使う、基本セットアップ => http://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc |
||
− | * https://github.com/slashbeast/things/blob/master/configs/DOTzshrc - 複数の機能を有効にした zshrc、コメントを見て下さい。特徴: ユーザーが電源オフ・再起動・ハイバネートをすることを確認する関数、プロンプトの GIT サポート (vcsinfo を使わずに実現)、メニューの付いたタブ補完、実行中のコマンドをウィンドウのタイトルバーに表示など。 |
||
=== 設定フレームワーク === |
=== 設定フレームワーク === |
||
412行目: | 479行目: | ||
* [https://github.com/robbyrussell/oh-my-zsh oh-my-zsh] は Zsh の設定を管理するための、人気のあるコミュニティドリブンなフレームワークです。便利な関数、ヘルパー、プラグイン、テーマが山ほどバンドルされています。 |
* [https://github.com/robbyrussell/oh-my-zsh oh-my-zsh] は Zsh の設定を管理するための、人気のあるコミュニティドリブンなフレームワークです。便利な関数、ヘルパー、プラグイン、テーマが山ほどバンドルされています。 |
||
* [https://github.com/sorin-ionescu/prezto Prezto - Instantly Awesome Zsh] (AUR の {{AUR|prezto-git}} でインストール可能) は Zsh の設定フレームワークです。デフォルトでリッチなコマンドラインインターフェース環境を構築するモジュール・エイリアス・関数・自動補完・プロンプトテーマが付いています。 |
* [https://github.com/sorin-ionescu/prezto Prezto - Instantly Awesome Zsh] (AUR の {{AUR|prezto-git}} でインストール可能) は Zsh の設定フレームワークです。デフォルトでリッチなコマンドラインインターフェース環境を構築するモジュール・エイリアス・関数・自動補完・プロンプトテーマが付いています。 |
||
− | * [https://github.com/ |
+ | * [https://github.com/zimfw/zimfw Zim] (AUR の {{AUR|zsh-zim-git}} でインストール可能) は、驚異的な速度とモジュラー拡張機能を備えたZsh構成フレームワークです。 |
− | === |
+ | === プラグインマネージャー === |
+ | * {{App|Antibody|Antigen に似たパフォーマンス重視のプラグインマネージャー |https://github.com/getantibody/antibody|{{AUR|antibody}}}} |
||
− | Zsh はいつでも {{ic|/etc/zsh/zshenv}} と {{ic|$ZDOTDIR/.zshenv}} を実行します。なのでこれらのファイルをあまり肥大化させないでください。 |
||
+ | * {{App|zinit (previously "zplugin")|柔軟で高速な Zsh プラグインマネージャー |http://github.com/zdharma/zinit|{{AUR|zsh-zplugin-git}}}} |
||
+ | * {{App|zr|Rust で書かれたシンプルで高速なプラグインマネージャー |https://github.com/jedahan/zr|{{AUR|zr-git}}}} |
||
+ | * {{App|Antigen|oh-my-zsh と vundle に触発された Zsh のプラグインマネージャー [https://github.com/zsh-users/antigen/issues/673 ABANDONED]|https://github.com/zsh-users/antigen|{{AUR|antigen-git}}}} |
||
+ | * {{App|zgen|Zsh 用の軽量でシンプルなプラグインマネージャー [https://github.com/tarjoilija/zgen/issues/123 ABANDONED]|https://github.com/tarjoilija/zgen|{{AUR|zgen-git}}}} |
||
+ | * {{App|zplug|Zsh 用の次世代プラグインマネージャー [https://github.com/zplug/zplug/issues/403#issuecomment-477520784 ABANDONED]|https://github.com/zplug/zplug|{{AUR|zplug}}}} |
||
+ | === Fish のようなシンタックスハイライト === |
||
− | シェルがログインシェルの場合、{{ic|/etc/profile}} そして {{ic|$ZDOTDIR/.zprofile}} からコマンドが読み込まれます。次に、シェルがインタラクティブの場合、{{ic|/etc/zsh/zshrc}} さらに {{ic|$ZDOTDIR/.zshrc}} からコマンドが読み込まれます。最後に、シェルがログインシェルの場合、{{ic|/etc/zsh/zlogin}} ついで {{ic|$ZDOTDIR/.zlogin}} が読み込まれます。 |
||
+ | [[Fish]] には強力なシェルシンタックスハイライトがあります。これを zsh で使うには、公式リポジトリから {{pkg|zsh-syntax-highlighting}} をインストールして以下を zshrc に追加します: |
||
− | {{ic|man zsh}} の ''STARTUP/SHUTDOWN FILES'' セクションも参照してください。 |
||
+ | {{bc| |
||
+ | source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
||
+ | }} |
||
+ | |||
+ | === "command not found" フック === |
||
+ | |||
+ | [[pkgfile]] には、認識できないコマンドを入力したときに、自動的に公式リポジトリを検索する {{ic|command_not_found_handler}} 関数を提供する Zsh スクリプトファイルが含まれています。 |
||
+ | |||
+ | 有効にするには、スクリプトを [[source]] する必要があります。例: |
||
+ | |||
+ | {{hc|~/.zshrc| |
||
+ | source /usr/share/doc/pkgfile/command-not-found.zsh |
||
+ | }} |
||
+ | |||
+ | {{Note|pkgfile データベースの更新が必要な場合があります。[[pkgfile#Installation]] で詳細をご確認ください。}} |
||
== アンインストール == |
== アンインストール == |
||
426行目: | 513行目: | ||
Zsh があなたに合わないと感じて Bash に戻りたいときは、Zsh パッケージを削除する前に必ず、まずデフォルトシェルを変更して下さい。 |
Zsh があなたに合わないと感じて Bash に戻りたいときは、Zsh パッケージを削除する前に必ず、まずデフォルトシェルを変更して下さい。 |
||
+ | {{Warning|以下の手順に従わないと、あらゆる種類の問題が発生します。ユーザーはシェルプログラムを使用できなくなります。}} |
||
− | {{Warning|Failure to follow the below procedures will result in all kinds of problems: users will no longer have a working shell program.}} |
||
ターミナルで次のコマンドを root で実行して下さい: |
ターミナルで次のコマンドを root で実行して下さい: |
||
436行目: | 523行目: | ||
以上を行わなかった場合、root で {{ic|/etc/passwd}} を編集することで Bash にデフォルトシェルを戻すことができます。 |
以上を行わなかった場合、root で {{ic|/etc/passwd}} を編集することで Bash にデフォルトシェルを戻すことができます。 |
||
+ | {{Warning|ユーザー情報を編集するときは、不適切な形式のエントリを防ぐため、 {{ic|vipw}} を使用することを '''強く''' お勧めします。}} |
||
− | {{Warning|It is '''strongly''' recommended to use {{ic|vipw}} when editing user information as it prevents badly formatted entries.}} |
||
例: |
例: |
||
447行目: | 534行目: | ||
== 参照 == |
== 参照 == |
||
+ | *[[Wikipedia:Zsh]] |
||
+ | *[http://zsh.sourceforge.net/Intro/intro_toc.html An Introduction to the Z Shell] |
||
*[http://zsh.sourceforge.net/Guide/zshguide.html ユーザーガイド] |
*[http://zsh.sourceforge.net/Guide/zshguide.html ユーザーガイド] |
||
*[http://zsh.sourceforge.net/Doc/Release/index-frame.html The Z Shell Manual] (different format available [http://zsh.sourceforge.net/Doc/ here]) |
*[http://zsh.sourceforge.net/Doc/Release/index-frame.html The Z Shell Manual] (different format available [http://zsh.sourceforge.net/Doc/ here]) |
||
*[http://zsh.sourceforge.net/FAQ/zshfaq01.html Zsh FAQ] |
*[http://zsh.sourceforge.net/FAQ/zshfaq01.html Zsh FAQ] |
||
− | *[http://grml.org/zsh/zsh-lovers.html zsh-lovers(1)] (公式リポジトリの {{pkg|zsh-lovers}} で利用できます) |
||
*[http://zshwiki.org/home/ Zsh Wiki] |
*[http://zshwiki.org/home/ Zsh Wiki] |
||
+ | *{{man|1|zsh-lovers}} (公式リポジトリの {{pkg|zsh-lovers}} で利用できます) |
||
*[https://wiki.gentoo.org/wiki/Zsh/HOWTO Gentoo Wiki: Zsh/HOWTO] |
*[https://wiki.gentoo.org/wiki/Zsh/HOWTO Gentoo Wiki: Zsh/HOWTO] |
||
*[http://www.bash2zsh.com/zsh_refcard/refcard.pdf Bash2Zsh Reference Card] |
*[http://www.bash2zsh.com/zsh_refcard/refcard.pdf Bash2Zsh Reference Card] |
2020年12月3日 (木) 17:43時点における版
Zsh は対話式シェルとしてもスクリプト言語のインタプリタとしても使えるパワフルなシェルです。POSIX sh と互換性がありながら (デフォルトではありません、emulate sh
を実行した時だけです)、タブ補完の改善や グロビングなどの利点があります。
Zsh FAQ には他にも Zsh をあなたのシェルとして使うべき理由が列挙されています。
インストール
インストールをする前に現在使っているシェルが何なのか知っておくとよいでしょう:
$ echo $SHELL
公式リポジトリにある zsh パッケージをインストールしてください。追加の補完定義を使いたい場合は、zsh-completions パッケージもインストールします。
初期設定
ターミナルで次のコマンドを実行して Zsh が正しくインストールされたか確認してください:
$ zsh
基本的な設定を説明する zsh-newuser-install が表示されるはずです。これをスキップしたい場合、q
を押して下さい。表示されない場合は、次のコマンドで手動で呼び出すことができます:
$ autoload -Uz zsh-newuser-install $ zsh-newuser-install -f
Zsh をデフォルトのシェルにする
シェルが /etc/shells
に記載されていれば、chsh
コマンドを使って root 権限なしでデフォルトシェルを変更することができます。公式リポジトリから Zsh をインストールしたのなら、既に /etc/shells
にエントリが作られているはずです。
現在使っているユーザーのデフォルトシェルを変更するには:
$ chsh -s $(which zsh)
再ログイン後、Bash とは見た目が異なる Zsh のプロンプトが表示されていることに気づくでしょう。また、次のコマンドを実行することで Zsh が現在のシェルになっていることを確認できます:
$ echo $SHELL
スタートアップ/シャットダウン ファイル
ログイン時、Zsh は以下のファイルをこの順番で読み込みます:
/etc/zsh/zshenv
- このファイルにはグローバルなコマンド検索パスやシステム共通の環境変数を設定するコマンドを記述します。出力を発生させるコマンドや tty に基づいているコマンドを含めてはいけません。
~/.zshenv
- このファイルにはコマンドの検索パスを設定するコマンドや、重要な環境変数を含めます; 出力をするコマンドや tty に基づいているコマンドを含めてはいけません。
/etc/zsh/zprofile
- グローバルな設定ファイルであり、ログイン時に読み込まれます。ログイン時に毎回実行するコマンドを記述するのに使われます。Arch Linux では、初めから
/etc/profile
を source する一行が入っています。詳しくは下を参照。 /etc/profile
- このファイルはログイン時に Bourne 互換シェルによって読み込まれます: ログイン時やアプリケーション固有の設定
/etc/profile.d/*.sh
) を設定します。 ~/.zprofile
- このファイルは一般的にユーザーのスクリプトを自動で実行するために使われます。
/etc/zsh/zshrc
- グローバルな設定ファイルであり、インタラクティブシェルとして起動した場合に読み込まれます。
~/.zshrc
- これは Zsh のメインの設定ファイルです。
/etc/zsh/zlogin
- グローバルな設定ファイルであり、ログインシェルとして起動した場合に、初期化の最後に読み込まれます。
~/.zlogin
/etc/zsh/zlogin
と同じ設定ファイルですが、ユーザーごとの設定を記述するところが違います。/etc/zsh/zlogout
- グローバルな設定ファイルであり、ログインシェルが終了するときに読み込まれます。
~/.zlogout
/etc/zsh/zlogout
と同じ設定ファイルですが、ユーザーごとの設定を記述するところが違います。
全ユーザー共通の設定ファイル
場合によっては Zsh ユーザー全てに設定を適用させたいときもあると思われます。zsh(1) によれば /etc/zshrc
などグローバルな設定ファイルはいくつか存在します。ただし、これは Arch では少し事情が異なっており、代わりに /etc/zsh/
を使うようにコンパイルされています [1]。
従って、ユーザー共通の設定をしたいときは /etc/zshrc
ではなく /etc/zsh/zshrc
を使って下さい。これは /etc/zsh/zshenv
, /etc/zsh/zlogin
, /etc/zsh/zlogout
でも同じです。これらのファイルはデフォルトではインストールされないので、必要なときに作成してください。
唯一の例外は zprofile
で、これは /etc/profile
を使います。
~/.zshrc の設定
Zsh は何も設定しなくても使うことができますが、あなたが使いたい機能はほとんど設定されていないでしょう。ただし Zsh で利用できるカスタム化の道は険しく、Zsh の設定は困難をきわめ多くの時間を浪費するかもしれません。
シンプルな .zshrc
下にはサンプルの設定ファイルが含まれており、Zsh のカスタマイズの方法の例だけでなくデフォルトオプションのセットも提供しています。この設定を使うには .zshrc
という名前でファイルを保存してください。ログインしなおさなくても次を実行することで変更を適用できます:
$ source ~/.zshrc
以下はシンプルな .zshrc
です、基点としてはピッタリでしょう:
~/.zshrc
autoload -U compinit promptinit compinit promptinit # This will set the default prompt to the walters theme prompt walters
$PATH の設定
通常、PATH は ~/.zshenv
で設定すべきですが、Arch Linux は ~/.zshenv
を読み込んだ後に /etc/profile
を読み込みます (全体の流れは設定ファイルを見てください)。
$PATH
の上書きを防ぐために、~/.zprofile
で設定するようにしてください:
~/.zprofile
typeset -U path path=(~/bin /other/things/in/path $path[@])
詳しくは Z-Shell のユーザーガイド を参照してください。
コマンド補完
Zsh の一番魅力的な機能はおそらく先進的な自動補完機能でしょう。少なくとも、.zshrc
で自動補完を有効にしたいと思うはずです。自動補完を有効にするには、以下を追加してください:
~/.zshrc
autoload -U compinit compinit
この設定は ssh/scp/sftp のホスト名の補完も含んでいますが、この機能を動かすには ~/.ssh/known_hosts
で ssh がホスト名をハッシュ化しないようにする必要があります。
矢印キーのインターフェイスを使って自動補完するには、以下を追加して下さい:
~/.zshrc
zstyle ':completion:*' menu select
- メニューを有効にするには、タブを二度押して下さい。
エイリアスでコマンドラインの自動補完を切り替えるには、以下を追加して下さい:
~/.zshrc
setopt completealiases
キーバインド
Zsh は readline を使っていません、代わりに自身のパワフルな zle を使っています。zle は /etc/inputrc
や ~/.inputrc
を読みません。
zle には emacs モードと vi モードがあります。デフォルトでは、$EDITOR
環境変数から emacs と vi どちらのキーをあなたが使いたいのか考えます。この変数が空の場合、デフォルトは emacs モードです。 bindkey -v
や bindkey -e
でモードを変更することが可能です。
特殊なキーを動作させるには:
~/.zshrc
# create a zkbd compatible hash; # to add other keys to this hash, see: man 5 terminfo typeset -A key key[Home]=${terminfo[khome]} key[End]=${terminfo[kend]} key[Insert]=${terminfo[kich1]} key[Delete]=${terminfo[kdch1]} key[Up]=${terminfo[kcuu1]} key[Down]=${terminfo[kcud1]} key[Left]=${terminfo[kcub1]} key[Right]=${terminfo[kcuf1]} key[PageUp]=${terminfo[kpp]} key[PageDown]=${terminfo[knp]} # setup key accordingly [[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line [[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line [[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char [[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history [[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history [[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char [[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char [[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" beginning-of-buffer-or-history [[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" end-of-buffer-or-history # Finally, make sure the terminal is in application mode, when zle is # active. Only then are the values from $terminfo valid. if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then function zle-line-init () { printf '%s' "${terminfo[smkx]}" } function zle-line-finish () { printf '%s' "${terminfo[rmkx]}" } zle -N zle-line-init zle -N zle-line-finish fi
履歴検索
key
配列を設定し、ZLEがアプリケーションモードになっている事を確認して、以下の手順を使用してください。#キーバインド を参照してください。
履歴検索を有効にするには、以下の行を .zshrc
ファイルに追加します:
~/.zshrc
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search zle -N up-line-or-beginning-search zle -N down-line-or-beginning-search [[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search [[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
これにより、up
または down
キーを押すと、現在の行から現在のカーソル位置までに一致する過去のコマンドのみが表示されます。
Shift, Alt, Ctrl and Meta modifiers
xterm-compatible terminals can use extended key-definitions from user_caps(5). Those are combinations of Shift
, Alt
, Ctrl
and Meta
together with Up
, Down
, Left
, Right
, PageUp
, PageDown
, Home
, End
or Del
.
For example, for Ctrl+Left
to move to the beginning of the previous word and Ctrl+Right
to move to the beginning of the next word:
~/.zshrc
key[Control-Left]="${terminfo[kLFT5]}" key[Control-Right]="${terminfo[kRIT5]}" [[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word [[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word
プロンプト
Zsh offers the options of using a prompt theme or, for users who are dissatisfied with the themes (or want to expand their usefulness), the possibility to build a custom prompt.
Prompt themes
プロンプトテーマは、Zshで色付きのプロンプトを設定するためのすばやく簡単な方法です。それらの詳細については、zshcontrib(1) § PROMPT THEMES を参照してください。
テーマを使用するには、プロンプトテーマシステムが、.zshrc
に自動でロードされるよう設定されていることを確認してください。自動ロードを行うには、以下の行を追加します。
~/.zshrc
autoload -Uz promptinit promptinit
次のコマンドを実行することで利用可能なプロンプトを見ることができます:
$ prompt -l
例えば、walters プロンプトを使うには、次のように入力します:
$ prompt walters
全ての利用可能なテーマをプレビューするには次のコマンドを使って下さい:
$ prompt -p
プロンプトテーマの手動インストール
外部の設定管理ツールを使わずに、テーマを手動でインストールすることもできます。ローカルインストールの場合、最初にフォルダを使用し、それを fpath
配列に通過します。例:
$ mkdir ~/.zprompts $ fpath=("$HOME/.zprompts" "$fpath[@]")
次に、このフォルダにテーマファイルのシンボリックリンクを作成します:
$ ln -s mytheme.zsh ~/.zprompts/prompt_mytheme_setup
代わりに、テーマをグローバルにインストールする場合は、次のようにします:
# ln -s mytheme.zsh /usr/share/zsh/functions/Prompts/prompt_mytheme_setup
これで、次のコマンドを使ってアクティブ化できるはずです:
$ prompt mytheme
すべてが機能する場合は、.zshrc
をそれに応じて編集することができます。
プロンプトのカスタマイズ
上述のプロンプトに満足がいかない(もしくはプロンプトを拡張したい)場合、Zsh にはカスタムプロンプトを作る機能が備わっています。全てのシェルに共通な左側だけのプロンプトに加え、Zsh は左右両側を使うプロンプトをサポートしています。PROMPT=
と以下の変数を使うことでプロンプトをカスタマイズできます:
プロンプト変数
コマンド | 説明 | コメント |
---|---|---|
一般 | ||
%n |
ユーザー名 | |
%m |
コンピュータのホスト名 (ドットの前の部分まで) | |
%M |
コンピュータのホスト名 | |
%l |
現在の tty | |
%? |
最後に実行したアプリケーションのリターンコード | |
%# |
ユーザー特権によるプロンプト (root なら # その他なら % )
| |
時間 | ||
%T |
システム時刻 (HH:MM) | |
%* |
システム時刻 (HH:MM:SS) | |
%D |
システム日付 (YY-MM-DD) | |
ディレクトリ | ||
%d |
カレントディレクトリ。 | 数字を前に付けることでパスの一部だけを表示することが可能です。例えば %1d と入力した場合、/usr/bin にいるときは bin と表示されます。負の値も使えます: %-1d は上の例だと / と表示されます。
|
%~ |
カレントディレクトリ。$HOME やそのサブディレクトリにいる場合、$HOME の部分は ~ に置き換えられます。
| |
整形 | ||
%U [...] %u |
下線表示の始まりと終わり | |
%B [...] %b |
太字表示の始まりと終わり | |
%{ [...] %} |
表示されない領域。色の設定をするときに使います。このタグによって Zsh はタグの中にあるものを全て無視します。使用しないとプロンプトの縁やインデントに妙な影響が出ることがあります。 | |
カラー | ||
$fg[color] |
文字色を設定します (red, green, blue など - 太字デフォルト)。 | Zsh は Bash とは違ったふうに色を設定します。色を使うには .zshrc で PROMPT= の前に autoload -U colors && colors を追加してください。通常、カーソルが動かないように色の設定は %{ [...] %} の中に記述します。
|
$fg_no_bold[color] |
太字でない文字色を設定します。 | |
$fg_bold[color] |
太字の文字色を設定します。 | |
$reset_color |
文字色をデフォルトの色に戻します。 |
利用できるカラー | |
---|---|
black または 0 |
red または 1
|
green または 2 |
yellow または 3
|
blue または 4 |
magenta または 5
|
cyan または 6 |
white または 7
|
サンプル
以下のようにすることで左右両側にプロンプトを表示できます:
PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg_no_bold[yellow]%}%1~ %{$reset_color%}%#" RPROMPT="[%{$fg_no_bold[yellow]%}%?%{$reset_color%}]"
次のようになります (色は省略):
username@host ~ % [0]
サンプル .zshrc ファイル
以下は .zshrc
ファイルのリストです。自由に自分のファイルを追加してください:
- 公式リポジトリにある grml-zsh-config パッケージは http://grml.org/zsh から取られて来たもので Zshell の多数の調整が含まれた zshrc ファイルが入っています。これは毎月リリースされている ISO のデフォルト設定です。
- 動的なプロンプトとウィンドウタイトル、hardinfo を使う、基本セットアップ => https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc
- https://github.com/slashbeast/things/blob/master/configs/DOTzshrc - 複数の機能を有効にした zshrc、コメントを見て下さい。特徴: ユーザーが電源オフ・再起動・ハイバネートをすることを確認する関数、プロンプトの GIT サポート (vcsinfo を使わずに実現)、メニューの付いたタブ補完、実行中のコマンドをウィンドウのタイトルバーに表示など。
ヒントとテクニック
履歴に同じ行が重複するのを避ける
履歴の重複する行を無視するには、以下を追加して下さい:
~/.zshrc
setopt HIST_IGNORE_DUPS
既に作成された重複を履歴から取り除くには、次を実行:
$ sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history
ttyctl コマンド
[2] には Zsh の ttyctl
コマンドの説明があります。ttyctl
を使うことでターミナルを "freeze/unfreeze" することができます。ターミナルの状態を変更するプログラムは多数存在しますが、終了時にターミナルの設定を元に戻さないことがあります。手動でターミナルをリセットしなくてもいいようにするには、以下を使います:
~/.zshrc
ttyctl -f
terminfo を使わない方法
autoload zkbd
を実行してから zkbd
を実行して下さい。キーを押せない場合は (例: F11
はウィンドウを最大化します)、スペースを押してスキップして下さい。zkbd が完了した後、以下を ~/.zshrc
に追加して下さい:
~/.zshrc
autoload zkbd source ~/.zkbd/$TERM-:0.0 # may be different - check where zkbd saved yours [[ -n ${key[Backspace]} ]] && bindkey "${key[Backspace]}" backward-delete-char [[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line [[ -n ${key[PageUp]} ]] && bindkey "${key[PageUp]}" up-line-or-history [[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char [[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line [[ -n ${key[PageDown]} ]] && bindkey "${key[PageDown]}" down-line-or-history [[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-search [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char [[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-search [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char
ncurses アプリケーションのキーバインド
ncurses アプリケーションをキーストロークにバインドすることが可能ですが、対話はできません。BUFFER
変数を使って動作させて下さい。以下の例は Alt+\
で ncmpcpp を開きます:
~/.zshrc
ncmpcppShow() { BUFFER="ncmpcpp"; zle accept-line; } zle -N ncmpcppShow bindkey '^[\' ncmpcppShow
履歴検索
以下の行を .zshrc に追加して下さい:
~/.zshrc
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" history-beginning-search-backward [[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" history-beginning-search-forward
これを設定すると、現在の入力で始まる過去のコマンドだけが表示されるようになります。
ディレクトリスタック
Zsh を設定して DIRSTACKSIZE 最後に訪れたフォルダを覚えさせることが可能です。これにより素早く cd することができます。設定ファイルにいくつか設定を加える必要があります:
.zshrc
DIRSTACKFILE="$HOME/.cache/zsh/dirs" if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then dirstack=( ${(f)"$(< $DIRSTACKFILE)"} ) [[ -d $dirstack[1] ]] && cd $dirstack[1] fi chpwd() { print -l $PWD ${(u)dirstack} >$DIRSTACKFILE } DIRSTACKSIZE=20 setopt autopushd pushdsilent pushdtohome ## Remove duplicate entries setopt pushdignoredups ## This reverts the +/- operators. setopt pushdminus
次のコマンドでディレクトリスタックを表示できます:
dirs -v
cd -<NUM>
で訪問済みのフォルダに戻ります。ダッシュの後は自動補完が利用できます。自動補完メニューを使っている場合はとても役に立ちます。
ヘルプコマンド
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
アプリケーションの自動起動
Zsh はいつでも /etc/zsh/zshenv
と $ZDOTDIR/.zshenv
を実行します。なのでこれらのファイルをあまり肥大化させないでください。
シェルがログインシェルの場合、/etc/profile
そして $ZDOTDIR/.zprofile
からコマンドが読み込まれます。次に、シェルがインタラクティブの場合、/etc/zsh/zshrc
さらに $ZDOTDIR/.zshrc
からコマンドが読み込まれます。最後に、シェルがログインシェルの場合、/etc/zsh/zlogin
ついで $ZDOTDIR/.zlogin
が読み込まれます。
man zsh
の STARTUP/SHUTDOWN FILES セクションも参照してください。
サードパーティ拡張
設定フレームワーク
- oh-my-zsh は Zsh の設定を管理するための、人気のあるコミュニティドリブンなフレームワークです。便利な関数、ヘルパー、プラグイン、テーマが山ほどバンドルされています。
- Prezto - Instantly Awesome Zsh (AUR の prezto-gitAUR でインストール可能) は Zsh の設定フレームワークです。デフォルトでリッチなコマンドラインインターフェース環境を構築するモジュール・エイリアス・関数・自動補完・プロンプトテーマが付いています。
- Zim (AUR の zsh-zim-gitAUR でインストール可能) は、驚異的な速度とモジュラー拡張機能を備えたZsh構成フレームワークです。
プラグインマネージャー
- Antibody — Antigen に似たパフォーマンス重視のプラグインマネージャー
- zinit (previously "zplugin") — 柔軟で高速な Zsh プラグインマネージャー
- zr — Rust で書かれたシンプルで高速なプラグインマネージャー
- Antigen — oh-my-zsh と vundle に触発された Zsh のプラグインマネージャー ABANDONED
- zgen — Zsh 用の軽量でシンプルなプラグインマネージャー ABANDONED
- zplug — Zsh 用の次世代プラグインマネージャー ABANDONED
Fish のようなシンタックスハイライト
Fish には強力なシェルシンタックスハイライトがあります。これを zsh で使うには、公式リポジトリから zsh-syntax-highlighting をインストールして以下を zshrc に追加します:
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
"command not found" フック
pkgfile には、認識できないコマンドを入力したときに、自動的に公式リポジトリを検索する command_not_found_handler
関数を提供する Zsh スクリプトファイルが含まれています。
有効にするには、スクリプトを source する必要があります。例:
~/.zshrc
source /usr/share/doc/pkgfile/command-not-found.zsh
アンインストール
Zsh があなたに合わないと感じて Bash に戻りたいときは、Zsh パッケージを削除する前に必ず、まずデフォルトシェルを変更して下さい。
ターミナルで次のコマンドを root で実行して下さい:
# chsh -s /bin/bash user
Zsh を使っている全てのユーザーで実行して下さい。
これで安全に Zsh パッケージを削除することができます。
以上を行わなかった場合、root で /etc/passwd
を編集することで Bash にデフォルトシェルを戻すことができます。
例:
編集前:
username:x:1000:1000:Full Name,,,:/home/username:/bin/zsh
編集後:
username:x:1000:1000:Full Name,,,:/home/username:/bin/bash
参照
- Wikipedia:Zsh
- An Introduction to the Z Shell
- ユーザーガイド
- The Z Shell Manual (different format available here)
- Zsh FAQ
- Zsh Wiki
- zsh-lovers(1) (公式リポジトリの zsh-lovers で利用できます)
- Gentoo Wiki: Zsh/HOWTO
- Bash2Zsh Reference Card