Neovim は、拡張性とユーザビリティに焦点を当てた、由緒あるテキストエディター vim のフォークです。これは、書き直しではなく、Vim の継続と拡張です。多くのクローンと派生品が存在し、その中には非常に優れたものも存在しますが、どれも Vim ではありません。Neovim は、Vim の優れた部分とそれ以上のものを求めるユーザー向けに構築されています。違いのリストは :help vim-differences から参照できます。
Neovim への貢献に興味がある場合は、詳細については github ページ をご覧ください。優れたテストスイートと自動 CI を用意していますので、飛び込んで気軽に使用していただけます。コメントを得るために PR をオープンしたり、インフラストラクチャを活用したりするのを恐れないでください!
チームと連絡を取りたい場合は、gitter チャンネル(IRC からもアクセス可能)に参加するか、多くの開発者が読んでいる Neovim subreddit を訪れてください。会話に参加することも貢献です!
前回のニュースレター では、Neovim v0.3.0 のリリースを取り上げましたが、今回はそれ以降にリリースされた最もエキサイティングな Neovim リリース、v0.4.4 と同じように取り上げます。
Neovim は、xterm 互換端末の背景色を検出するようになりました(@joshtriplett、#9509)。
'fillchars'
設定に eob
オプションが追加され、ユーザーはバッファの末尾以降の行を表す文字を構成できるようになりました(以前は ~
にハードコーディングされていました)(@FriedSock、#8546)。
既定の 'shortmess'
オプションに F
が追加され、S
が削除されました(@justinmk、#8619、#10136)。
CursorLine
タイプはよりスマートになります。フォアグラウンドカラーが設定されていない場合、CursorLine
のテキストは CursorLine
の背景色と既定の構文強調表示色をフォアグラウンドとして使用します(@zhou13、#8578)。
ターミナル UI は、ターミナルがそのサポートを提供している場合、下線とカラー下線をサポートできるようになりました(@blueyed、#9052)。
Neovim の 'background'
設定は、プラットフォーム全体で一貫した設定を取得するために、既定で dark
に設定されます(@justinmk、#9205)。
'fillchars'
と 'listchars'
は、ウィンドウローカルオプションになりました(@mhinz、#9539)。
フローティングウィンドウ! これにより、大きなクロック(@bfredl、@dzhou121、#6619)など、あらゆる種類の便利な機能が有効になります。
VimのTermDebugプラグインがneovimに移植されました(@kwon-young、#8364)。
Wildmenuは現在、wildoptions=pum
を使ってポップアップメニューにすることができます(@bfredl、#9607)。実際、これがデフォルトです。
UIがNeovimに接続および切断するときにトリガーされるイベントが、2つ追加されました。UIEnterとUILeaveです(@equalsraf、#6917)。
TermEnter
およびTermLeave
の自動コマンドも追加され、ターミナルの出入り時にトリガーされます(usama54321、#8550)。
ext_hlstate
拡張機能は、ビルトインおよび構文ハイライトのセマンティック識別を可能にします(@bfredl、#8221)。ext_linegrid
拡張機能は、パフォーマンスの向上のため、より段階的な画面更新を送信します(@bfredl、#9064)。ext_multigrid
拡張機能は、単なるレンダリングサーフェスである「グリッド」の概念を導入します(@bfredl、@UtkarshMe #8455)。ext_messages
拡張機能は、UIが外部コマンドラインを提供できるようにします(@bfredl、@dzhou121 #7466)。ext_popupmenu
により、neovimはポップアップメニューに関する情報を送信します(@bfredl #9607)。nvim_buf_get_offset
: 行のバイトオフセットを返します(@bfredl、#9180)。nvim_buf_is_loaded
: バッファーがロードされているかどうかを確認します(@phodge、#7688)。nvim_create_buf
: 新しいバッファーを作成します(@bredl、#9272)。nvim_get_context
/nvim_load_context
: エディターの状態を調査して復元します(@justinmk、#10619)。nvim_input_mouse
: マウス操作を実行します(@bfredl、#9429)。nvim_open_win
: フローティング外部ウィンドウを作成します。nvim_set_keymap
: モードのグローバルマッピングを設定します(@yilin-yang、#9224)。nvim_win_close
: ウィンドウnvim_win_set_buf
: ウィンドウの現在のバッファを設定します(@justinmk、#9100)。nvim_win_set_config
: ウィンドウのレイアウトを設定します(@mhinz、#9626)。Neovimは、--headlessも提供されない限り、--embedで起動時は、常にUIを待つようになりました(@bfredl、#9024)。
vim.loop
としてluaに公開されました(@zhaozg、@andreypopp、#10123)。Neovimのコントリビューターは熱心に取り組み、LSPクライアントや、TreeSitterの統合など、v0.5.0に多くの新機能を追加しました。次のNeovimリリースは、さらに魅力的になるでしょう!
Neovimの拡張機能を何らかの形で利用するプロジェクトのリストは、関連プロジェクトのwikiページで常に更新されています。前回のニュースレター以降に追加された内容の一部をご紹介します
以下のプラグインが、wikiに追加されました
多数の新しいAPIクライアント
Pythonクライアントも「pynvim」に名前が変更されました。
2018/2019年はLinuxデスクトップの年ではなかったかもしれませんが、間違いなくNeovim GUIの年でした
Neovim の事柄について具体的に解説した記事。
前回のニュースレター以降の変更された行
git log v0.3.0..v0.4.4 --numstat --pretty=tformat: --numstat | nawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 168844 removed lines: 75466 total lines: 93378
マージされたコミット
git log v0.3.0..v0.4.4 --pretty=oneline | wc -l
3477
異なるコミットの作成者
git shortlog -e -s -n v0.3.0..v0.4.4 | wc -l
164
ドキュメントの変更
git log v0.3.0..v0.4.4 --numstat --pretty=tformat: --numstat runtime/doc | nawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 9226 removed lines: 7002 total lines: 2224
貢献者、スポンサー、バグ報告者、サポーターに感謝します。Neovim を GitHub Sponsors または OpenCollective からスポンサーできるようになりました。この素晴らしいプロジェクトのために@justinmk に、基盤の作業のために@brammool に感謝します。