LoginSignup
2
4

zshの大量にある1文字記号の意味の調べ方

Last updated at Posted at 2023-11-04

zsh の分かりにくい記号、用語のまとめと似たような感じだけど、Webの方が目次や索引があったりして、個人的にはmanより読みやすいと思うのでリンクを張ってみた。

公式ドキュメント:目次

記号

Parameter Expansion Flags(変数展開フラグ)

↓の(q)みたいなの。 公式ドキュメント

${(q)hoge}

Modifiers(編集子)

↓の:hみたいなの。公式ドキュメント

${dir:h}

Globbing Flags(グロブフラグ)

↓の(#m)みたいなの。公式ドキュメント

${arr//(#m)[aeiou]/${(U)MATCH}}

Glob Qualifiers(グロブ修飾子)

↓の(N)みたいなの。公式ドキュメント

*.zsh(N)

Tips

タブ補完を使う

なんとzshは記号にもタブ補完が効いてしまう。これで意味を調べられる。
(上記のうちGlobbing Flagsだけは効かない模様)

% ls ${(<ここでTab>
0  -- split words on null bytes
A  -- assign as an array parameter
a  -- sort in array index order (with O to reverse)
b  -- backslash quote pattern characters only
B  -- include index of beginning of match in #, % expressions
C  -- capitalize words

記号以外にも公式ドキュメントへのリンク

オプション

setopt auto_cdみたいなの。
公式ドキュメント:オプションのリスト

次のコマンドでオプションのリストを表示できる:

$ set -o
noaliases             off
aliasfuncdef          off
allexport             off
...

組み込み変数

HISTFILEPS1などシェルが使う変数のリストは公式ドキュメント:Parameters Used by the Shellにある。
$_comps$commandsなどは公式ドキュメント:Variables Indexにある。

次のコマンドで定義済み変数のリストを表示できる:

$ set
'!'=0
'#'=0
'$'=84029

zleウィジェット

↓のhistory-incremental-pattern-search-backwardみたいなのをウィジェットという。
公式ドキュメント:ウィジェットのリスト

bindkey    '^R'   history-incremental-pattern-search-backward

次のコマンドでユーザー定義を含むウィジェットのリストを表示できる:

$ zle -al
.accept-and-hold
.accept-and-infer-next-history
.accept-and-menu-complete
...

スタイルとタグ

↓zstyleのdescriptionsの部分(コロンで区切られる最後の部分)をタグ、formatの部分をスタイルという。
公式ドキュメント:スタイルとタグのリスト

zstyle ':completion:*:descriptions' format '%F{yellow}%d%f'      # グループ名など

次のコマンドでスタイルのリストを表示できる:
(適用可能な全スタイルではなく、定義済みのスタイル)

$ zstyle -L
zstyle ':vcs_info:svn*:*' actionformats '%c%u %F{1}| %a%f'
zstyle ':vcs_info:*' actionformats '%b %F{1}| %a%f'
zstyle ':vcs_info:hg*:*' branchformat %b
...

カーソル位置で適用可能なスタイルを調べるには、M-2 C-x hを押せば良い:

$ cp -<ここでM-2 C-x h>
tags in context :completion::complete:cp::
    argument-rest options  (_arguments _cp)
tags in context :completion::complete:cp:argument-rest:
    globbed-files  (_files _arguments _cp)

さいごに

zshのカスタマイズは楽じゃない。しかしドキュメントへのアクセスを効率的にし、文字列操作や配列操作のイディオムを覚えれば、あとは他のツールのカスタマイズとそう変わらないのではないか。

ただ補完をカスタマイズするにはしっかり仕組みを理解する必要があるので

をおすすめする。

そもそもカスタマイズが面倒くさいが便利に使いたい人はzsh4humansはどうだろう。powerlevel10k作者のromkatv氏による「設定無しで欲しい機能が全部揃っている」zshフレームワークで、

  • シンタックスハイライト
  • オートサジェスト(fishみたいな)
  • Powerlevel10kによるプロンプト
  • fzfとの統合

が入っている。romkatv氏のことだから、速度にも最大限に注意を払っていると思われる。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4