NVIM_APPNAMEを使ってNeovimのサブ環境を複数作る
🎄この記事は bitA Tech Blog Advent Calendar の17日目の記事です。
はじめに
Neovimの実験用の環境を作りたい場合や、ほかの人のdotfilesを試してみたい場合にNeovimのサブ環境が欲しくなります。
このような場合にNeovimのNVIM_APPNAMEを使うと複数のNeovim環境を作れて便利だったので紹介します。
NVIM_APPNAMEとはなにか
$NVIM_APPNAMEはNeovimが使う設定用ディレクトリを制御する環境変数です。Unix系では~/.config/nvim、Windowsでは~/AppData/Local/nvimから設定を読み込みますが、$NVIM_APPNAMEの値を変えることで設定の読込先を変更できます。
公式ドキュメントでNVIM_APPNAMEの定義を確認します。
以下、公式ドキュメントの説明を引用して翻訳したものになります。
The standard directories can be further configured by the
$NVIM_APPNAMEenvironment variable.
標準ディレクトリは$NVIM_APPNAME環境変数で設定できます。
This variable controls the sub-directory that Nvim will read from (and auto-create) in each of the base directories.
この変数($NVIM_APPNAME)はNvimが各ベースディレクトリ内で読み込む(および自動作成する)サブディレクトリを制御します。
For example, setting
$NVIM_APPNAMEto "foo" before starting will cause Nvim to look for configuration files in$XDG_CONFIG_HOME/fooinstead of$XDG_CONFIG_HOME/nvim.$NVIM_APPNAMEmust be a name, such as "foo", or a relative path, such as "foo/bar".
例えば、Nvimがスタートする前に$NVIM_APPNAMEとしてfooを設定用ディレクトリとしていたら、Nvimは$XDG_CONFIG_HOME/nvimの代わりに$XDG_CONFIG_HOME/fooを参照するようになります。
その際、$NVIM_APPNAMEは必ず"foo"のような名前、もしくは"foo/bar"のような相対パスでなければなりません。
補足すると、$XDG_CONFIG_HOMEはUnix系だと~/.configでWindowsだと~/AppData/Localになります。
NVIM_APPNAMEの設定手順
NVIM_APPNAMEの設定は、以下の手順で簡単に作成できます。
1. Neovimの設定用ディレクトリ($XDG_CONFIG_HOME/<your-config>/)の用意
$XDG_CONFIG_HOME配下にNeovimの設定用ディレクトリを作成します。
前述の通りUnix系では~/.config、Windowsでは~/AppData/Localが$XDG_CONFIG_HOMEになります。私はUbuntuを使っているので以下~/.configを$XDG_CONFIG_HOMEとして進めます。
以下のように、好きな名前で~/.config配下にNeovimの設定用ディレクトリを作成してください。
.config
├── nvim
└── nvim-with-denops # 試したいNeovimの設定用ディレクトリ
余談ですが、私はdenops.nvimを試したかったのでnvim-with-denopsという名前の設定用ディレクトリを作成しました。
2. NVIM_APPNAMEに使いたい設定用ディレクトリのパスを追加
NVIM_APPNAMEに1で作った設定用ディレクトリ名を指定してNeovimを立ち上げます。
先に述べたように相対パスを使わずにディレクトリ名だけを指定してください。
(NVIM_APPNAME=~/.config/<your-dir-name>とはしないでください。)
NVIM_APPNAME=<your-dir-name> nvim
私の例だとNVIM_APPNAME=nvim-with-denops nvimのように打って実行します。
正しくディレクトリ名を指定していれば、<your-dir-name>の設定が読み込まれているはずです。
3. Shellのaliasに設定を追加(お好みで)
直接Neovimの機能には関係しませんが、$NVIM_APPNAMEをaliasと紐づけるとすぐ開けるようになって便利なのでお好みで設定してください。
以下のコマンドではnnを押すとnvim-with-denopsが設定用ディレクトリとして読み込まれてNeovimが立ち上がります。fishでも書き方は同じです。
以下は.zshrcに追加する例です。
alias nn='NVIM_APPNAME=nvim-with-denops nvim'
設定後はsource ~/.zshrcのように、sourceを使って自分のshellの設定ファイルを読み込んでください。もしくはターミナルの再起動で設定を反映してください。
これでnnを打つとnvim-with-denopsが設定用ディレクトリとして読み込まれてNeovimが立ち上がります。
Neovimのサブ環境の作成とaliasの設定は以上です。
Discussion