あすたぴ.dev

fish + tmux + Rust のコマンドでターミナル環境を構築した

2019/10/19 08:19:34

最新ターミナル環境を見直してみようと思い、一新してみました。

bash -> fish

昔は zsh にしていた時期もあったのですがターミナルでコマンドを叩くこともそんなに多くない時期だったので新しいPCになったタイミングで環境をあまり整えずに使用していました。

環境としては iterm2 で MacデフォルトのBash を使っており特にツール等も入れずデフォルト

当時は vim で開発していたのでその環境だけ整えていました。

というわけで今回 bash から fish になったわけです。
なんで fish にしたという理由は特になくて zsh も使ってたし fish も使ってみるかくらいの気持ちです。

fish install

install は brew
その後 default shell を変えます

brew install fish
echo /usr/local/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish

fish のパッケージ管理ツールである fisher も入れておきます

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

theme install

fish の terminal テーマを install しました。

fisher add rafaelrinaldi/pure

デフォルトのカラーだと git の branch がターミナルの背景とほぼ同化し見えなかったので色を変えました。

設定ファイルは ~/.config/fish/config.fish にあります。

set pure_color_git_branch $pure_color_success
set pure_color_git_dirty $pure_color_success

こんな感じで設定しました。

install 完了

fish の良さの1つとして予測が優秀というところがあります。

ディレクトリ移動、コマンドなどを打つ際に1文字でも打てば履歴、ディレクトリの内容からそれっぽいのをサジェストしてくれます。

tmux

次に tmux を入れました。
tmux に関しては好みだと思います。
具体的に何ができるかというと、ターミナルからtmuxを起動するとtmux上にシェルを立ち上げてその中でセッションを複数持てたり、画面分割をできます。

具体的には、iterm2 を使ったことがあればイメージがつきやすいと思いますが、
iterm2ではタブを複数作ることができます。タブごとにシェルを立ち上げ、一般的にはプロジェクト違いやログを見るタブ、などを用意します。タブ内で画面分割も行えます。

tmux ではターミナルのアプリ(iterm2など)のタブを使わずに tmux 内で複数のセッションを起動する。という形になります。
各セッションに名前をつけて起動したり、セッションを保存することでPCを再起動しても復旧することができます。
この容易さが iterm2 のタブ運用に比べて便利な点だと思います。

brew install tmux

install はまた brew で行っちゃいます。

tmux の設定は ~/tmux.conf に書きます。

tmux は prefix と呼ばれるキーを入力後に各キーを押すことで操作ができます。

自分の場合は prefix を control + f に変更しています。参考程度に .tmux.conf です。

set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

# デフォルトシェルを fish に
set-option -g default-shell "/usr/local/bin/fish"

set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M]'

# prefix変更
set -g prefix C-f

# pageup ( fn + ↑ ) でコピーモードに入る
bind -n Pageup copy-mode -u

# カーソルキーで移動
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

set -g @plugin 'tmux-plugins/tpm'
run '~/.tmux/plugins/tpm/tpm'

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# auto start terminal
set -g @continuum-boot 'on'
set -g @continuum-boot-options 'iterm'

# auto restore tmux
set -g @continuum-restore 'on'

# mouse scroll
set -g mouse on
set -g terminal-overrides 'xterm*:[email protected]:[email protected]'

# pain change
bind -n C-o select-pane -t :.+

Rustのコマンドを入れてみる

Rustはプログラミング言語の1つで、その言語で作ったコマンドを試しにいれてみました。

https://github.com/ogham/exa
exa という ls コマンドの代替です。

brew install exa

で install し~/.config/fish/config.fish を修正します。

alias ls='exa -al -s date'

こんな感じで ls に対して exa のコマンドを指定します。
これで ls の代わりに exa を使えるようになります。

使用感

fish に関してはしばらく使っていますが、ターミナルの移動やコマンド実行の補完が優秀でかなり楽になりました。

tmux は慣れまで良さがわかりませんでしたが、慣れてからは iterm2 でタブを分けるよりも各セッションを移動しやすいし各セッションに名前をつければタブに名前を付けるよりも判別しやすいので好みの部分はあると思いますが、気に入ってます。

Rustのコマンドに関しては完全にただの趣味だと思います。一応 ls より高機能なのですが、そもそもそんなにファイルの一覧を出して、細かく見るという行為をすることがありませんでした。

Rustのコマンドは他にも入れていますが、それはまた機会に。

Copyright © astapi