Neovimからの優れたコミュニケーションとバグ対応。これまでの私の経験では、模範的なFOSSプロジェクトです。@telemachus
Vimをすぐに使える状態にすることを目指すプロジェクト、Neovimの5回目のニュースレターへようこそ。
メーリングリストとIRCチャンネルに加えて、Gitter.imが提供するNeovimチャットルームに参加できます。便利なWebインターフェースがありますが、お気に入りのIRCクライアントを使用して接続することもできます。
他の企業のオープンソースソフトウェア採用を支援する企業であるBlack Duckは、Neovimを昨年紹介するプロジェクトの1つとして選びました。同社は毎年、その年に開始された優れた新しいオープンソースプロジェクトをいくつか表彰しています。
前回のニュースレターで述べたように、UnixstickersはNeovimステッカーを在庫に追加しました。購入されるステッカーごとに、Bram Moolenaarの慈善団体であるICCF Hollandへの寄付額が増えます。
追加されて以来、106米ドルが調達され、Unixstickersは3月24日に寄付しました。
Neovim Wikiには、「関連プロジェクト」というタイトルのページがあり、現在のGUIプロジェクト、APIクライアント、Neovim機能を利用するプラグイン、Neovimを直接サポートするプロジェクトのリストが含まれています。
プロジェクトの中には実験的なものもあり、バグが含まれていたり、開発中である可能性があります。
他にリストできるプロジェクトをご存知ですか?ご遠慮なくリンクを追加してください!
@tarrudaは、libtermkeyとunibiliumを使用してターミナルユーザーインターフェースを再実装する彼のプルリクエストをマージしました。
Libtermkeyは@leonerdによるライブラリで、「ターミナルベースのプログラムからのキーボード入力の簡単な処理を可能にします」。特殊キー、UTF-8結合文字などを処理できます。
Unibiliumは@maukeによるライブラリで、terminfoとインターフェースします。Terminfoは、デバイス固有の詳細を気にすることなくディスプレイターミナルとインターフェースすることを容易にするライブラリとデータベースです。詳細は、man 5 terminfo
を実行してterminfoのマニュアルページで確認できます。
TUIの実装はNeovimの一部として含まれていますが、エディターコアからアーキテクチャ的に切り離されています。外部クライアントやGUIと同じAPIを使用します。
libtermkeyを使用することにより、NeovimはメタキーとCtrl-Shift
の組み合わせをバインドできるようになりました。これらは以前のターミナルでは不可能でした。詳細はこちらで、追加の例と可能性について読んでください。
@tarrudaは、フルターミナルエミュレータを起動する新しい:terminal
コマンドを追加するプルリクエストを完了しました。ターミナルはNeovimのネイティブバッファとウィンドウを使用しているため、ユーザーは<C-\><C-n>
を押してノーマルモードに入力できます。
これは、Neovimから削除された既存のVimコマンドである:shell
に取って代わるもので、より多くの機能を提供することを目的としています。この機能の決定に関する詳細な説明は、@tarrudaによって作成されたこのコメントにあります。
この機能の完全なドキュメントは、:help nvim-terminal-emulator
にあります。
この機能は、@leonerdの別のプロジェクトであるlibvtermを使用して実装されています。
上記で説明したTUIへの変更により、@tarrudaは、サポートするターミナルにトゥルーカラーを追加するプルリクエストを作成できました。
トゥルーカラーの意味とそれをサポートするターミナルの詳細については、@XVilkaによって記述されたこのGistを参照してください。
トゥルーカラーサポートを有効にするには、環境変数NVIM_TUI_ENABLE_TRUE_COLOR
を設定します。
WindowsでのNeovimのビルドの進捗状況は、2014年7月のニュースレターで初めて詳しく説明されました。
大きなマイルストーンとして、@equalsrafはWindowsでNeovimをビルドすることができ、Windows専用の継続的デリバリーサービスであるAppVeyorにもビルドがあります。
@equalsrafは、要件、依存関係/Neovimのビルド、既知のエラーに関する詳細なメモを提供しました。
今後、@equalsrafは彼の主要なプルリクエストに取り組んでおり、@justinmkは要件と議論を集めるための新しい問題を開始しました。
Vimには、多くのエイリアスを通じて起動する多くの方法があります。完全なリストは、Vimのドキュメントの開始セクションにあります。
@Pyrohhは、そのようなエイリアスの削除について議論するために問題を開きました。すべてのエイリアスには、代わりに使用できる対応するフラグがありました。
いくつかの議論の後、あまり使用されていないものを削除することにしました。@Pyrohhは、次のものを削除するプルリクエストを作成しました。
ex
:Exモード。exim
:「改良された」Exモード。view
:読み取り専用モード。gvim
:GUIの使用。gex
:GUIとExモード。gview
:GUIと読み取り専用モード。rvim
:制限付きモード。rview
:読み取り専用と制限付きモード。rgvim
:GUIと制限付きモード。rgview
:GUI、読み取り専用、および制限付きモード。さらに、@Pyrohhはvimdiff
とvim -d
をマージするための別のプルリクエストを作成しました。
@fmoralescは、evim
を削除するためのプルリクエストも作成しました。ドキュメントによると、これは挿入モードで開始し、通常のエディターのように動作することを可能にします。
この機能を削除しても、イージーモードで使用されていた基盤となる'insertmode'
オプションを使用することで、エミュレートすることは可能です。
Neovimのグラフィカルな側面は、上記セクションの1つにあるターミナルインターフェースに加えて、いくつかの変更が行われています。
前回のニュースレター以降、次のプロジェクトが順不同で作成されました。
@fmoralescによってこのプルリクエストで3つの新しいautocommandイベントが追加されました。autocommandイベントは、特定のイベントに応じて何かを実行する方法です。イベントは、特にプラグインで役立ちます。
新しいイベントは、TabNew
、TabNewEntered
、およびTabClosed
です。
@tarrudaは、新しいJob APIの改良を続けています。彼の作業は、最新のプルリクエストで続けられています。これは、既存のJob APIを使用する既存のプラグインに対して破壊的な変更となる可能性があります。
この改善は、イベントへの対応にautocommandを使用する以前の方法ではなく、関数コールバック(入力、出力イベント用)を使用することです。
それに加えて、jobwait()
とjobclose()
を含む、VimLにさらに多くのジョブ制御関数があります。
long_u
Vim固有の整数型に対する壮大な戦いは、過去2回のニュースレター(6月と11月)にわたって続けられてきましたが、@elmartによって、整数型long_u
の削除が完了しました。@elmartによる変更は、最後の3つのプルリクエスト(1、2、3)に分割されました。
これは、@tarrudaのプロジェクト固有の型をすべて削除するという目標に向けた一歩です。残っているのはchar_u
だけで、現在約12,300件使用されています。
@mhinzは、ファイルの末尾に続く「~」を削除する方法を必要としていました。彼は、現在のグループ一覧に追加して、:highlight
グループ「EndOfBuffer
」を提案しました。
彼の提案は、最初にvim-devにパッチとして送信され、Bramによって承認され、将来的にVimに取り込まれる予定です。@mhinzは@fmoralescに、Neovimへの変更を取り込むためのプルリクエストの作成を依頼しました。このプルリクエストは、その後masterブランチにマージされました。
多数のオブジェクトを割り当てるプラグインと共にVimを使用する場合、ガベージコレクションが起動し、解放するオブジェクトの検索に時間がかかるため、Vimがハングすることがあります。
この問題は、松本康宏氏によってvim_devに投稿されました。水谷有哉氏によって記述され、メーリングリストに提案されたパッチは、オブジェクトの検索アルゴリズムを改善します。松本氏のテストケースでは、パッチ適用前のVimの実行時間は100秒でしたが、パッチ適用後は0.134秒でした。
このパッチをNeovimに適用することについて、@Shougoによってissueが作成されました。@oni-linkはその後、パッチを適用するためのプルリクエストを作成し、すぐにマージされました。
@tarrudaは、プルリクエストで、Neovim向けにTclのExpectを模倣した小さなVimscriptライブラリを作成しました。
Expect(Tcl内)の目的は、そのような機能を提供しないテキストベースのアプリケーションを簡単にスクリプト化および自動化できるようにすることです。
@tarrudaは、概念実証としてGDB用のプラグインの例を提供しました。このプラグインは、Neovimの開発を容易にし、vimexpectの可能性を示すために作成されました。
compatible
の削除Vimには、compatible
オプションがあり、これによりVimはViとの互換性を高めることができます。vim -C
を実行することでも起動できます。
12月、@klusarkは、Viとの互換性モードをオフにするnocompatible
を常に設定するように変更するプルリクエストを作成しました。
つまり、set nocompatible
とフラグ-N
は無効な操作になります。また、互換性モードが存在しないため、set compatible
を実行するとエラーが発生します。
edcompatible
の削除edcompatible
オプションの削除について議論するために、issueが作成されました。この機能を有効にすると、:substitute
コマンドのg
およびc
フラグに対して特別な動作が与えられます。実際、Vimのドキュメントではこのオプションの使用を推奨していません。
@Pyrohhは、この機能を削除するためのプルリクエストを作成し、masterブランチにマージされました。
ttyfast
の削除Vimにはttyfast
というオプションがあり、「高速なターミナル接続」が存在する場合に設定されます。設定されると、挿入/削除行コマンドを使用する代わりに、描画する文字をより多く送信します。
議論が始まり、8月にはこのオプションをデフォルトとして設定することに合意しました。その後すぐに、@fornwallは、それをデフォルトにするためのプルリクエストを作成しました。
数か月間デフォルトで問題が発生しなかった後、@Pyrohhは、それを完全に削除するためのプルリクエストを作成しました。
次の3つのオプションが削除され、さらに削除される可能性があるため、@fwalchは、これらの常にオン/常にオフのオプションの処理を簡素化するためのプルリクエストを作成しました。
Neovimは、Vimメーリングリストに送信された上流Vimパッチをマージし続けています。
前回のニュースレター以降、60件以上のプルリクエスト分のパッチがNeovimに送信されました。すべてのパッチの現在のステータスは、Vimパッチレポートで見つけることができます。
開発を支援したい場合は、Bitcoinを使用してこちらに寄付できます。1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ
または Neovim Bountysourceページでチームを支援してください。
経験豊富な開発者の方、または経験は浅いが学習したいと考えている方は、GitHubリポジトリにアクセスし、README、CONTRIBUTINGガイド、そしてWikiを参照して詳細を学ぶことができます。
お手伝いできる機会ややるべきことがたくさんあります。
このニュースレターに関するフィードバックやご提案はありますか?Neovim Twitterからお気軽にお問い合わせください。
このニュースレターでは、コミュニティのすべての貢献とサポートを網羅することはできません。前回のニュースレター以降の月間に、何らかの形で貢献してくれた他のすべての貢献者の方々に感謝申し上げます。
Neovimの世界で何が起こっているか最新情報を入手するには、RSSフィードを購読してください。次のニュースレターは数か月後に公開されます。
次回まで。:wq