fishshellの汎用的なセットアップメモ
概要
- fish の自分なりの環境構築を1つの記事にした
- 付録を付けた
- 実行するコマンドをまとめた コマンドまとめ
- neovim の lazy 周りで必要な ssh-agentの永続化
- neovim のインストールをまとめた neovimインストール
- 2024年8月28日 記事の大幅な修正をした
背景
- レンタルサーバーを利用したときなど,
fish の環境を構築するたびに調べていたので1つの記事にまとめたかった
対象読者
- 未来の自分
- 私と同じような環境を作りたい人
環境
以下に完成後の環境を記す.
Windows ターミナル
バージョン: 1.20.11781.0
$ fish -v
fish, version 3.7.1
:
$ fisher -v
fisher, version 4.4.4
$ fisher list
jorgebucaran/fisher
edc/bass
0rax/fish-bd
jethrokuan/z
本論
fish
インストール
OSによって大きく異なるので公式を参照. *1
arch linux の例
sudo pacman -S fish
管理者権限(sudo)について
fish のインストールは管理者権限がないと辛い.
管理者権限なしの自力でビルドなら,cmake
が事実上必須.
cmake
もビルドするなら,gcc
と build-essential
は必須.
(cmake
もビルドする道は挫折したのでこれより先はわからない).
デフォルトシェルの設定
デフォルトシェルを fish にする.
OSや環境によっては,POSIX非互換がネックになるので実行前に要調査.
chsh -s $(which fish)
以降は bash
ではなく fish で実行する.
fisher
fish のプラグイン管理ツール.
インストール
公式の GitHub を参照すると次のコマンドが書いてある. *2
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
設定
プラグインをインストールする.
fisher install edc/bass 0rax/fish-bd jethrokuan/z
各プラグインの説明
edc/bass
fish で bash スクリプトを source
する.
利用例 は次.
bass source main.bash
0rax/fish-bd
現在のディレクトリツリー(pwd)の親ディレクトリに戻る.
cd ../../..
の短縮(代替).
jethrokuan/z
履歴から探って直接移動できるすぐれもの.
奥深いプロジェクトとかにすぐ移動できる.
バイナリ置き場を作る
mkdir ~/.local/bin
その後,~/.config/fish/config.fish
などに,
fish_add_path $HOME/.local/bin
を記述する.
oh-my-posh
最新のベストプラクティスは別にありそうだが,設定ファイルを引き継げるのでまだ現役.
インストール
sudo ができる場合
curl -s https://ohmyposh.dev/install.sh | sudo bash -s
sudo ができない場合
curl -s https://ohmyposh.dev/install.sh | bash -s -- -d ~/.local/bin/
unzipがない場合
unzip を使う箇所(テーマのインストール)を省略する.
まずはシェルスクリプトをDL.
curl -O https://ohmyposh.dev/install.sh
vi などのエディタで,以下の2つを行う.
-
validate_dependencies()
内部のvalidate_dependency unzip
を削除 -
install_themes()
をすべて削除(または呼び出し部分を削除)
その後実行権限を与え,実行して,削除.
chmod +x install.sh && ./install.sh && rm ./install.sh
設定
自分のテーマを使う.
git clone https://github.com/rayfiyo/oh-my-posh.git ~/.config/oh-my-posh
mvt コマンドの実装
mvt
としてファイルを作る.
echo "#!/bin/bash
if [ ! -e ~/.cache/trash ]; then
mkdir ~/.cache/trash
fi
if expr \"$1\" : \"^-\" >/dev/null 2>&1; then
echo \"This is rm_wrap: Do not use any options.\"
return 1
fi
date=`date +%y%m%d-%R:%S`
mv -t ~/.cache/trash -f \"\$@\" --suffix \$date
" > mvt
その後実行権限を与える.
chmod +x mvt
エディタで書き込む
touch mvt
mvt の中身は次.
#!/bin/bash
if [ ! -e ~/.cache/trash ]; then
mkdir ~/.cache/trash
fi
if expr "$1" : "^-" >/dev/null 2>&1; then
echo "This is rm_wrap: Do not use any options."
return 1
fi
date=`date +%y%m%d-%R:%S`
mv -t ~/.cache/trash -f "$@" --suffix $date
その後実行権限を与えるのも忘れずに.
chmod +x mvt
sudo できる場合
mv mvt /usr/bin/
sudo できない場合
mv mvt ~/.local/bin/
fish の設定ファイルを適用
自分の設定(プライベートリポジトリ)を使う.
~/.config/fish/config.fish
ssh の設定
次の自分の記事を参考にする.*3
GPG key は後で.
clone
rm -rf ~/.config/fish/ && git clone git@github.com:rayfiyo/fish-config.git ~/.config/fish
付録
コマンドまとめ
fish はインストール済みだとする
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
fisher install edc/bass jethrokuan/fzf 0rax/fish-bd jethrokuan/z
curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
git clone https://github.com/rayfiyo/oh-my-posh.git ~/.config/oh-my-posh
ssh-agentの永続化
ssh-agent.service
neovimインストール
curl -L https://github.com/neovim/neovim/releases/download/stable/nvim.appimage 0-o nvim
chmod u+x nvim
libfuse.so.2 がないエラー
エラーメッセージ
dlopen(): error loading libfuse.so.2
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
インストールする方法
neovim の AppImage の展開に FUSE2 が必要なのでインストールする.
インストール方法はOSによって大きく異なるので公式を参照.*4
あるいは自分でソースからビルドする.
インストールしない方法
-
--appimage-extract
オプションを付ける
./nvim --appimage-extract
- 生成される
AppRun
みたいなやつをnvim
に変えてパスを通すかシンボリックリンクを作成する
path を通す
sudo ができる
sudo mv ./nvim /usr/bin/nvim
sudo ができない
バイナリ置き場を作る を行う.
mv ./nvim ~/.ubin/
設定ファイル
git clone https://github.com/rayfiyo/nvim-configs.git ~/.config/nvim
参考文献
1
- fish shell 2024-08-28
2
3
- ssh key の作り方 2024-08-28
Discussion