NeoVimのPreconfigured Configrationを切り替えたいと思ったことはありませんか?
Photo by Markus Spiske on Unsplash
NeoVimでAstroNvimとNvChadを切り替えたいと思ったことはありませんか?
NeoVimのPreconfigured Configrationってこんなにあるんです。
Awesome NeoVimみるとわかります。
GitHub - rockerBOO/awesome-neovim: Collections of awesome neovim plugins.
普通ありますよね?(普通はないか・・・🤣)
いや普通はないけど、たまにちょっと他のが気になることはある!😆
v0.9からNVIM_APPNAMEでXDG_CONFIG_HOME配下のDirectory名を切り替えられるのを知らなかった・・・
神過ぎて、まったく別のことをやってたのに完全に脱線して組み込みました🤣
.bashrcにFunctionを組み込む
以下のような形にしました。
if command -v nvim &> /dev/null; then
# NVIM_APPNAME
if [! -f ${XDG_STATE_HOME}/nvim_appname]; then
echo astronvim > ${XDG_STATE_HOME}/nvim_appname
fi
if [-f ${XDG_STATE_HOME}/nvim_appname]; then
declare -x NVIM_APPNAME=$(cat ${XDG_STATE_HOME}/nvim_appname)
fi
nvim_appnames=(
nvim
astronvim
nvchad
lunarvim
)
function nvim_appname() {
switch_nvim_appname=$(gum choose --select-if-one --header "current NVIM_APPNAME: ${NVIM_APPNAME}" ${nvim_appnames[@]})
if [-n "${switch_nvim_appname}"]; then
echo ${switch_nvim_appname} > ${XDG_STATE_HOME}/nvim_appname
export NVIM_APPNAME=$(cat ${XDG_STATE_HOME}/nvim_appname)
echo "switch NVIM_APPNAME: ${switch_nvim_appname}"
fi
echo "output NVIM_APPNAME: ${NVIM_APPNAME}"
}
function vi(){
#nvim -c "LetItSnow" "$@"
nvim "$@"
}
function vim(){
nvim "$@"
}
fi
ここではgumを使ってます。
GitHub - charmbracelet/gum: A tool for glamorous shell scripts 🎀
これは去年のクリスマスの名残です😂
#nvim -c "LetItSnow" "$@"
ざっくり流れを説明すると
- NVIM_APPNAMEをSetする
- gumの有無を確認して、NVIM_APPNAMEのstatefile(${XDG_STATE_HOME}/nvim_appname)とそのswitcher functionを組み込む
NVIM_APPNAMEをSetする
- ${XDG_STATE_HOME}にnvim_appnameがあるかを確認
- なければ決め打ちでastronvimで出力
- あればNVIM_APPNAMEに読み込み
# NVIM_APPNAME
if [! -f ${XDG_STATE_HOME}/nvim_appname]; then
echo astronvim > ${XDG_STATE_HOME}/nvim_appname
fi
if [-f ${XDG_STATE_HOME}/nvim_appname]; then
declare -x NVIM_APPNAME=$(cat ${XDG_STATE_HOME}/nvim_appname)
fi
gumの有無を確認して、NVIM_APPNAMEのstatefile(${XDG_STATE_HOME}/nvim_appname)とそのswitcher functionを組み込む
if command -v gum &> /dev/null; then
nvim_appnames=(
nvim
astronvim
nvchad
lunarvim
)
function nvim_appname() {
switch_nvim_appname=$(gum choose --select-if-one --header "current NVIM_APPNAME: ${NVIM_APPNAME}" ${nvim_appnames[@]})
if [-n "${switch_nvim_appname}"]; then
echo ${switch_nvim_appname} > ${XDG_STATE_HOME}/nvim_appname
export NVIM_APPNAME=$(cat ${XDG_STATE_HOME}/nvim_appname)
echo "switch NVIM_APPNAME: ${switch_nvim_appname}"
fi
echo "output NVIM_APPNAME: ${NVIM_APPNAME}"
}
fi
ここでgumを使ってます。
- nvim_appnamesの配列を用意(ここにNeoVimのPreconfigured Configrationの名前を列挙)
- chooseで select-if-one optionでswitch_nvim_appnameに変数として読み込ませる
- ${XDG_STATE_HOME}/nvim_appnameを上書き
- 改めてNVIM_APPNAMEをexport
Function: nvim_appname
nvim_appname
選択できて、これで実際に切り替わります。
これで
NvChadでも
CyberVimでも
LunarVimでも
なんでもあり🤣

Top comments (0)