ターミナルがダサいとモテない。NeoVimのNVIM_APPNAMEを使ってAstroNvimとNvChadを切り替える。

ターミナルがダサいとモテない。NeoVimのNVIM_APPNAMEを使ってAstroNvimとNvChadを切り替える。

Photo by Markus Spiske on Unsplash

NeoVimのPreconfigured Configrationを切り替えたいと思ったことはありませんか?

NeoVimAstroNvimNvChadを切り替えたいと思ったことはありませんか?

NeoVimPreconfigured Configrationってこんなにあるんです。
Awesome NeoVimみるとわかります。

GitHub - rockerBOO/awesome-neovim: Collections of awesome neovim plugins.

Collections of awesome neovim plugins. Contribute to rockerBOO/awesome-neovim development by creating an account on…

github.com

普通ありますよね?(普通はないか・・・🤣)
いや普通はないけど、たまにちょっと他のが気になることはある!😆

v0.9からNVIM_APPNAMEでXDG_CONFIG_HOME配下のDirectory名を切り替えられるのを知らなかった・・・

Starting

Neovim user documentation

neovim.io

神過ぎて、まったく別のことをやってたのに完全に脱線して組み込みました🤣

.bashrcにFunctionを組み込む

以下のような形にしました。

Plain text
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 🎀

A tool for glamorous shell scripts 🎀. Contribute to charmbracelet/gum development by creating an account on GitHub.

github.com

これは去年のクリスマスの名残です😂

Plain text
#nvim -c "LetItSnow" "$@"

ざっくり流れを説明すると

  1. NVIM_APPNAMEをSetする
  2. gumの有無を確認して、NVIM_APPNAMEのstatefile(${XDG_STATE_HOME}/nvim_appname)とそのswitcher functionを組み込む

NVIM_APPNAMEをSetする

  1. ${XDG_STATE_HOME}にnvim_appnameがあるかを確認
  2. なければ決め打ちでastronvimで出力
  3. あればNVIM_APPNAMEに読み込み
Plain text
  # 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を組み込む

Plain text
  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を使ってます。

  1. nvim_appnamesの配列を用意(ここにNeoVimのPreconfigured Configrationの名前を列挙)
  2. chooseで select-if-one optionでswitch_nvim_appnameに変数として読み込ませる
  3. ${XDG_STATE_HOME}/nvim_appnameを上書き
  4. 改めてNVIM_APPNAMEをexport

Function: nvim_appname

Plain text
nvim_appname

nvim_appname関数で利用するNeovim設定を選択する画面

選択できて、これで実際に切り替わります。

これで

AstroNvimでも

NvChadでも

CyberVimでも

LunarVimでも

なんでもあり🤣

ターミナル環境について他の記事も書いているので、よろしければこちらもご覧ください!
『ターミナルがダサいとモテない』シリーズ一覧

転載:ターミナルがダサいとモテない。NeoVimのNVIM_APPNAMEを使ってAstroNvimとNvChadを切り替える。

この記事は Medium(@yusuke_h) からの転載です。