🦁
zshrcを分割する。fzfで開いたりする。
~/.zshrcを分割したい
~/.zshrc
の中身が多くなってきたので分割しました。自分メモです。
環境:Mac Ventura, Ubuntu22.04
参考
(私の)やりかた
~/.zsh.d/
フォルダを作って、この中に分割するファイルを自由に作成します。このとき拡張子は.zsh
にします(あとで読み込むときのため)。
下は私の分割例です。profile.zsh にだけ環境固有の情報(export ... とか)を入れて、あとのファイルは共有してもよい管理にしています。
.zshrc
/.zhs.d
├── alias.zsh
├── assume_role.zsh
├── git.zsh
├── history.zsh
└── profile.zsh
~/.zshrc
のスクリプト中に、分割した情報を読み込む部分を入れます。
この例ではprofile.zshを先に読み込むようにしています。(使い方によっては不要なステップかも)
~/.zshrc
### split zsh
ZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \
-x $ZSHHOME ]; then
# Source the .profile.zsh file first
profile_zsh="$ZSHHOME/profile.zsh"
if [ -f "$profile_zsh" -o -h "$profile_zsh" ] && [ -r "$profile_zsh" ]; then
. "$profile_zsh"
fi
# Source the remaining zsh files
for i in $ZSHHOME/*; do
if [ "$i" != "$profile_zsh" ]; then
[[ ${i##*/} = *.zsh ]] && [ \( -f $i -o -h $i \) -a -r $i ] && . $i
fi
done
fi
GUIで管理
(VSCodeでの使用を想定)
分割すると、開くのが面倒になったりします。fzfでGUIで選択して開けるようにしました。インストール方法はfzfの公式Githubにあります。
このような選択画面になります。複数同時に開くこともできます。
fzfを呼び出すshell scriptです。bash open_zsh_files.sh
をエイリアス登録すると便利かもしれません。
open_zsh_files.sh
#!/bin/bash
# Set the file candidates
file_candidates=(~/.zshrc ~/.zsh.d/*.zsh)
# Use fzf to select multiple files
selected_files=$(printf '%s\n' "${file_candidates[@]}" | fzf --reverse --multi)
# Check if any files were selected
if [ -n "$selected_files" ]; then
# Save the original IFS and set IFS to newline
OLDIFS=$IFS
IFS=$'\n'
# Read selected files into an array
files=($selected_files)
# Restore the original IFS
IFS=$OLDIFS
# Open the selected files with code
for file in "${files[@]}"; do
code "$file"
done
else
echo "No files selected."
fi
Discussion