zsh 設定 - 補完 -

zsh 使うなら強力な補完機能はとりあえず使っときたいですね。というわけで、下の設定は是非やっておきましょう。
# completion
autoload -U compinit
compinit
setopt correct
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

  • 入力補完
  • autoload -U compinit
    compinit
    
    シェル上でコマンドやファイル名を途中まで入力して [tab] キーを押すと、入力候補がリストアップされたり補完されたりします。 zsh で compinit を有効にすると、上記に加えコマンドのオプションも補完対象になります。 下の例だと mkdir のオプションを忘れてしまった時に - (ハイフン)まで入力して [tab] を押すとオプションのリストが表示されます。
    # mkdir -[tab]
    --context  -Z  -- set SELinux context
    --help         -- display help information
    --mode     -m  -- set permission mode
    --parents  -p  -- make parent directories as needed
    --verbose  -v  -- print message for each created directory
    --version      -- display version information
    # 
    
    あとは、 man コマンドの引数としてのコマンド名も補完してくれたりします。とにかくなんだかよく頑張ってくれるやつですので困ったときは [tab] を押してみましょう。


  • コマンド訂正
  • setopt correct
    
    correct はコマンドの入力間違いを訂正してくれる機能です。例えば、 ls を間違えて sl のように入力してしまうと「ひょっとして ls では?」と尋ねてきてくれます。
    # sl
    zsh: correct 'sl' to 'ls' [nyae]? y
    anaconda-ks.cfg  a.out  install.log  install.log.syslog
    #  
    
    correct_all というオプションもあり、それを設定するとコマンドだけでなく入力行全部が訂正対象になるのでファイル名間違いの修正候補を出してくれるようになります。まあ、ファイル名は普通 [tab] 使って補完しながら入力すると思うんで correct_all はそれほど必要ではないかと。


  • zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
    
    コマンドの出力結果はデフォルトで色がつきますが、補完候補として出力されるものには色がつきません。上の行を設定すると lscd 等のコマンドの補完候補として出力されるファイルやディレクトリに色がつきます。下の例では ls の後にスペースをあけて [tab] を入力しています。
    # ls [tab]
    anaconda-ks.cfg     install.log.syslog  test.png            vimrc_example.vim
    install.log         rpmbuild/           vim-7.2.tar.bz2
    


そういえば、昔 sl と入力するとターミナル上を蒸気機関車が走りだし、走ってる間は [ctrl-c] でもキャンセルできないという鬱陶しい(笑)スクリプトがあったのですが、まだ存在しているんでしょうかね?



【関連】



このブログの人気の投稿

zsh 設定 - プロンプト -

運転免許失効〜再取得までの奮闘記 - 期限切れ -

運転免許失効〜再取得までの奮闘記 - 路上練習 -