oinume journal

Scratchpad of what I learned

ターミナル環境を見直す(1) - zsh + prezto編

GWになったので、ずーーーっとやりたいと思っていた、ターミナル環境の見直しをしてる。oh-my-zshとか使ってなかったし、tmuxも最近は使ってなくて時代からかなり乗り遅れ気味なのがずっと気になってた。ちなみに見直す前の環境はざっくり言うと以下。

  • 作業環境はMac + iTerm
  • zsh使ってるがoh-my-zshは使ってない
  • tmuxは最近は使ってなかった。iTermのタブでそんなに不自由してなかったので。
  • vim教信者ではない
  • dotfileはbitbucketのプライベートリポジトリで管理していて、symlink張って有効にしている(ln -s /path/to/dotfiles/.zshrc ~/.zshrc みたいな感じ)
  • スクリーンショットはこんな感じで、右側にgitのブランチとカレントディレクトリを表示してる

prezto

これはoh-my-zshの軽量版らしい。oh-my-zshを使っていて重いと感じている方、preztoはいかが? - Qiita を読んで良さそうだなって思ってこっちにしてみた。

まず手始めに、bitbucketでホストしていた dotfiles のリポジトリをやめてみた。プライベートリポジトリにしていたのは、あんまり見られたくない仕事の設定ファイルがあったためだったのだが、見られたくないファイルはDropboxに置いてsymlinkする運用にすればいいと気付いた。

dotfiles
├── .zlogin  - ~/.zlogin にsymlinkする
├── .zlogout
├── .zpreztorc
├── .zshrc
  (他.zsh系ファイル)
└── prezto - git submodule。~/.zprezto にsymlink

な感じのファイル構成にして、zsh関連のファイルはホームディレクトリにsymlinkする。zsh関連のファイルはpreztoのruncomsディレクトリにあるので、これをコピーして多少カスタマイズしつつ自分のdotfilesリポジトリにコピーしている。

カスタマイズの詳細はdiff見てもらうとして、簡単に説明すると下記のような感じ。

  • gitモジュールを有効にした。これ使うとsorinのテーマでプロンプトにgitのブランチ情報が出る。(一部のテーマはこれがなくてもなぜかgitのブランチが出てた)
  • gitモジュール、今いるディレクトリでgit-hub-browseと打つとブラウザでgithub.comのそのリポジトリを開いてくれて地味に便利。会社のGitHubEnterpriseにも対応させたい。
  • gitモジュールにはその他にも一見便利そうなエイリアスが定義されているが、正直gitのコマンドをそのまま使ったほうがいい気がした。
  • osxモジュールも有効にした。mand でそのコマンドのmanがDash.appで見れる。まーそんな嬉しくないかも。
  • テーマはデフォルトのsorinを使ってるけど変えるかもしれない。テーマについてはここスクリーンショット付きで一覧があるので参考にするといい。
  • あとutilityモジュールのせいでdiffコマンドがgit diff のエイリアスになってしまっているので、alias diff='command diff' っていう設定を入れて通常のdiffコマンドに強引に戻してる。(余計なおせっかい過ぎるんだけどこれ無効にできないかな)
diff -u ~/dotfiles/prezto/runcoms/zpreztorc ~/dotfiles/.zpreztorc
--- /Users/kazuhiro/dotfiles/prezto/runcoms/zpreztorc   2014-05-04 11:38:10.000000000 +0900
+++ /Users/kazuhiro/dotfiles/.zpreztorc 2014-05-04 14:12:42.000000000 +0900
@@ -32,7 +32,9 @@
   'spectrum' \
   'utility' \
   'completion' \
-  'prompt'
+  'prompt' \
+  'git' \
+  'osx'

 #
 # Editor
@@ -135,7 +137,7 @@
 #

 # Auto set the tab and window titles.
-# zstyle ':prezto:module:terminal' auto-title 'yes'
+zstyle ':prezto:module:terminal' auto-title 'yes'

 # Set the window title format.
 # zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
@@ -152,3 +154,11 @@

 # Auto start a session when Zsh is launched in a SSH connection.
 # zstyle ':prezto:module:tmux:auto-start' remote 'yes'
+#
+
+#
+# custom
+#
+
+# prevent to diff -> 'git diff' by utility module
+alias diff='command diff'

ちなみにzshはsetoptと打つと有効になっているzshoptionsが一覧されるので、preztoがどういうオプションを有効にしてるかがわかる。特定のオプションを無効にしたい場合は

unsetopt <option>

とすればいい。

preztoで不満なところ

sorinテーマの問題なんだけど、カレントディレクトリやgit branchがプロンプトの左側にあるのを右側に出したい。

最後に

prezto良さげだけどやっぱりカスタマイズは必要かな。あと、ターミナル環境見直し第2弾としてpercolかzawを使ってみようと思う。