zshからfishに乗り換えた

なんか自分のzshが重い。
ターミナル立ち上げてコマンドが打てるようになるまで1秒ぐらいかかる。
おおかたoh-my-zshあたりが余計なことをしているんだろう。
これは設定を見直す必要がある。
ところで、fish shellというやつが前から気になっていた。
せっかくだし、これに乗り換えてみることにした。
fishの良さは検索すれば山ほど出てくるので割愛する。

自分の環境は以下の通り:

  • OS: macOS Sierra
  • ターミナルエミュレータ: iTerm2
  • 配色: Solarlized Dark

個人的な作業記録なので「ふーん」ぐらいの感じで読んで欲しい。

インストール

fish本体

brew install fish

fish用のプラグイン管理ツールは fisherman を使う:

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher

プラグインのインストール

ディレクトリ移動を楽にしてくれる zコマンド:

fisher z

bash構文でコマンドを実行できる bass:

fisher edc/bass

powershell用テーマ:

fisher simnalamburt/shellder

他いろいろ入れる。

pecoを使えるようにする

過去に打ったコマンドを部分一致で検索して実行できる神コマンド peco をfishでも使えるようにする。
いわゆるInteractive Filtering Tool。

まだインストールしてない人:

brew tap peco/peco
brew install peco

設定

~/.config/fish/functions/peco_select_history.fish を作成:

function peco_select_history
  if test (count $argv) = 0
    set peco_flags --layout=bottom-up
  else
    set peco_flags --layout=bottom-up --query "$argv"
  end

  history|peco $peco_flags|read foo

  if [ $foo ]
    commandline $foo
  else
    commandline ''
  end
end

~/.config/fish/config.fish に以下を追記:

function fish_user_key_bindings
  bind cr peco_select_history # Bind for peco select history to Ctrl+r
end

これでCtrl+rで呼び出せる。ヒャッハー!

nvmからnに乗り換える

結局zshが重い問題の原因は、nvmがボトルネックな事だった。
nvm use default とかやるごとに 0.5s とかかかんの。ありえなくない?

試しにn に乗り換えたら、こちらはファイルをコピーする方式なので初期化コストゼロだった。さすが天下のTJ!

tmuxの設定をfishに合わせる

reattach-to-user-namespaceを使っているので、こいつのパラメータをzshからfishにしてやる。
これはtmux内でもvimでyankしたやつを自動でpbcopyしてくれる便利なやつ。

.tmux.conf:

# osx clipboard
set-option -g default-command "reattach-to-user-namespace -l fish"

トラブルシューティング

vimとかの色がおかしい

ターミナルが256色対応であることを伝える必要がある:

~/.config/fish/config.fish:

set -g TERM xterm-256color

軽くなった!わーい!サカナ! >< (((o>

投稿者:

Takuya

Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中