LoginSignup
6
0

NeovimのHEADをビルドしてインストールする方法(Mac)

Last updated at Posted at 2023-06-12

本記事は Vim 駅伝 の6/12の記事です。
前回は6/9で yukimemi さんの TypeScript で Vim / Neovim の設定を書く! です。
次回は6/14で kawarimidoll さんの Vim scriptで1回しか使えないコマンド・関数を定義する です。

はじめに

Homebrewで brew install nvim を実行してNeovimをインストールすると、Neovimの安定版がインストールされます。

しかしそれだと vim.iter 1vim.system 2 など master ブランチにマージされたPRの変更をすぐに使えませんし、 dropbar.nvim など一部のエクスペリメンタルなプラグインを使えません。
すでに vim.iter を使いこなしている某jpの高度な会話に着いていくこともできません。

master ブランチのHEADをビルドして、文字通り最先端のNeovimをインストールする方法を紹介します。

環境

  • OS:macOS Ventura 13.3.1
  • Homebrew:4.0.21
  • Neovim:v0.10.0-dev-509+g6e1fa16dd

初回セットアップ

最初のみ必要なセットアップを紹介します。

以下のWikiの通りに行っているので、英語が読める方はWikiを見るほうがいいと思います。

Xcode Command Line Toolsのインストール

Xcode Command Line Toolsをインストールします。

$ xcode-select --install

Homebrewのインストール

以下のページを参考にHomebrewをインストールします。

依存関係のインストール

Neovimのビルドに必要な依存関係をインストールします。

$ brew install ninja cmake gettext curl

Neovimのパスを通す(任意)

必要に応じてNeovimのパスを通します。
私は $HOME/.local/nvim にNeovimをインストールしています。

.bash_profile
+ # Neovim
+ export NEOVIM_HOME=$HOME/.local/nvim
+ if [ -d "${NEOVIM_HOME}" ]; then
+   export PATH="${NEOVIM_HOME}/bin:$PATH"
+ fi

既存のNeovimのアンインストール(任意)

必要に応じてすでにインストールされているNeovimをアンインストールします。
私はHomebrewでインストールしていたので、以下のコマンドを実行してアンインストールしました。

$ brew uninstall nvim

リポジトリのクローン

Neovimのリポジトリをクローンします。

$ mkdir neovim
$ cd neovim
$ git clone https://github.com/neovim/neovim
$ cd neovim

Neovimのビルドとインストール

初回セットアップが完了したら、Neovimをビルドしてインストールします。

リモートリポジトリから最新を取得

リモートリポジトリから最新の変更を取得します。

$ git fetch --prune origin
$ git rebase origin/master

Neovimのビルド

Neovimをビルドします。

CMAKE_BUILD_TYPERelease を指定するとリリースビルドします。
リリースビルドするとコンパイラが最適化し、最高のパフォーマンスとなります。

CMAKE_INSTALL_PREFIX でインストールするパスを指定できます。
sudo が不要な場所にインストールするのがオススメです。

BUNDLED_CMAKE_FLAG='-DUSE_BUNDLED_TS_PARSERS=OFF' は任意です。
指定するとTree-sitterのパーサーが含まれなくなります。
nvim-treesitter でパーサーを管理している場合、Neovimにバンドルされたパーサーは不要かもしれません。
${CMAKE_INSTALL_PREFIX}/lib/nvim/parser/ フォルダがなければ成功です。

$ make CMAKE_BUILD_TYPE=Release \
  CMAKE_INSTALL_PREFIX=$HOME/.local/nvim \
  BUNDLED_CMAKE_FLAG='-DUSE_BUNDLED_TS_PARSERS=OFF'

Neovimのインストール

Neovimをインストールします。

$ make install

バージョンの確認

Neovimのバージョンを確認します。
バージョンのサフィックスに -dev-{リビジョン番号}+g{コミットID} が付いていたら成功です。

$ nvim -v
NVIM v0.10.0-dev-509+g6e1fa16dd
Build type: Release
LuaJIT 2.1.0-beta3

      システム vimrc: "$VIM/sysinit.vim"
       省略時の $VIM: "/Users/uhooi/.local/nvim/share/nvim"

Run :checkhealth for more info

トラブルシューティング

トラブルシューティングです。

Xcode.appが存在しない

Xcodeをリネームや削除するとビルドできなくなります。

$ make CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=$HOME/.local/nvim
mkdir -p build
touch build/.ran-deps-cmake
ninja  -C .deps
ninja: Entering directory `.deps'
[2/2] cd /Users/uhooi/ghq/github.com/neovim/neovim/.deps && /opt/homebrew/Cellar/cmake/3.26.4/bi.../lib/lib*.dylib* -P /Users/uhooi/ghq/github.com/neovim/neovim/cmake.deps/cmake/RemoveFiles.cmake
ninja  -C build
ninja: Entering directory `build'
[0/2] Re-checking globbed directories...
ninja: error: '/Applications/Xcode-15.0.0-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/lib/libiconv.tbd', needed by 'bin/nvim', missing and no known rule to make it
make: *** [nvim] Error 1

私は Xcode-15.0.0-Beta.app を削除したらビルドできなくなりました。

前回のビルドで使った libiconv.tbd のパスをキャッシュしているようなので、 make distclean を実行してキャッシュを削除すると make のエラーが解消されます。

リポジトリを移動する

リポジトリのパスを移動するとビルドできなくなります。
一旦削除してクローンし直すと直ります。

おまけ

おまけです。

ビルドスクリプトの作成

私はNeovimのビルドとインストールを頻繁に行うので、ビルドスクリプトを作成してdotfilesリポジトリへコミットしています。

プラグインと言語サーバーの更新

私は毎朝Neovimのビルドのほかに、プラグインと言語サーバー、Treesitterのパーサーを更新しています。

:Lazy update
:MasonUpdate
:Mason
更新する言語サーバーで「u
:TSUpdate

HomebrewでHEADビルドする

Homebrewには --HEAD フラグがあるので、これを使うだけでHEADビルドができるようです。
私は手動ビルドしか行ったことがないですが、こちらのほうが楽です。

$ brew install nvim --HEAD

おわりに

これでNeovimのHEADをビルドしてインストールできました。
毎朝温かみのある手動ビルドをして、常に最新のNeovimを使っていきましょう :relaxed:

参考リンク

全体

Tree-sitter

  1. https://github.com/neovim/neovim/pull/23029

  2. https://github.com/neovim/neovim/pull/23827

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0