mac OS Monterey環境でfishを使ってみてる

結局、前回の記事から全く触れずじまいだったShellの一つ、fishを今新調したmacにセットアップしてみております。
カシマです。

意外と罠が多いのでメモしておこうと思います。

brewのインストール

brewの初回インストールは迷うはずもなく。
サイトに記載通りのコマンドでbrewのインストールが行えました。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
$ eval $(/opt/homebrew/bin/brew shellenv)

M1 CPUなので色々変わったのかインストール場所も変わっています。

$ which brew
/opt/homebrew/bin/brew

なるほど。
Bigsurまでは /usr/local/bin でしたがまたどこかでパスが戻るのかなあ…
とりあえずこれでOK。

fish作業

fishのインストール

基本的にはMac で fish shell 環境を10分で構築するを参考に進めようとしていますが、色々勝手が変わっていたので、なかなかうまくいかず苦労しております。

$ brew install fish
$ which fish | sudo tee -a /etc/shells
$ chsh -s $(which fish)
$ fish

ここまでで恐らくfishに切り替えられているはずですが、すんなり行かなかったらすみません。

fishに合わせてbrewのパスを通す

fishはbashやzshと非互換(とはいえbashが完全に使えないわけではない)ということで、brewもパスを改めて設定することになります。
以下のパスを設定します。

$ cat ~/.config/fish/config.fish
set -g -x PATH $PATH /opt/homebrew/bin

if status is-interactive
# Commands to run in interactive sessions can go here
end

$ echo $PATH
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/MacGPG2/bin /opt/homebrew/bin

末尾にちゃんと /opt/homebrew/bin があれば brew が認識していることになります。

あとoh-my-fishからfishermanに乗り換えたに触れられていますが、みんな oh-my-fish を入れている方が多いようで、実は要らないんですよと言われています。
ということで要らないならやりません(笑)

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

これで必要な設定は概ね完了です。

テーマやフォントの設定

どうやら見やすいテーマやフォントがあるとのことですのでインストールしていきます。
以下のサイトのビルド済みファイルの方が綺麗に見えるかもしれません。

https://github.com/miiton/Cicaにある Release より Cica_v5.0.2_with_emoji.zip をインストールしました。
フォントのインストールの参考はFish Shellをかっこよくする方法。bobthefishとCicaできれいなデザイン。を元にしています。

インストール場所は以下になります。

$ ls -al ~/Library/Fonts/Cica-*.ttf

最初どうやってフォントなんて変えるの?と思ったけど、よくよく考えてみればターミナルの設定にありましたね。。。なんて間抜けな(笑)

テーマのインストールは以下のような感じです。
oh-my-fish/theme-bobthefishを見ている限り良さそう。

$ fisher install oh-my-fish/theme-bobthefish
$ fisher install powerline/powerline

oh-my-fish/theme-bobthefishのインストールを行いつつ、設定も追加変更しますので、最終的にこうなりました。

$ cat ~/.config/fish/fish.config
# path settings
set -g -x PATH $PATH /opt/homebrew/bin

# theme settings
set -g theme_display_git yes
set -g theme_display_git_dirty yes
set -g theme_display_git_untracked yes
set -g theme_display_git_ahead_verbose yes
set -g theme_display_git_dirty_verbose yes
set -g theme_display_git_stashed_verbose yes
set -g theme_display_git_default_branch yes
set -g theme_git_default_branches master main
# ↓バグでyesだとgitのbranch名が出ないのでnoに変更( https://github.com/oh-my-fish/theme-bobthefish/issues/196 )
#set -g theme_git_worktree_support yes
set -g theme_git_worktree_support no
set -g theme_use_abbreviated_branch_name yes
set -g theme_display_vagrant yes
set -g theme_display_docker_machine yes
set -g theme_display_k8s_context yes
set -g theme_display_hg yes
set -g theme_display_virtualenv yes
set -g theme_display_nix no
set -g theme_display_ruby yes
set -g theme_display_node yes
set -g theme_display_user ssh
set -g theme_display_hostname ssh
set -g theme_display_vi no
set -g theme_display_date no
set -g theme_display_cmd_duration yes
set -g theme_title_display_process yes
set -g theme_title_display_path no
set -g theme_title_display_user yes
set -g theme_title_use_abbreviated_path no
set -g theme_date_format "+%a %H:%M"
set -g theme_date_timezone Asia/Tokyo
set -g theme_avoid_ambiguous_glyphs yes
set -g theme_powerline_fonts yes
set -g theme_nerd_fonts yes
set -g theme_show_exit_status yes
set -g theme_display_jobs_verbose yes
set -g default_user your_terminal_username
set -g theme_color_scheme dark
set -g fish_prompt_pwd_dir_length 0
set -g theme_project_dir_length 1
set -g theme_newline_cursor yes
set -g theme_newline_prompt '$ '

if status is-interactive
# Commands to run in interactive sessions can go here
end

プラグインの状態もこんな感じに。

$ fisher list
powerline/powerline
oh-my-fish/theme-bobthefish

tmuxのインストールと設定

tmuxはとりあえず普通にbrewから入れればいいのでコマンドを実行します。

$ brew install reattach-to-user-namespace tmux

問題はfishにtmuxを認識させる方法だ…。
昨日実は軽く調べてたんですけど、途中で本格的にfishを使わないとtmuxの設定できねーわ、と思って途中で投げ出しました。
本日休日につき、本腰入れてやろうと思ったのもtmuxが目的の一つでもあります。
iTerm2使えば?みたいな話もあるっぽいですが、tmux派です。
screenでもいいんですけどねぇ。

インストールが完了したらひとまず以下で動作確認を行います。

$ tmux
$ exit

適当に操作したらフリーズしただと!?だめだこいつ!?(ぉぃ
というわけで設定ファイルを配置します。

$ cat ~/.tmux.conf
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

set-option -g default-shell "$SHELL"

# keybind
unbind r
bind r source-file ~/.tmux.conf \; display-message "reload config!!"
set -g history-limit 10000

unbind %
bind | split-window -h
unbind '"'
bind - split-window -v

setw -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

setw -g mode-keys vi

unbind v
unbind y
unbind enter
set -g default-command "reattach-to-user-namespace -l $SHELL"
unbind -T copy-mode-vi Enter
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
bind -T copy-mode-vi enter send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

bind-key p paste-buffer

ターミナルの設定でこのチェックも外すと良いことが起こります。

まとめ

とりあえずここまででいいかな?
これでfish環境の構築作業終わりか…疲れたぜ。

あ、最終的なインストールをまとめます!

brew関連

$ brew list ==> Formulae
ca-certificates libevent openssl@1.1 reattach-to-user-namespace utf8proc
fish ncurses pcre2 tmux

fish関連

$ fisher list
powerline/powerline
oh-my-fish/theme-bobthefish
jethrokuan/z
0rax/fish-bd

conf関連

fishの設定は テーマやフォントの設定 を参照。
tmuxの設定は tmuxのインストールと設定 を参照。

以上でーす。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。