zshをカスタマイズ
人間忙しくなると現実逃避したくなるものです. こちらの連載を参考にしながら, .zshrcをいじっていました.
プロンプトの表示をカスタマイズ
プロンプトの表示をいじります. とりあえず以下の設定を追加.
RPROMPT="[%/]"
こうすると右側にカレントディレクトリの絶対パスを表示してくれます. こんな感じです.
%cd ../bin [/opt/local/etc] % [/opt/local/bin]
ほかにもかなりいろいろ設定できるようです. 以下のサイトも参考にしながらまたいじっていきます.
emacs風キーバインドに変更
bindkey -e
emacs風のキーバインドに変更します. デフォルトでもそれなりにできているんですが, この設定を追加することでマークセットしてregion をkillできるようになって便利です.
コマンド履歴のキーバインド
autoload history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey "^P" history-beginning-search-backward-end bindkey "^N" history-beginning-search-forward-end
zshの強力な機能の一つがコマンドの履歴です. ctrl+r で履歴に対してgrepをかけられてとても便利.
またzshでは複数行のコマンドはそのままシェル上でも複数行で表示されます. その際のキーバインドの設定です. ctrl-n, ctrl-pで履歴の前後, 矢印上下で行の上下移動となっています.
cd の設定
setopt auto_cd setopt auto_pushd
auto_cd は直接ディレクトリ名を指定するだけでそのディレクトリにcdしてくれる機能です. たとえばfooというディレクトリに移動する場合, いちいち "cd foo" とやらなくても"foo"とタイプするだけで移動してくれます.
auto_pushdは自動的にいままで移動した履歴を保持してくれる機能です. "cd -"まで入力してタブをおすと, 直近の移動履歴から候補を表示してくれます.
%cd -[tabをおす] 1 -- /home 2 -- /usr/bin 3 -- / 4 -- /usr/local/lib 5 -- /Users/kosei 6 -- /opt/local 7 -- /opt/local/lib 8 -- /opt/local/bin
パス補完時にスラッシュをつける
setopt noautoremoveslash
パスをタブで補完する際, デフォルトでは末尾のスラッシュを除いているそうなんですが, それだと都合が悪い時があるのでこの動作をオフにします.
aliasでも補完できるようにする
setopt complete_aliases
エイリアスを展開してもとのコマンドをみつけて, そのコマンドに応じた補完をしてくれるようになります. たとえば"alias ll='ls -l'" というエイリアスがあったとします. シェルで"ll -"とタイプしてタブを押しても, 通常はllが実はlsコマンドだと認識できないので, zshの補完が使えません. 上記の設定を追加することでこのようなシチュエーションでも補完が使えるようになります.
alias
alias la="ls -a" alias ll="ls -l" alias du="du -h" alias df="df -h"
zsh特有の設定ではないんですが, aliasも追加しました. よく使うオプションを登録しておいてタイプ量削減です.
設定の一部を別ファイルにわける
[ -f ~/.zshrc.mine ] && source ~/.zshrc.mine
こちらもzsh特有ではないんですが, .zshrc.mineという別ファイルに設定の一部をわけて記述するというtipsです. 実験的な設定やマシン固有の設定をこちらに記述し, 基本的な設定や全マシンで共有している設定を.zshrcに書くというアイデアです.
リダイレクトを複数指定
% echo "welcome to the new land" > file1 > file2
このようにzshではリダイレクト先を複数指定できるそうです. 知りませんでした.
ファイルグロブをtabで展開
% ls D* [tabを押す]% ls Desktop Documents Downloads Dropbox
タブでファイルグロブも展開できるそうです.
以前の設定
ちなみに今回設定をいじる前は, Web+DB press vol.40の 定番Linux開発環境という特集で解説されていた, id:naoyaさん作の.zshrc雛形を使っていました.
この特集はかなりよくて, zshもscreenもcoLinuxも当時この記事をみて導入しました.