Vim関連情報

neovim とは何か?

Neovimとは何か?
記事内に広告が含まれています。
スポンサードリンク

vim をベースとしたエディタ、いわゆる Vim系エディタ / Vimクローン / Vimフォークには様々な種類があります。

その中でも2015年以降にもっとも存在感を高めているのが neovim です。

この neovim を理解しようとすると、それぞれが多彩な表現をされていて、イマイチふに落ちません。

そこでこの記事では、neovim について Vim 初心者でも分かりやすく理解できるように詳しく紹介します。

スポンサードリンク

neovim とは何か?

Windows版Neovim(neovim-qt.exe)
Windows版Neovim(neovim-qt.exe)

neovim は、拡張性と使いやすさのために刷新したVim派生テキストエディタです。つまり、過去に改善を積み重ねてきた Vim を作り直し、スリム化とモダンな機能を搭載した新たな Vim ということになります。

この説明で理解できるなら、この記事にたどり着いていないのではないでしょうか。

そこで、いくつか neovim を表現している記事を集めてみました。

neovim は nvim とよく略されます。また、頭文字が大文字(Neovim)だったり、小文字(neovim)だったり、表記がまちまちです。本サイトでは小文字を採用しています。

公式サイトの「neovim」

公式サイトでは下記のように表現されています。

Neovim is a refactor, and sometimes redactor, in the tradition of Vim (which itself derives from Stevie). It is not a rewrite but a continuation and extension of Vim. Many clones and derivatives exist, some very clever—but none are Vim. Neovim is built for users who want the good parts of Vim, and more.

About – Neovim
日本語訳

Neovim は、Steie に由来する Vim の伝統のリファクタであり、時にはリアクターです。これは書き換えではなく、Vim の継続と拡張です。多くのクローンと派生が存在し、非常に巧妙なものもありますが、それらは Vim とはいえません。neovim は、Vimの良い部分を望むユーザーのために構築されています。

あくまでコントリビュータによる理念なので、実態としては…というのはありますが、こういうものだそうです。上記のページには、目標が記載されているので、もっと深く知りたい人は読んでおくと良いでしょう。

それよりも、次のように目指していないことも明確に記載されています。

Non-goals
* Turn Vim into an IDE
* Limit third-party applications (such as IDEs!) built with Neovim
* Deprecate VimL
* POSIX vi-compatibility

About – Neovim
日本語訳

非目標

  • Vim を IDE に変換する
  • Neovim で構築されたサードパーティ製アプリケーション (IDE など) を制限する
  • 非推奨 VimL
  • POSIX の互換性

これを理解することが、他の Vim派生エディタとの違いとして理解するのには役立ちそうです。個人的には、POSIXの互換性は目指さず、IDE化していくわけではないという点が差別化として大きいように感じました。

GitHub の 「neovimとは?」

neovim プロジェクトの GitHub では下記のように表現されています。

Neovim is a project that seeks to aggressively refactor Vim in order to:
* Simplify maintenance and encourage contributions
* Split the work between multiple developers
* Enable advanced UIs without modifications to the core
* Maximize extensibility

neovim/neovim: Vim-fork focused on extensibility and usability
日本語訳

Neovimは、次の目的でVimを積極的にリファクタリングするプロジェクトです。

  • メンテナンスを簡素化し、貢献を奨励する
  • 複数の開発者間で作業を分割する
  • コアを変更せずに高度なUIを有効にする
  • 拡張性を最大化

こちらの方が位置付けについて、もう少し明確に表しているように感じますね。

しかしまだまだ分かりにくい気がします。

メディア記事による「neovimとは?」

以前、neovim v0.3 がリリースされた際の記事には、次のように紹介されています。

NeovimはVimの良い部分はそのままに拡張性と使い勝手にフォーカスしたというテキストエディタ。コアを改変することなく高度なUIを導入し、非同期のジョブ管理など複数の開発者で作業を分ける機能も備え、メンテナンスも簡便にした。clojure、lisp、go、haskell、lua、javascript、perl、python、ruby、rustなどの言語にAPIを介してアクセスできる。ほとんどのVimのプラグインと互換性があるという。

Vimフォークのテキストエディタ「Neovim 0.3」公開 | OSDN Magazine

さすがにメディア記事らしく、分かりやすい表現がされていますね。

結局 neovim の位置付けとは

筆者が理解する上では下記の通りです。

  • メンテナーを複数人で分担して開発を高速化していて、先進的な機能の導入に積極的
  • 目指すは「Vim の置き換え」ではなく「Vim 拡大」 not「IDE化」
  • 標準状態で有効になってる機能が多い

今時点の実態はともかく、このような目指す方向性が大違いのようです。これが分かると利用するかの可否判断しやすいですね。

正直なところ、基本機能部分に大差があるわけではありません。一方で、「新しい機能をバンバン使いたい!」という Vimmer には向いているのは間違いなさそうです。

neovim の特徴

neovim を理解する上では、vim との違いを明確にしていくのが良いと思いますので、下記にまとめました。

機能比較

特徴的な機能の差分については、下記となります。なお、標準状態かつプラグイン無しの場合、Linux / Windows版という前提です。

