2013/01/31

zsh に乗り換えとか

Ubuntu や Linux Mint の端末を起動すると、デフォルトでは bash 環境でのコマンド入力が可能となります。

私は、その bash 環境の補完機能に嫌気がさしたので、zsh に乗り換えました。

詳しくは折りたたみ。

zsh に乗り換えようと思ったのは、Ubuntu 11.04 以降の bash の補完機能がおかしいからです。
リリース当時は Tab キーで補完すると最後にスペースが入って…という問題がありましたが、それは既に修正され、問題ありません。

問題なのは、未だにパスを変数に代入しておいて、その変数を利用して補完しようとすると、変数の前にエスケープシーケンスが入ってしまうことなんですよね。

例えば、ホームディレクトリ内の Documents/hoge/fuga/foo/bar に「aaa」「bbb」「ccc」「ddd」というディレクトリがある状態で、
$ cd ~
$ ls ~/Documents/hoge/fuga/foo/bar
aaa   bbb   ccc   ddd
$ hoge=~/Documents/hoge/fuga/foo/bar
最後の 1 行を実行すると、hoge という変数にホームディレクトリの Documents/hoge/fuga/foo/bar というパスが登録されます。そして、
$ cd $hoge/a[Tab]
hoge という変数を使って、cd を実行しようと補完すると
$ cd $hoge/aaa
と補完されます。これは、ある特定の場所に頻繁にアクセスする場合、非常に便利です。

しかし、11.04 以降の bash は、Tab キーで補完しようとすると、
$ cd $hoge/a[Tab]
$ cd \$hoge/a
となります。これはホームディレクトリに「$hoge」というディレクトリがあって、その下に「a」で始まるディレクトリがあると解釈されてしまうため、望んでいた結果と異なってしまいます。

launchpad には既に同じ問題を抱えた人が報告しているようなので、直るだろうと思っていたのですが、なかなか直りません。それで、ついに zsh に乗り換えました。

zsh の詳細については、様々なブログやページで紹介されているので、ここでは触れませんが、実に良いですね! bash のでひっかかった補完機能の問題もないですし、カスタマイズ次第ではさらに作業が快適になります。

一応、zsh の設定ファイルを作る上で参考になったリンクを貼っておきます。

0 件のコメント:

コメントを投稿