Neovim は、拡張性と使いやすさに焦点を当てた、由緒あるテキストエディタ vim のフォークです。書き直しではなく、Vim の継続と拡張です。多くのクローンや派生版が存在し、非常に巧妙なものもありますが、どれも Vim ではありません。Neovim は、Vim の良い部分と、さらに多くのものを求めるユーザーのために構築されています。:help vim-differences に違いのリストがあります。
Neovim への貢献に関心のある方は、CONTRIBUTING.md を読んで開始してください。優れたテストスイートと自動化された CI を備えているため、すぐに参加して試すことができます。コメントを得るために PR を開いたり、インフラストラクチャを利用したりすることを恐れないでください!
チームと連絡を取り合うには、gitter チャネル(IRC からもアクセス可能)に参加するか、多くの開発者が閲覧しているNeovim サブレディット を訪れてください。会話に参加することも、貢献です!
新規貢献者紹介: 多くのvim パッチ の移植を担当してくれた@ckelselさん、そして@loneroverさん、ありがとうございます!
以前からの貢献者紹介: コミットログにはあまり名前が出てきませんが、長期間にわたって変更のレビューと複雑な PR の改善に大きく貢献してくれた@oni-linkさん、ありがとうございます!
前回のニュースレターは少し古くなってしまったので、Neovim の世界における最新情報をお届けします。
それ以来、Neovim は3つものリリースがありました。まずそれらを簡単に振り返ってみましょう。
このリリースでは、多くの修正と改善が加えられています。以下でいくつか詳しく見ていきますが、詳細についてはリリースページも確認してください。
:terminal
モードは 0.2.1 で利用可能になりました(下記参照)。curl.exe
などの追加ツールが含まれています。:terminal
に様々な改善が加えられました (@justinmk, #6185)findfile()
、:find
、gf
が :terminal
バッファで動作するようになりました (@tweekmonster, #6009):term
で正しく動作するようになりました (@friedsock, #4504)Reading from stdin
が削除されました (@msva, #6298)guicursor
が TUI で動作するようになりました (@teto, #6423)listchars
用に新しいハイライトグループ Whitespace
が追加されました (@zhou13, #6367)DirChanged
が利用可能になりました (@mhinz, #5928)cpoptions
: _
フラグを使用して cw
の動作を切り替えることができます (@raichoo, @chrisbra, #6235)CTRL-R
でコマンドラインに貼り付けるときに、末尾の ^M
が省略されるようになりました (@justinmk, #6137):edit
できるようになりました (@Kurt-Bonatz, #6119)writefile
が fsync
オプションに従うようになりました (@ZyX-I, #6427)eval.c
がリファクタリングされ、エラーメッセージが改善されました (@ZyX-I, #5119)id
関数が利用可能になり、printf(%p)
がついに役立つようになりました (@ZyX-I, #6095)g:loaded_*
が存在する場合は、すべてのプロバイダーが無効になります (@justinmk, commit)setpos
で他のバッファの小文字のマークを設定できるようになりました (@hardenedapple, #5753)v:exiting
を確認できます (@mhinz, #5651)次に、0.2.1 で何が起こったかを見てみましょう。前と同様に、詳細についてはリリースノートを確認してください。
:Tutor
のさらなる改善が行われました (@fmoralesc, #7028)inccommand
が keeppattern
のような先行修飾子で動作するようになりました (@jamessan, #6967):cquit
がオプションのエラーコードを引数として受け取るようになりました (@joshleeb, #7336):checkhealth
がビルトインになり、$VIMRUNTIME
を検証するようになりました (@justinmk, #7399)cursorcolumn
と colorcolumn
がシンタックスハイライトを尊重するようになりました (@zhou13, @justinmk, #7364)get_keymap
を使用して、マッピングに関する情報をプログラムで取得できるようになりました (**@tjdevries**、#6236)nvim_get_hl_by_name/by_id
を使用して、ハイライトを取得できるようになりました (**@teto**、#7082)bufhl
を使用して新しいハイライトグループを作成できるようになりました (**@bfredl**、#7414)menu_get
からメニューを取得できるようになりました (**@teto**、#6322)menu_get
は特殊文字を整形して出力するため、その結果をnvim_input
などにフィードバックできるようになりました (**@teto**、**@KillTheMule**、#7340)sockconnect
を使用してソケットに接続できるようになりました (**@bfredl**、#6594)serverstart
がuv_getaddrinfo()
を使用するようになり、IPv6に対応しました (**@mhinz**、#6680):execute
呼び出しで複数の関数を定義できるようになりました (**@ZyX-I**、#6914)主にバグ修正を含む迅速なリリースです。リリースノートで詳細を確認してください。いくつかの新機能も含まれています。
curdir
がviewoptionとして追加されました (**@EricR86**、#7447):checkhealth
がruntimepathも検証するようになりました (**@justinmk**、#7526)scrollback
のデフォルト値が10000になりました (**@justinmk**、#7556)次回リリースで何が期待できるか知りたいですか?食欲をそそるリストをご紹介します。
CmdlineEnter
およびCmdlineLeave
autocommand (**@bfredl**、#7422)Neovimの計画されている機能、目標、アイデアの概要については、ロードマップをご覧ください。注目すべき今後のPRをご紹介します。
お知らせ:最新のmasterブランチからNeovimをビルドする場合は、必ずFollowing HEADを確認して変更を確認してください。
関連プロジェクトのwikiページに多くの追加がありました。こちらで完全な変更点を確認してください。
APIクライアントはNeovimアーキテクチャの中核であり、開発者エクスペリエンスを大幅に改善します。好きな言語でプラグインを作成できます!前回のニュースレター以降、C++クライアント、Elixirクライアント、Racketクライアントが追加されました。ノードクライアントは全面的に見直し、新しいメンテナーが担当しています。引き受けてくれた**@billyvg**に感謝します!完全に新しいものではありませんが、非常に良好に維持されているrubyクライアントに特別な感謝を述べます。**@alexgenco**ありがとうございます!
まだリストにない言語を好む場合は、ドキュメントが開始点となり、gitterチャンネルでぜひ話し合ってください。
GUI関連では多くの活動があったため、すべての新しいクライアントをリストすることはできません。そのため、特に注目すべきものをいくつかご紹介します。VSCodeはNeovimを使用してexモードコマンドを適切に統合しており、Sublime Text 3は完全なNeovim統合を実現しました。後者は、Neovim固有のもう1つの優れた機能である外部化されたポップアップメニューも使用しており、わずか50 LOCで実現しました。最後に、eovimはNeovim向けのEnlightenmentクライアントです。
いくつかの学生がNeovimのアーキテクチャを研究し、その調査結果に関する「分析論文」を発表しました。全体像に興味がある場合は、ぜひご覧ください。
vimcastsで有名なDrew Neilは、Neovimに関するキャストの収録を開始し、彼の好評な書籍Practical Vimの後継となるModern Vimの制作を開始しました。書籍の大部分はVim 8とNeovimのユーザーに適していますが、約1/3はNeovim固有の機能について説明します。
Neovimの基礎の1つに、I/Oをlibuvに移植することがありました。そのため、libuvがより多くのプラットフォームをサポートすることを目指していることを聞いて喜ばしいでしょう。Neovimが、まもなくお近くのプラットフォームに登場します!
Neovimは、驚くほどシンプルなLua言語を介して簡単なテストを提供します。なぜ他の人がそうしないのかと尋ねるかもしれませんか?それは、そうしている、あるいは少なくともneomuttプロジェクトが準備していることがわかりました。Neovimから取り入れられたアイデアを見るのは素晴らしいことです。
前回のニュースレター以降の変更行数
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 255393 removed lines: 221106 total lines: 34287
マージされたコミット数
git log --since="2016-11-01"|wc -l
3110
異なるコミット作者数
git shortlog -e -s -n --since="2016-11-01"|wc -l
146
ドキュメントの変更数
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat runtime/doc|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 8579 removed lines: 6577 total lines: 2002
貢献者、スポンサー、バグ報告者、サポーターの皆様に感謝します。素晴らしいプロジェクトを作ってくれた**@justinmk**、そして基礎的な作業をしてくれた**@brammoolに感謝します。
vimチームの**@brammool**と**@chrisbra**から、私たちのイシュートラッカーにいくつかのコメントがありました。一緒に作業できて嬉しいです!