主な実装機能(差分のみ)

比較軸 neovim vim 8.1
API実装
非同期処理標準搭載要プラグイン
XDGサポート採用不採用
リモートプラグイン採用不採用
:checkhealth採用不採用
:Man採用不採用

標準設定(差分のみ)

比較軸 neovim vim 8.1
設定ファイル$XDG_CONFIG_HOME/nvim/init.vim
(Windows: %XDG_CONFIG_HOME%\nvim\init.vim)
~/.vimrc
(Windows: %USERPROFILE%\_vimrc)
関連ディレクトリ$XDG_CONFIG_HOME/nvim
(Windows: %XDG_CONFIG_HOME%\nvim\)
~/.vim/
(Windows: %USERPROFILE%\vim\)
セッション情報$XDG_DATA_HOME/nvim/shada/main.shada
(Windows: %XDG_DATA_HOME%\nvim\shada\main.shada)
~/.viminfo
(Windows: %USERPROFILE%\.viminfo)
シンタックスハイライト
(Syntax highlighting)
有効無効
:filetype plugin indent on有効無効
autoindent有効無効
autoread有効無効
backupdir$XDG_DATA_HOME/.local/share/nvim/backup
(Windows: %XDG_DATA_HOME%\nvim\shada\main.shada)
.,~/tmp,~/
belloffall設定無し
completei.,w,b,u,t,i
cscopeverbose有効無効
directory$XDG_DATA_HOME/.local/share/nvim/swap
(Windows: %XDG_DATA_HOME%\nvim\swap) 自動作成
./~/tmp,/var/tmp,/tmp
displaylastline,msgseptruncate
formatoptionstcqjtcq
history10000200
hlsearch有効無効
langremap無効無効
laststatus21
listcharstab:> ,trail:–,nbsp:+eol:$
sessionoptionsoptions除くoptions含む
shortmessF含む、S除くfilnxtToOS
sidescroll10
smarttab有効無効
tabpagemax5010
tags./tags;,tags./tags,./TAGS,tags,TAGS
ttimeoutlen50100
ttyfast常時有効無効
undodir$XDG_DATA_HOME/.local/share/nvim/undo
(Windows: %XDG_DATA_HOME%\nvim\undo) 自動作成
カレントディレクトリ
viminfo! 含む! 含まない
wildoptionspum,tagfile無効
man.vim プラグイン有効無効
matchit プラグイン有効無効

バージョンによっては、:terminal のように Vim 本体が取り入れた機能もあるため、これらの機能差は永続的なものとは言えない点は注意が必要です。

また、あくまでデフォルト値ですので、設定ファイルで設定すれば有効になります。しかし、もし有効にしたい設定値がデフォルト有効であれば、それだけ設定ファイルの行数を減らせるのは良い点といえます。

nvim から提供されている詳細な比較情報は、こちらで公開されています。Vimscriptで利用する設定値や細かいコマンドの違いはこちらをご覧ください。

Vim_diff - Neovim docs
Neovim user documentation

思想・開発体制の比較

比較軸neovimvim
開発体制コントリビュータ多数制コミッター1人体制(Bran Moolenaar氏)
フル開発者有り(参照 :help donate)無し
思想革新的(Vimとの比較上)保守的

経緯

neovim 開発の経緯を知っておくのは理解を深める上で役に立ちます。とはいえ、年表があるわけではないので、様々な情報から拾ったものを時系列に羅列してみました。

2015年neovim v0.1 リリース
2016年
2017年neovim v0.2 リリース
Vimconf 2017 では、Vimmer の30〜40%が利用しているとの報告があった。
2018年neovim v0.3 リリース
2019年neovim v0.4 リリース

直近3年間は v0.1/年 の速度で開発されていますね。

ちなみに、neovim 安定版(Stable) はこちらです。

neovim を使い始めるなら

次のメリットを把握したうえで、選ぶとよいでしょう。

neovim の強み・メリット

  • 多くのコントリビュータ・フルタイム開発者による開発スピードの速さ
  • 新機能・パッチの取り込みに積極的な姿勢
  • XDGサポート
  • 多くの新しい機能がデフォルトで有効
  • 拡張性の高さ(プラグインだけでなく、GUIの外部実装なども可)
  • わずかに高速(本体の起動ほか)
  • Vimプラグインの大半がそのまま使える(完全に全て使えるわけではない)

neovim の弱み・デメリット

  • OS初期状態では、標準インストールされない(=インストール&初期設定が必須)
  • OS標準エディタにするには、いくつも設定が必要
  • 機能性の分、起動時間がわずかに Vim に劣る
  • ユーザー数が Vim より少ない(=情報量が劣る)
  • 日本語での情報も Vim より少ない(標準でのヘルプの日本語化など)

neovim GUI版

次のように nvim-qt (nvim-qt.exe) があります。

nvim-qt for windows
nvim-qt for windows

ターミナルではなくウインドウで扱いた方は、こちらを使うとよいでしょう。

参考情報

プロフィール
管理人
Vim太郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

\フォローする/
スポンサードリンク
関連記事
Vim入門