nvim
[!NOTE|label:references:]
different between nvim and vim
osx/linux:
~/.config/nvim/init.vim
windows:
%LOCALAPPDATA%\nvim\init.vim
install
[!NOTE]
dependencies
osx
gettext
: GNU internationalization (i18n) and localization (l10n) librarylibtermkey
: Library for processing keyboard entry from the terminallibuv
: Multi-platform support library with a focus on asynchronous I/Olibvterm
: C99 library which implements a VT220 or xterm terminal emulatorluajit
: Just-In-Time Compiler (JIT) for the Lua programming languageluv
: Bare libuv bindings for luamsgpack
: Library for a binary-based efficient data interchange formattree-sitter
: Parser generator tool and incremental parsing libraryunibilium
: Very basic terminfo library
$ brew deps --tree neovim neovim ├── gettext ├── libtermkey │ └── unibilium ├── libuv ├── libvterm ├── luajit ├── luv │ └── libuv ├── msgpack ├── tree-sitter └── unibilium
tarball
[!TIP]
osx: avoid
unknown developer
warning$ xattr -c ./nvim-macos.tar.gz # or $ xattr -p com.apple.quarantine ./nvim-macos.tar.gz
$ curl -fsSL https://github.com/neovim/neovim/releases/download/nightly/nvim-macos.tar.gz | tar xzf - -C /opt/nvim $ /opt/nvim/nvim-macos/bin/nvim $ sudo ln -sf /opt/nvim/nvim-macos /usr/local/nvim $ export NVIM_HOME=/usr/local/nvim $ export PATH=$NVIM_HOME/bin:$PATH
building from source
[!NOTE|label:references:]
osx
[!NOTE|label:issue with wget certificate]
macOS versions less than 10.10
$ brew install curl-ca-bundle $ echo CA_CERTIFICATE=$(brew --prefix curl-ca-bundle)/share/ca-bundle.crt >> ~/.wgetrc
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
# prepare
$ xcode-select --install
$ brew install ninja libtool automake cmake pkg-config gettext curl
# or
$ brew install cmake gettext lpeg luarocks luajit luv msgpack tree-sitter unibilium \
libtermkey libuv libvterm
# download
$ git clone --recurse-submodules git@github.com:neovim/neovim.git /opt/neovim && cd $_
# build
$ cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX=/usr/local/neovim \
-DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib \
-DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib \
-DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-Wno-dev \
-DBUILD_TESTING=OFF \
-DCMAKE_OSX_SYSROOT=$(xcrun --show-sdk-path)
$ cmake --build build
$ sudo cmake --install build
# verify
$ /usr/local/neovim/bin/nvim -V1 -v
NVIM v0.10.0-dev-2869+g4459e0cee
Build type: Release
LuaJIT 2.1.1710088188
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/usr/local/neovim/share/nvim"
Run :checkhealth for more info
# environment setup
$ NVIM_HOME=/usr/local/neovim
$ PATH=$NVIM_HOME/bin:$PATH
$ export NVIM_HOME PATH
# https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/n/neovim.rb
$ cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX=/usr/local/neovim \
-DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib \
-DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib \
-DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-Wno-dev \
-DBUILD_TESTING=OFF \
-DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk
$ /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc \
-O2 -g -Og -g -flto=thin \
-Wall \
-Wextra -pedantic \
-Wno-unused-parameter \
-Wstrict-prototypes -std=gnu99 \
-Wshadow \
-Wconversion \
-Wvla \
-Wdouble-promotion \
-Wmissing-noreturn \
-Wmissing-format-attribute \
-Wmissing-prototypes -fsigned-char -fstack-protector-strong \
-Wimplicit-fallthrough -fdiagnostics-color=always \
-Wl,-export_dynamic \
-DUNIT_TESTING \
-DHAVE_UNIBILIUM \
-D_GNU_SOURCE \
-DINCLUDE_GENERATED_DECLARATIONS \
-I/Users/runner/work/neovim/neovim/.deps/usr/include/luajit-2.1 \
-I/Users/runner/work/neovim/neovim/.deps/usr/include \
-I/Users/runner/work/neovim/neovim/build/src/nvim/auto \
-I/Users/runner/work/neovim/neovim/build/include \
-I/Users/runner/work/neovim/neovim/build/cmake.config \
-I/Users/runner/work/neovim/neovim/src \
-I/Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/include
# details
$ /usr/local/bin/nvim -V1 -v
NVIM v0.10.0-dev-2867+g7aa56370f
Build type: RelWithDebInfo
LuaJIT 2.1.1710088188
Compilation: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -O2 -g -Og -g -flto=thin -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wvla -Wdouble-promotion -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -fsigned-char -fstack-protector-strong -Wimplicit-fallthrough -fdiagnostics-color=always -Wl,-export_dynamic -DUNIT_TESTING -DHAVE_UNIBILIUM -D_GNU_SOURCE -DINCLUDE_GENERATED_DECLARATIONS -I/Users/runner/work/neovim/neovim/.deps/usr/include/luajit-2.1 -I/Users/runner/work/neovim/neovim/.deps/usr/include -I/Users/runner/work/neovim/neovim/build/src/nvim/auto -I/Users/runner/work/neovim/neovim/build/include -I/Users/runner/work/neovim/neovim/build/cmake.config -I/Users/runner/work/neovim/neovim/src -I/Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/include
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/usr/local/share/nvim"
Run :checkhealth for more info
build with older MacOS
$ make CMAKE_BUILD_TYPE=Release \ MACOSX_DEPLOYMENT_TARGET=10.13 \ DEPS_CMAKE_FLAGS="-DCMAKE_CXX_COMPILER=$(xcrun -find c++)"
more settings
$ brew unlink neovim $ /usr/bin/env /bin/ln -h -s -f /usr/local/neovim/bin/nvim /usr/local/bin/nvim $ /usr/bin/env /bin/ln -h -s -f /usr/local/neovim/bin/nvim /usr/local/bin/neovim $ /usr/bin/env /bin/ln -h -s -f /usr/local/neovim/lib/nvim /usr/local/lib/nvim $ /usr/bin/env /bin/ln -h -s -f /usr/local/neovim/share/nvim /usr/local/share/nvim
brew install -v --debug
brew install -v --debug
[!NOTE|label:references:]
# download
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.2.17-33-g1bbfe76\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 14.4.1\)\ curl/8.4.0 --header Accept-Language:\ en --retry 3 --fail --location --silent --head https://raw.githubusercontent.com/Homebrew/homebrew-core/841811d678fcfef856f693a2ec90add1625a4c12/Formula/n/neovim.rb
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.2.17-33-g1bbfe76\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 14.4.1\)\ curl/8.4.0 --header Accept-Language:\ en --retry 3 --fail --location --silent --head --request GET https://raw.githubusercontent.com/Homebrew/homebrew-core/841811d678fcfef856f693a2ec90add1625a4c12/Formula/n/neovim.rb
# clone
$ /usr/bin/env git --git-dir /Users/marslo/Library/Caches/Homebrew/neovim--git/.git status -s
$ /usr/bin/env git checkout -f master --
$ /usr/bin/env git --git-dir /Users/marslo/Library/Caches/Homebrew/neovim--git/.git rev-parse --short=7 HEAD
$ /usr/bin/env git --git-dir /Users/marslo/Library/Caches/Homebrew/neovim--git/.git show -s --format=\%cD
Wed, 10 Apr 2024 07:08:49 +0800
# build
# MacOSX15
$ cmake -S . -B build \
-DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib \
-DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib \
-DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib \
-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake \
-Wno-dev \
-DBUILD_TESTING=OFF \
-DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build build
$ cmake --install build
# MacOSX14
$ cmake -S . -B build \
-DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib \
-DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib \
-DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib \
-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-f494084 \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-Wno-dev \
-DBUILD_TESTING=OFF \
-DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk
$ cmake --build build
$ cmake --install build
# -- package downlaod --
# downloading https://ghcr.io/v2/homebrew/core/lpeg/manifests/1.1.0-1
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Accept:\ application/vnd.oci.image.index.v1+json --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/5906a2786f22dd74352335366e9b152ed78248ffa0b9aefb61209bbcdfb96581--lpeg-1.1.0-1.bottle_manifest.json.incomplete --location https://ghcr.io/v2/homebrew/core/lpeg/manifests/1.1.0-1
# downloading https://ghcr.io/v2/homebrew/core/lpeg/blobs/sha256:8d5ac91544867d83ce0ec6f407e6a3ead572ccbd523234d2673322da355435fb
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/64b9165704b80c38d985d9114800b67538d74206e753479a064d1de4274783ae--lpeg--1.1.0.sonoma.bottle.1.tar.gz.incomplete --location https://ghcr.io/v2/homebrew/core/lpeg/blobs/sha256:8d5ac91544867d83ce0ec6f407e6a3ead572ccbd523234d2673322da355435fb
# downloading https://ghcr.io/v2/homebrew/core/luajit/manifests/2.1.1736781742
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Accept:\ application/vnd.oci.image.index.v1+json --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/24274d382a6b6a99d66237d64e3c2780fcd4fc179873af1c030640f8fa3272c7--luajit-2.1.1736781742.bottle_manifest.json.incomplete --location https://ghcr.io/v2/homebrew/core/luajit/manifests/2.1.1736781742
# downloading https://ghcr.io/v2/homebrew/core/luajit/blobs/sha256:fbcaa9ad4a184e2e4f1926f46e9917dbf81b7809eeb373eb9478e1ca57fbc572
$ /uSr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/44e0a7fb4ea0b9964daff356cd16a93de40d4bf096cce47fada80235095eee61--luajit--2.1.1736781742.sonoma.bottle.tar.gz.incomplete --location https://ghcr.io/v2/homebrew/core/luajit/blobs/sha256:fbcaa9ad4a184e2e4f1926f46e9917dbf81b7809eeb373eb9478e1ca57fbc572
# downloading https://ghcr.io/v2/homebrew/core/luv/manifests/1.50.0-0
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Accept:\ application/vnd.oci.image.index.v1+json --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/f7df8fdec3d84a4438fb414d9be8a6412a897c493ed21aa06a3704137c3d9abf--luv-1.50.0-0.bottle_manifest.json.incomplete --location https://ghcr.io/v2/homebrew/core/luv/manifests/1.50.0-0
# downloading https://ghcr.io/v2/homebrew/core/luv/blobs/sha256:29aa7d58757c2219fc4f5a80ee7b9626e24830536ee03fa44a50da5a19b16c4a
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/96e3e0360db63fef9052f78aa5cb84c1124897bdd06071ace3be33c74d11df19--luv--1.50.0-0.sonoma.bottle.tar.gz.incomplete --location https://ghcr.io/v2/homebrew/core/luv/blobs/sha256:29aa7d58757c2219fc4f5a80ee7b9626e24830536ee03fa44a50da5a19b16c4a
# downloading https://ghcr.io/v2/homebrew/core/unibilium/manifests/2.1.2
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Accept:\ application/vnd.oci.image.index.v1+json --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/2d9cd8927f7cd1da5e432d934cb2f5c4d09314fba2531033031bca58d817cb1c--unibilium-2.1.2.bottle_manifest.json.incomplete --location https://ghcr.io/v2/homebrew/core/unibilium/manifests/2.1.2
# downloading https://ghcr.io/v2/homebrew/core/unibilium/blobs/sha256:19a58769977601b8bbc47959efeefb4bad5cc938d7dcde0c083c8227d8296026
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --fail --retry 3 --header Authorization:\ Bearer\ QQ== --remote-time --output /Users/marslo/Library/Caches/Homebrew/downloads/a3d626c1761646e68b628b37bedc590b31a45e036fce5d7dbbb6a95eef2eb3bf--unibilium--2.1.2.sonoma.bottle.tar.gz.incomplete --location https://ghcr.io/v2/homebrew/core/unibilium/blobs/sha256:19a58769977601b8bbc47959efeefb4bad5cc938d7dcde0c083c8227d8296026
# downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/e0883566a68ab8403f399fc4e616977ecdfe7c66/Formula/n/neovim.rb
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --retry 3 -V
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --retry 3 --fail --location --silent --head https://raw.githubusercontent.com/Homebrew/homebrew-core/e0883566a68ab8403f399fc4e616977ecdfe7c66/Formula/n/neovim.rb
$ /usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.4.19-77-g7ce65c2\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 15.1.1\)\ curl/8.7.1 --header Accept-Language:\ en --retry 3 --fail --location --silent --head --request GET --http1.1 https://raw.githubusercontent.com/Homebrew/homebrew-core/e0883566a68ab8403f399fc4e616977ecdfe7c66/Formula/n/neovim.rb
# cloning https://github.com/neovim/neovim.git
$ /usr/bin/env git --git-dir /Users/marslo/Library/Caches/Homebrew/neovim--git/.git status -s
# installing neovim --head
$ /usr/bin/env hdiutil imageinfo -format /Users/marslo/Library/Caches/Homebrew/neovim--git
$ /usr/bin/env cp -pR /Users/marslo/Library/Caches/Homebrew/neovim--git/.git-blame-ignore-revs /Users/marslo/Library/Caches/Homebrew/neovim--git/.clangd /Users/marslo/Library/Caches/Homebrew/neovim--git/cmake.config /Users/marslo/Library/Caches/Homebrew/neovim--git/.styluaignore /Users/marslo/Library/Caches/Homebrew/neovim--git/cmake.deps /Users/marslo/Library/Caches/Homebrew/neovim--git/CMakeLists.txt /Users/marslo/Library/Caches/Homebrew/neovim--git/test /Users/marslo/Library/Caches/Homebrew/neovim--git/cmake /Users/marslo/Library/Caches/Homebrew/neovim--git/Makefile /Users/marslo/Library/Caches/Homebrew/neovim--git/.luacheckrc /Users/marslo/Library/Caches/Homebrew/neovim--git/.clang-tidy /Users/marslo/Library/Caches/Homebrew/neovim--git/runtime /Users/marslo/Library/Caches/Homebrew/neovim--git/cmake.packaging /Users/marslo/Library/Caches/Homebrew/neovim--git/INSTALL.md /Users/marslo/Library/Caches/Homebrew/neovim--git/contrib /Users/marslo/Library/Caches/Homebrew/neovim--git/.editorconfig /Users/marslo/Library/Caches/Homebrew/neovim--git/README.md /Users/marslo/Library/Caches/Homebrew/neovim--git/CMakePresets.json /Users/marslo/Library/Caches/Homebrew/neovim--git/.luarc.json /Users/marslo/Library/Caches/Homebrew/neovim--git/.gitignore /Users/marslo/Library/Caches/Homebrew/neovim--git/CONTRIBUTING.md /Users/marslo/Library/Caches/Homebrew/neovim--git/BUILD.md /Users/marslo/Library/Caches/Homebrew/neovim--git/BSDmakefile /Users/marslo/Library/Caches/Homebrew/neovim--git/scripts /Users/marslo/Library/Caches/Homebrew/neovim--git/.clang-format /Users/marslo/Library/Caches/Homebrew/neovim--git/.github /Users/marslo/Library/Caches/Homebrew/neovim--git/.gitattributes /Users/marslo/Library/Caches/Homebrew/neovim--git/.cirrus.yml /Users/marslo/Library/Caches/Homebrew/neovim--git/.luacov /Users/marslo/Library/Caches/Homebrew/neovim--git/.mailmap /Users/marslo/Library/Caches/Homebrew/neovim--git/.git /Users/marslo/Library/Caches/Homebrew/neovim--git/LICENSE.txt /Users/marslo/Library/Caches/Homebrew/neovim--git/MAINTAIN.md /Users/marslo/Library/Caches/Homebrew/neovim--git/.stylua.toml /Users/marslo/Library/Caches/Homebrew/neovim--git/src /private/tmp/homebrew-unpack-20250201-3864-3o66e4
...
$ /usr/bin/env tar --extract --no-same-owner --file /Users/marslo/Library/Caches/Homebrew/downloads/39864b4f45c47ab339c58d6b5a5cae1916dbe2f3815880744242b0956624e829--tree-sitter-c-0.23.2.tar.gz --directory /private/tmp/homebrew-unpack-20250201-3864-fjuv0m
# -- dependencies build --
# treesitter-c
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-c -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-c -DPARSERLANG=c -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-c
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-c
# treesitter-lua
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-lua -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-lua -DPARSERLANG=lua -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-lua
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-lua
# treesitter-vim
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-vim -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vim -DPARSERLANG=vim -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vim
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vim
# treesitter-vimdoc
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-vimdoc -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vimdoc -DPARSERLANG=vimdoc -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vimdoc
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-vimdoc
# treesitter-query
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-query -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-query -DPARSERLANG=query -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-query
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-query
# treesitter-markdown
$ cmake -S /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/src/treesitter-markdown -B /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-markdown -DPARSERLANG=markdown -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-markdown
$ cmake --install /private/tmp/neovim-20250201-3864-gtr04h/deps-build/build/treesitter-markdown
# -- neovim build --
$ cmake -S . -B build -DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib -DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib -DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-0985e78 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
$ cmake --build build
$ cmake --install build
# -- link --
$ ln -s ../Cellar/neovim/HEAD-0985e78/bin/nvim nvim
$ ln -s ../../../../../Cellar/neovim/HEAD-0985e78/share/icons/hicolor/128x128/apps/nvim.png nvim.png
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/af/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ca/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/cs/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/cs.cp1250
$ mkdir -p /usr/local/share/locale/cs.cp1250/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/cs.cp1250/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/da/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/de/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/en_GB/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/eo/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/es/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/fi/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/fr/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ga/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/it/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ja/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/ja.euc-jp
$ mkdir -p /usr/local/share/locale/ja.euc-jp/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ja.euc-jp/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/ko.UTF-8
$ mkdir -p /usr/local/share/locale/ko.UTF-8/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ko.UTF-8/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/nb/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/nl/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/no
$ mkdir -p /usr/local/share/locale/no/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/no/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/pl.UTF-8
$ mkdir -p /usr/local/share/locale/pl.UTF-8/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/pl.UTF-8/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/pt_BR/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/ru/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/sk/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/sk.cp1250
$ mkdir -p /usr/local/share/locale/sk.cp1250/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/sk.cp1250/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/sv/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/tr/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/uk/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/vi/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/zh_CN.UTF-8
$ mkdir -p /usr/local/share/locale/zh_CN.UTF-8/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/zh_CN.UTF-8/LC_MESSAGES/nvim.mo nvim.mo
$ mkdir -p /usr/local/share/locale/zh_TW.UTF-8
$ mkdir -p /usr/local/share/locale/zh_TW.UTF-8/LC_MESSAGES
$ ln -s ../../../../Cellar/neovim/HEAD-0985e78/share/locale/zh_TW.UTF-8/LC_MESSAGES/nvim.mo nvim.mo
$ ln -s ../../../Cellar/neovim/HEAD-0985e78/share/man/man1/nvim.1 nvim.1
$ ln -s ../Cellar/neovim/HEAD-0985e78/share/nvim nvim
$ ln -s ../Cellar/neovim/HEAD-0985e78/lib/nvim nvim
uninstall
$ sudo cmake --build build/ --target uninstall
package manager
# osx
$ brew install nvim
# nvim head
$ brew install --HEAD utf8proc
$ brew install --HEAD tree-sitter
$ brew install --HEAD neovim
# ubuntu
$ sudo add-apt-repository ppa:neovim-ppa/unstable
$ sudo add-apt-repository ppa:neovim-ppa/stable
$ sudo apt update
$ sudo apt install neovim
$ apt-cache madison neovim
neovim | 0.10.0~ubuntu1+git202401142109-310fb2efc-c60402a16-3c3072a0a~ubuntu20.04.1 | https://ppa.launchpadcontent.net/neovim-ppa/unstable/ubuntu focal/main amd64 Packages
neovim | 0.7.2-3~bpo22.04.1~ppa1 | https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu jammy/main amd64 Packages
neovim | 0.6.1-3 | http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
# or
$ curl -fsSL -O http://archive.ubuntu.com/ubuntu/pool/universe/n/neovim/neovim_0.9.5-6ubuntu2_amd64.deb
$ sudo dpkg -i neovim_0.9.5-6ubuntu2_amd64.deb
brew install --head
[!NOTE|label:references:]
$ brew install --HEAD utf8proc $ brew install tree-sitter --HEAD $ brew install nvim --HEAD --debug -v # or $ brew install --build-from-source --HEAD --force --fetch-HEAD --keep-tmp neovim -v --debug # verify $ $(brew --cellar nvim)/*/bin/nvim -V1 -v NVIM v0.11.0-dev-1668+g0985e784d8-Homebrew Build type: Release LuaJIT 2.1.1736781742 system vimrc file: "$VIM/sysinit.vim" fall-back for $VIM: "/usr/local/Cellar/neovim/HEAD-0985e78/share/nvim" Run :checkhealth for more info
[!NOTE|label:to get macOS SDK:]
# handle tree-sitter-c-0.23.0.tar.gz $ /usr/bin/env tar --extract --no-same-owner --file /Users/marslo/Library/Caches/Homebrew/downloads/7afcc045b55375a996ccb8e98606e426e9c8a5465e82babf7997513a7763e077--tree-sitter-c-0.23.0.tar.gz --directory /private/tmp/homebrew-unpack20241014-59765-o7ouz3 $ /usr/bin/env cp -al /private/tmp/homebrew-unpack20241014-59765-o7ouz3/tree-sitter-c-0.23.0 /private/tmp/treesitter-c-20241014-59765-41iwid # deps: treesitter-c $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-c -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-c -DPARSERLANG=c -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-c $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-c # deps: treesitter-lua $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-lua -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-lua -DPARSERLANG=lua -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-lua $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-lua # deps: treesitter-vim $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-vim -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vim -DPARSERLANG=vim -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vim $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vim # deps: treesitter-vimdoc $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-vimdoc -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vimdoc -DPARSERLANG=vimdoc -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vimdoc $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-vimdoc # deps: treesitter-query $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-query -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-query -DPARSERLANG=query -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-query $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-query # deps: treesitter-markdown $ cmake -S /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/src/treesitter-markdown -B /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-markdown -DPARSERLANG=markdown -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-markdown $ cmake --install /private/tmp/neovim-20241014-59765-vs8k2v/deps-build/build/treesitter-markdown # nvim $ cmake -S . \ -B build \ -DLUV_LIBRARY=/usr/local/opt/luv/lib/libluv.dylib \ -DLIBUV_LIBRARY=/usr/local/opt/libuv/lib/libuv.dylib \ -DLPEG_LIBRARY=/usr/local/opt/lpeg/lib/liblpeg.dylib \ -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/neovim/HEAD-4846bf0_1 \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_FIND_FRAMEWORK=LAST \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/usr/local/Homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake \ -Wno-dev \ -DBUILD_TESTING=OFF \ -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk $ cmake --build build
windows
dependencies
[!NOTE|label:references:]
C Compiler
llvm
# C:\Program Files\LLVM\bin > choco install llvm # https://gist.github.com/mcandre/5ceb67ad44f6b974d33bcddedcb16e89 > choco install cmake
mingw
[!TIP|label:packages:]
# C:\ProgramData\mingw64\mingw64 > choco install mingw
msvc
[!TIP|label:packages:]
chocolatey-dotnetfx.extension
:C:\ProgramData\chocolatey\extensions\chocolatey-dotnetfx
dotnetfx
references:
# C:\Program Files (x86)\Microsoft Visual Studio\Installer > choco install visualstudio2022buildtools # former version > choco install visualstudio2019buildtools # for clang/llvm installation # C:\Program Files (x86)\Microsoft Visual Studio\Installer > choco install visualstudio-installer
nvim
> curl -fsSL -O https://github.com/neovim/neovim/releases/latest/download/nvim-win64.msi REM install via msiexec as administrator > msiexec /i nvim-setup.exe [/quiet] [/passive] [/norestart] [/log <log file>] [/l* <log file>]
neovim-nightly
[!NOTE|label:references:]
$ brew unlink neovim
Unlinking /usr/local/Cellar/neovim/HEAD-f494084... 35 symlinks removed.
$ brew tap benjiwolff/neovim-nightly
$ brew install neovim-nightly [ -v --debug ]
# verify
$ /usr/local/Caskroom/neovim-nightly/nightly-7aa5637/nvim-macos-x86_64/bin/nvim -V1 -v
NVIM v0.10.0-dev-2867+g7aa56370f
Build type: RelWithDebInfo
LuaJIT 2.1.1710088188
Compilation: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -O2 -g -Og -g -flto=thin -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wvla -Wdouble-promotion -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -fsigned-char -fstack-protector-strong -Wimplicit-fallthrough -fdiagnostics-color=always -Wl,-export_dynamic -DUNIT_TESTING -DHAVE_UNIBILIUM -D_GNU_SOURCE -DINCLUDE_GENERATED_DECLARATIONS -I/Users/runner/work/neovim/neovim/.deps/usr/include/luajit-2.1 -I/Users/runner/work/neovim/neovim/.deps/usr/include -I/Users/runner/work/neovim/neovim/build/src/nvim/auto -I/Users/runner/work/neovim/neovim/build/include -I/Users/runner/work/neovim/neovim/build/cmake.config -I/Users/runner/work/neovim/neovim/src -I/Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/include
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/usr/local/share/nvim"
Run :checkhealth for more info
No such file or directory @ rb_file_s_rename
[!TIP|label:failure details]
error: benjiwolff/neovim-nightly/neovim-nightly: No such file or directory @ rb_file_s_rename - (/usr/local/Caskroom/neovim-nightly/nightly-7aa5637, /usr/local/Caskroom/neovim-nightly/nightly-7aa5637.upgrading)
# solution $ brew remove neovim-nightly $ rm -rf /usr/local/Caskroom/neovim-nightly $ brew install neovim-nightly [ -v --debug --display-times ]
initialize and configure
[!TIP]
:checkhealth
$ python3 -m pip install --user --upgrade pynvim
$ gem install neovim
$ npm install -g neovim
for venv
$ python3 -m pip install --upgrade pynvim # if necesssary $ python3 -m pip install --upgrade greenlet # verify $ command python3 -c 'import sys; sys.path = [p for p in sys.path if p != ""]; import neovim; print(neovim.__file__)' # to list all packages $ pip list -v
init.vim/init.lua
[!NOTE|label:references:]
create init.vim
:exe 'edit '.stdpath('config').'/init.vim' :write ++p
init.lua
-- ~/.config/nvim/init.lua vim.cmd( 'set runtimepath^=~/.vim runtimepath+=~/.vim/after' ) vim.cmd( 'let &packpath = &runtimepath' ) vim.cmd( 'source ~/.vimrc' ) vim.cmd( 'autocmd TextYankPost * silent! lua vim.highlight.on_yank {on_visual=false}' )
init.vim
# ~/.config/nvim/init.vim set runtimepath^=~/.vim runtimepath+=~/.vim/after let &packpath = &runtimepath source ~/.vimrc autocmd TextYankPost * silent! lua vim.highlight.on_yank {on_visual=false}
config
[!NOTE|label:references:]
youtube courses
check status
:checkhealth
config.lua
config.lua
[!NOTE|label:references:]
$ cat ~/.config/nvim/lua/config.lua
lua require('config')
standard-path
[!NOTE|label:references:]
get data
:echo stdpath("xxx") " i.e.: :echo stdpath('config') /Users/marslo/.config/nvim
using in
init.lua
-- ~/.config/nvim/init.lua -- to setup undodir to `$HOME/.config/nvim/undo`. debug via `:verbose set undodir` vim.opt.undodir = vim.fn.stdpath('config') .. '/undo' -- or specific path vim.opt.undodir = vim.fn.expand( '~/.vim/undo' )
stdpath("config")
$HOME/.config/nvim
%LOCALAPPDATA%\nvim
stdpath("data")
$HOME/.local/share/nvim
%LOCALAPPDATA%\nvim-data
stdpath("state")
$HOME/.local/state/nvim
%LOCALAPPDATA%\nvim-data
stdpath("cache")
$HOME/.cache/nvim
%LOCALAPPDATA%\Temp\nvim
stdpath("log")
$HOME/.local/state/nvim/log
%LOCALAPPDATA%\nvim-data\log
stdpath("config_dirs")
['/etc/xdg/nvim']
-
stdpath("data_dirs")
['/usr/local/share/nvim', '/usr/share/nvim']
-
using linux slash in windows system
[!NOTE|label:references:]
:set shellslash :echo stdpath('data') C:/Users/marslo/Appdata/Local/nvim-data
list parser paths
:echo nvim_get_runtime_file('parser/*.so', v:true)
['/Users/marslo/.vim/plugged/nvim-treesitter/parser/bash.so', '/Users/marslo/.vim/plugged/nvim-treesitt
er/parser/c.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/cmake.so', '/Users/marslo/.vim/plug
ged/nvim-treesitter/parser/css.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/diff.so', '/User
s/marslo/.vim/plugged/nvim-treesitter/parser/dockerfile.so', '/Users/marslo/.vim/plugged/nvim-treesitte
r/parser/gitcommit.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/gitignore.so', '/Users/marsl
o/.vim/plugged/nvim-treesitter/parser/git_config.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parse
r/groovy.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/ini.so', '/Users/marslo/.vim/plugged/n
vim-treesitter/parser/java.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/jq.so', '/Users/mars
lo/.vim/plugged/nvim-treesitter/parser/json.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/lua
.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/markdown.so', '/Users/marslo/.vim/plugged/nvim
-treesitter/parser/python.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/query.so', '/Users/ma
rslo/.vim/plugged/nvim-treesitter/parser/ssh_config.so', '/Users/marslo/.vim/plugged/nvim-treesitter/pa
rser/vim.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/vimdoc.so', '/Users/marslo/.vim/plugge
d/nvim-treesitter/parser/xml.so', '/Users/marslo/.vim/plugged/nvim-treesitter/parser/yaml.so', '/usr/lo
cal/Caskroom/neovim-nightly/latest/nvim-macos-x86_64/lib/nvim/parser/c.so', '/usr/local/Caskroom/neovim
-nightly/latest/nvim-macos-x86_64/lib/nvim/parser/lua.so', '/usr/local/Caskroom/neovim-nightly/latest/n
vim-macos-x86_64/lib/nvim/parser/markdown.so', '/usr/local/Caskroom/neovim-nightly/latest/nvim-macos-x8
6_64/lib/nvim/parser/markdown_inline.so', '/usr/local/Caskroom/neovim-nightly/latest/nvim-macos-x86_64/
lib/nvim/parser/query.so', '/usr/local/Caskroom/neovim-nightly/latest/nvim-macos-x86_64/lib/nvim/parser
/vim.so', '/usr/local/Caskroom/neovim-nightly/latest/nvim-macos-x86_64/lib/nvim/parser/vimdoc.so']
lua
[!NOTE|label:references]
:lua vim.print(package.loaded)
:lua print(_VERSION)
Lua 5.1
:lua =jit.version
LuaJIT 2.1.1703358377
true color
[!NOTE|label:references:]
:echo &termguicolors
1
$ echo $TERM $COLORTERM
xterm-256color truecolor
force 16 colors
$ TERM= COLORTERM= nvim
config path
[!NOTE]
SYNTAX FILES:
~/.config/nvim/syntax
ruby :
~/.config/nvim/ruby
math
:echo abs(1.456)
1.456
:echo abs(-5.456)
5.456
:echo acos(0)
1.570796
:echo acos(-0.5)
2.094395
:echo asin(0.8)
0.927295
:echo asin(-0.5)
-0.523599
:echo cosh(0.5)
1.127626
:echo cosh(-0.5)
1.127626
" exponential
:echo exp(2)
7.389056
:echo exp(-1)
0.367879
" x/y
:echo fmod(12.33, 1.22)
0.13
" smallest integral value greater than or equal to {expr} as a Float
:echo ceil(1.456)
2.0
:echo ceil(-5.456)
-5.0
" largest integral value less than or equal to
:echo floor(1.856)
1.0
:echo floor(-5.456)
-6.0
assert
:echo assert_equal('foo', 'bar')
1
:echo assert_match('^f.*o$', 'foobar')
1
list
:echo blob2list(0z0102.0304)
[1, 2, 3, 4]
:echo blob2list(0z)
[]
exists
:let l = [1, 2, 3] :echo exists("l[5]") 0 :echo exists("l[2]") 1
basic
:let newlist = [1, 2, 3] + [4, 5] :echo newlist [1, 2, 3, 4, 5] :call extend(newlist, [2, 3], 1) :echo newlist [1, 2, 3, 2, 3, 4, 5] " sort :echo sort(extend(newlist, [7, 5])) [1, 2, 3, 4, 5, 5, 7] " flatten :echo flatten([1, [2, [3, 4]], 5]) [1, 2, 3, 4, 5] :echo flatten([1, [2, [3, 4]], 5], 1) [1, 2, [3, 4], 5]
system
api info
:lua vim.print(vim.fn.api_info()) { error_types = { Exception = { id = 0 }, Validation = { id = 1 } }, ... }
exists
:echo exists("&mouse") 1 :echo exists("$HOSTNAME") 0 :echo exists("*strftime") 1 :echo exists("*s:MyFunc") 0 :echo exists("*MyFunc") 0 :echo exists("*v:lua.Func") 0 :echo exists("bufcount") 0 :echo exists(":Make") 0 :echo exists(":make") 2 :echo exists("#CursorHold") 1 :echo exists("#BufReadPre#*.gz") 1 :echo exists("#filetypeindent") 1 :echo exists("#filetypeindent#FileType") 1 :echo exists("#filetypeindent#FileType#*") 1 :echo exists("##ColorScheme") 1
file
:echo filereadable('~/.vimrc') 0 :echo filereadable(expand('~/.vimrc')) 1 " get first line :getline(1) <!-- START doctoc generated TOC please keep comment here to allow auto update --> " get current line :echo getline(".") " get matches :echo getmatches() " more :let m = getmatches() :call clearmatches() :echo getmatches()
returns the character index of the column position
" + cursor " v :echo charcol('.') 22 :echo col('.') 22
line length
" corsor can be anywhere of following line :echo col("$") 17
env
:echo has_key(environ(), 'HOME') 1 :echo index(keys(environ()), 'HOME', 0, 1) != -1 1 :echo escape('c:\program files\vim', ' \') c:\\program\ files\\vim
execute
:echo execute('echon "foo"') foo :echo execute(['echon "foo"', 'echon "bar"']) foobar :echo execute('args')->split("\n") ['[nvim.md] ']
path
:echo expandcmd('make %<.o') make nvim.o :echo expandcmd('make %<.o', {'errmsg': v:true}) make nvim.o :echo fnameescape('+some str%nge|name') \+some\ str\%nge\|name :let fname = '+some str%nge|name' :exe "edit " .. fnameescape(fname) :echo fnamemodify("main.c", ":p:h") /home/marslo/ibook/docs/vim
others
buffer name
:echo bufname("#") nvim.md :echo bufname("#") cmd
buffer number
:echo "A window containing buffer 1 is " .. (bufwinnr(1)) A window containing buffer 1 is 1 :echo "A window containing buffer 1 is " .. (bufwinid(1)) A window containing buffer 1 is 1000
others
:echo byteidx('a😊😊', 2) 5 :echo byteidx('a😊😊', 2, 1) 1 :echo byteidx('a😊😊', 3, 1) 5 :let s = 'e' .. nr2char(0x301) :echo byteidx(s, 1) 3 :echo byteidxcomp(s, 1) 1 :echo byteidxcomp(s, 2) 3
Last updated
Was this helpful?