zshの補完機能

zshの補完機能

zshの補完機能

現在自分が、開発環境で利用しているシェルはzshです。1ヶ月程度前にbashから乗り換えました。乗り換えた理由は補完機能が便利すぎるから!それだけです。zshを使ったことがない方はぜひ試して見てください。

なので~/.zshrcはほとんどカスタマイズしていません。補完機能を有効にする記述をしてあるだけです。以下に開発環境の設定を晒します。

~/.zshrc

autoload -U compinit
compinit

#allow tab completion in the middle of a word
setopt COMPLETE_IN_WORD

#japanese setting (ktanaka)
LANG="ja_JP.eucJP"
export LANG

さて首尾よく設定ファイルを書いたら、zshコマンドを実行するだけです。zshの補完機能はどれほど強力なものでしょうか?

コマンド名補完

bashにもついている機能です。debianで"set-l"と入力しTABキーを押すとset-language-envまで補完されます。zshで異なるのは、プロンプトが更新されず、補完の用が済めば、リストは消えてくれることです。たとえば、"z <TAB>"とタイプすると、(bashはTABが2回)

[bash]

colinux:~$ z
zcat zdiff zegrep zforce zless znew zsh4
zcmp zdump zfgrep zgrep zmore zsh zsoelim
ktanaka@colinux:~$ ■

[zsh]

colinux% z■
zcat zdump zformat zmodload zregexparse zstyle
zcmp zegrep zgrep zmore zsh
…(略)

と表示されます。補完が実行された後のカーソルの位置に注目してください。

コマンドのオプション補完

[zsh]

コマンドを入力して"-<TAB>"と入力すると、

colinux% svn commit -■
--config-dir --force-log --non-recursive --username
--editor-cmd --message --password -F
…(略)
colinux% sudo -■
-H -- set HOME environment variable
-K -- remove user timestamp
-L -- list options from Default section
…(略)

こんな感じです。

その他コマンドに応じたさまざまな補完

[apt-getにおけるパッケージ名補完]

colinux% apt-get install samba■
samba samba-common samba-doc samba-tng-common
samba-client samba-dbg samba-doc-ja

[sudo -uやchownにおけるユーザ名、グループ補完]

colinux% sudo -u ■
Debian-exim games lp nobody root
…(略)

[killにおけるプロセスID補完]

colinux% kill ■
567 ttyp1 00:00:01 zsh
688 ttyp1 00:00:00 zsh
689 ttyp1 00:00:00 ps

といった感じで実にさまざまなものを補完してくれます。

こういった機能を試してみて、zshに乗り換えたいと思ったときは"chsh -s /bin/zsh"(Debian GNU/Linux 4.0r0)とすれば次回からシェルを変更することができます。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