3ヶ月くらい前からシェルを fish にしてみてるので、適当に設定など共有。
先に行っておくけど zsh より良い所とか聞かれても知らない。
気分転換&頭の体操で zsh のカスタマイズの延長くらいの気分で乗り換えた。
インスコ
以上
oh-my-fish インスコ
fish-shell の良い所は特に設定などをしなくてもユーザーフレンドリーであることです。
zsh のように oh-my-zsh などを入れたり、過度にカスタマイズをしなくて済みます。
とかそういう説明がされてるのにその利点を一気にぶち壊す oh-my-fish というのがあるので入れる
1
| $ curl -L https://github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | fish
|
そうすると omf
コマンドが使えるようになる。
これ、パッケージ管理的な機能が便利なので入れておくと楽。
テーマとかプラグインとかが
とかで出来る。
git リポジトリから直とかも
1
| $ omf install https://github.com/yoshiori/fish-peco_select_zsh_history
|
で出来る。
で、Gemfile 的なのが ~/.config/omf/bundle
に出来るのでそこに書いて omf install
とかで一括で入れたりも出来る。
入れたもののアップデートも omf update
とかで一気に出来て便利〜
peco まわり
移行できた最大の理由がコレで大体最近は peco 使ってコマンド実行とリポジトリの移動をしていたのですんなり移行できた。
履歴の peco
標準の peco プラグインは入力途中の値を引き継いでくれないのでパッチ当ててる( PR 投げ済み)
ghq で peco
ghq を peco るのは作ったので
1
| $ omf install https://github.com/yoshiori/fish-peco_select_ghq_repository
|
でインスコできる
zsh の history 資産を使いたい
最初、zhistory をコンバートしようとしたんだけど paths とか && とか環境変数とか色々面倒くさいので、そのまま zhistory ファイルを peco れるようにした。
これも
1
| $ omf install https://github.com/yoshiori/fish-peco_select_zsh_history
|
でインストールできるので後は
1
| set ZSH_HISTORY_FILE /home/yoshiori/.zhistory
|
とかでファイルの場所指定してやれば良い
コマンドハマりどころ
&& で実行系
1
| $ brew update && brew upgrade
|
みたいなのをやりたいときは
1
| $ brew update; and brew upgrade
|
みたいに ;
で区切って and
でつなげる
一次変数系
で、よくやる一時的な変数を上記みたいに
1
| $ set -lx HOGE test; printenv HOGE
|
ってやるとはまるので注意。
スコープが実行中のプロセスになってしまうので
1
2
3
4
5
6
7
| $ set HOGE foo
$ printenv HOGE
foo
$ set -lx HOGE bar; printenv HOGE
bar
$ printenv HOGE
bar
|
みたいに上書きされちゃう。
なので begin
end
で囲う
1
2
3
4
5
6
7
| $ set HOGE foo
$ printenv HOGE
foo
$ begin set -lx HOGE bar; printenv HOGE; end
bar
$ printenv HOGE
foo
|
これ、間違えると何が辛いって
1
| $ set -lx RAILS_ENV production; rails c
|
とかやった後 rspec
とか実行しちゃうと……あとはわかるな?
俺の config.fish ファイル
そんなこんなで俺の設定ファイルです。
二箇所説明しておくと
未だに cd で移動した後に ls してほしいので
1
2
3
4
| function cd
builtin cd $argv
ls -la
end
|
peco の表示は bottom-up にしておくと目線の移動が少ないので
1
2
3
| function peco
command peco --layout=bottom-up $argv
end
|
全部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| # Path to Oh My Fish install.
set -gx OMF_PATH $HOME/.local/share/omf
# Customize Oh My Fish configuration path.
#set -gx OMF_CONFIG /Users/yoshiori-shoji/.config/omf
# Load oh-my-fish configuration.
source $OMF_PATH/init.fish
# PATH
set -gx PATH $HOME/bin /usr/local/bin /usr/local/opt/rbenv/shims $PATH
# homebrew
set -gx HOMEBREW_GITHUB_API_TOKEN xxxxxxxxxx
# ghq
set -gx GOPATH $HOME
# gem-src
set -gx GEMSRC_USE_GHQ 1
set -gx GEMSRC_CLONE_ROOT $HOME/src
# rbenv
set -gx RBENV_ROOT /usr/local/opt/rbenv
# Bundler
set -gx BUNDLE_JOBS 7
# Java
set -gx JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8
set ZSH_HISTORY_FILE $HOME/.zsh/log/.zhistory
function fish_user_key_bindings
bind \c] peco_select_ghq_repository
bind \ct peco_select_zsh_history
bind \cr peco_select_history
end
function cd
builtin cd $argv
ls -la
end
function peco
command peco --layout=bottom-up $argv
end
|
去年エディタの乗り換えに成功したので、今年はシェルの乗り換えに挑戦してみたけど結構行けそう。
というのも、大体の行動が peco に依存しているのでそれの移植さえ終われば使い勝手そんなに変わらない。