NeoVimの初期設定

今度はneovim導入。

最近vimの設定を変更することもなく、問題なく使えていて、プラグインを変更したりすることもなく穏やかにすごしていたのですが…

syu-m-5151.hatenablog.com

 

この記事読んだらなにか新しいことしたいなという熱が…

でもって以前みた

これも気になってたので、久々に環境を色々いじってみようと。

いつもすぐに環境壊す人なので、簡単に復元できることを条件にWindows10でNeovimをいじる環境の構築を検討してみた。

検討内容

  • GUICUIも対応
  • きちんとインストールしようが、ポータル版だろうが対応できるように
  • Macとの互換性は考えない。Winのみ

といったことを考えたら

設定ファイルの保管場所はOneDriveを使用する

やっぱりOS標準で最初から入っているというのは強い。最初に実行するスクリプトや設定ファイルの大本はここにした。

環境変数大事

実行前に環境変数指定したバッチファイルも考えたけど、結局他のアプリと連携できなくなることが多い、せめてユーザーレベルでの環境変数を設定することで、色々とやりやすいようにした。

やったこと

Windowsでinit.vimの置き場所のデフォルトはこれ

C:\Users\[ユーザー名]\AppData\Local\nvim\init.vim

このフォルダが探しにくい。

LinuxMacと同じく

~/.config/nvim/init.vim

にしておきたい。ここで~はホームフォルダのことだから

C:\Users\[ユーザー名]\.config\nvim\init.vim

に変更になる。この.configフォルダを使うのは

XDG Base Directory Specification という考え方を元に設定ファイルなどは全部まとめましょうという考え方。日本語訳はXDG Base Directory - ArchWiki なんかが参考になるかも。

Windowsのアプリ管理用のScoopなんかもこの方法を使ってるから.configフォルダができあがってる人もいるかもしれない。

じゃあこのXDGベースにするにはどうするかというと、

XDG_CONFIG_HOME
XDG_CACHE_HOME
XDG_DATA_HOME

の3つの場所を設定してあげればいい。

そのために使うのが環境変数

普通に設定するなら、「設定」→「システム」→「詳細情報」の画面の下のほうにある「システムの詳細設定」を開き(2022/02/19時点、Windows10 20H2での話)、開いたウィンドウの環境変数をクリック

f:id:homaju:20220219102359p:plain

環境変数の設定状況

ユーザー名のところは隠してますけど、最初はTMPの項目まで入ってるはず。

ここに画像にある最後の3つを追加した。

手入力はメンドイし、絶対打ち間違えをいつもやるので、ここはスクリプトを作成してまかせる。その内容がこちら。

$env:XDG_CONFIG_HOME="$env:HOMEPATH\.config"
New-Item $env:XDG_CONFIG_HOME -ItemType Directory

cmd /c mklink /j  "$env:XDG_CONFIG_HOME\nvim" "$env:OneDrive\Software\Settings\nvim\"

$env:XDG_CACHE_HOME="$env:TEMP\neovim\"
New-Item $env:XDG_CACHE_HOME -ItemType Directory

$env:XDG_DATA_HOME="$env:HOMEPATH\.local\"
New-Item $env:XDG_DATA_HOME -ItemType Directory 

#Set permanent env
[Environment]::SetEnvironmentVariable('XDG_CONFIG_HOME',$Env:XDG_CONFIG_HOME,'User')
[Environment]::SetEnvironmentVariable('XDG_CACHE_HOME',$Env:XDG_CACHE_HOME,'User')
[Environment]::SetEnvironmentVariable('XDG_DATA_HOME',$Env:XDG_DATA_HOME,'User')

1行目:XDG_CONFIG_HOMEの場所を指定

2行目:XDG_CONFIG_HOMEのフォルダを作成
    ほんとはフォルダがあるか確認して、なければ作成にすべき

3行目:OneDriveの設定ファイルをおいたフォルダとXDG_CONFIG_HOME内のnvimフォルダをジャンクションにする。ジャンクションにしたら、本体はOneDriveに置いたままだけど、XDG_CONFIG_HOMEにファイルがあるように見える。init.nvimを編集したら、OneDrive側も最新版になるので、いちいちコピーしなくていい。

4行目:XDG_CACHE_HOMEの設定、一時ファイルの場所。swapファイルとかを置く場所として利用してる。ここはユーザーのtempフォルダを利用してる。

7行目:XDG_DATA_HOMEフォルダの場所。ダウンロードしたプラグインとかの置き場。これはOneDriveで保管するものじゃないから、XDG_CONFIG_HOMEとは別にした方がいい。通常は~/.localとのことなので、同じようにした

10行目:ここからの3行が、環境変数の設定。これを実行すると、上に貼った画像の内容が反映される。

 

こうやって作ったPowerShellファイルを初回に実行することで、必要な環境変数が設定されるし、OneDriveからファイルをコピーする必要もない。

nvimを実行したら、こちらが想定した場所からinit.vimを読み込んでることが確認できた。

 

今日はここまで。