News-0.9

Nvimの:helpページは、生成され、ソースからtree-sitter-vimdocパーサーを使用して作成されました。


Nvim 0.8からの主な変更点

破壊的変更

以下の変更は、ユーザー設定またはプラグインの変更が必要になる場合があります。
Cscopeのサポートが削除されました(cscopeおよびnvim-removedを参照)
削除されたコマンド
:cscope
:lcscope
:scscope
:cstag
削除されたオプション
cscopepathcomp
cscopeprg
cscopequickfix
cscoperelative
cscopetag
cscopetagorder
cscopeverbose
削除された評価関数
cscope_connection()
注: ctagsのサポートは、削除の計画はなく継続されます。
詳細については、https://github.com/neovim/neovim/pull/20545を参照してください。
:hardcopyが削除されました(hardcopyおよびnvim-removedを参照)
削除されたコマンド
:hardcopy
削除されたオプション
printdevice
printencoding
printexpr
printfont
printheader
printmbcharset
'paste'オプションが非推奨となり、'pastetoggle'が削除されました。pasteは、GUIおよびターミナル(TUI)Nvimで自動的に機能します。貼り付けるだけです。™
string|string[]|nilではなく、stringを返すようになりました。
concatオプションは、一貫して適用されていなかったため、削除されました。
無効な範囲は、nilを返す代わりにエラーが発生するようになりました。
help treesitterパーサーはvimdocに名前が変更されました。ユーザーに見える唯一の変更点は、言語固有のハイライトグループの名前を@foo.helpから@foo.vimdocに変更する必要があることです。
'commentstring'のデフォルト値が、「/*%s*/」ではなく空になりました。
libiconvとintlがビルド依存関係として必要になりました。

新機能

以下の新しいAPIまたは機能が追加されました。
helpファイルのTreesitter構文ハイライトで、強調表示されたコード例がサポートされるようになりました。有効にするには、.config/nvim/ftplugin/help.luaを作成し、次の内容を記述します。
vim.treesitter.start()
注: 強調表示されたコード例は、Vimから取得したヘルプファイルではなく、Nvimマニュアルでのみ使用できます。treesitterのvimdocパーサーも開発中であり、すべてのヘルプファイルを正しく強調表示することを保証するものではありません。
セマンティックトークンハイライトのサポートをLSPクライアントに追加しました。この機能は、この機能をサポートするクライアントがバッファにアタッチされるとデフォルトで有効になります。オプトアウトは、LspAttachコールバックで、LSPクライアントの{server_capabilities}からsemanticTokensProviderを削除することで実行できます。
詳細については、lsp-semantic-highlightを参照してください。
vim.inspect_pos()vim.show_pos()、および:Inspectを使用すると、ユーザーは指定されたバッファ位置にある項目を取得または表示できます。現在、これにはtreesitterキャプチャ、LSPセマンティックトークン、構文グループ、およびエクスマークが含まれます。
vim.treesitter.inspect_tree()および:InspectTreeは、現在のバッファの言語ツリー内のノードのテキスト表現を示す分割ウィンドウを開きます。
ウィンドウの横にある領域(通常、折り畳み、サイン、および番号列を含む)をカスタマイズするための'statuscolumn'オプション。'statusline'構文に従い、行番号の変換、サインのマウスクリックコールバックの作成、カスタムマージンまたはセパレーターの導入などに使用できます。
vim.secure.trust():trustを使用すると、ユーザーは信頼データベース内のファイルを管理できます。vim.secure.read()はファイルを読み取り、信頼すべきかどうかをユーザーにプロンプトを表示し、信頼できる場合はファイルの内容を返します。'exrc'で使用されます。
EditorConfigのサポートが組み込まれました。これはデフォルトで有効になっており、自動的に実行されます。無効にするには、ユーザーは以下を追加する必要があります。
vim.g.editorconfig = false
(またはVimscriptの同等のもの)を設定ファイルに追加します。
NVIM_APPNAMEという名前の新しい環境変数が、Nvimが設定ファイルと状態ファイルを見つけるディレクトリを設定できるようにします。:help $NVIM_APPNAMEを参照してください。
-lを使用して、シェルからLuaスクリプトを実行するためのサポートを追加しました。
nvim -l foo.lua --arg1 --arg2
標準入力でも動作します。
echo "print(42)" | nvim -l -
Luaのomnifunc実装であるvim.lua_omnifunc()を追加しました。
Luaファイルをバイトコンパイルおよびキャッシュする新しい実験的なvim.loaderを追加しました。新しいローダーを有効にするには、init.luaの先頭に以下を追加します。
vim.loader.enable()
セマンティックバージョニング仕様に準拠したバージョン文字列を解析および比較するためのvim.versionを追加しました。
tmux 3.2以降でNvimを使用する場合、デフォルトのクリップボードプロバイダーはシステムクリップボードにコピーするようになります。provider-clipboard
ステータス行またはタブ行に'showcmd'情報を表示する'showcmdloc'オプション。新しい%Sステータス行項目が、カスタムの'statusline''showcmd'テキストを配置するために利用できます。'cmdheight'が0に設定されている場合に役立ちます。
水平分割のスクロール動作を制御するための'splitkeep'オプション。
'wildoptions'フラグ「fuzzy」は、コマンドライン補完中にファジーマッチングを有効にします。
'diffopt'に、個々のチャンクで2段階の差分を有効にし、より正確な差分を提供するlinematchオプションが含まれるようになりました。このオプションはvim.diff()でも利用できます。
https://github.com/neovim/neovim/pull/14537を参照してください。
ローカルターミナルのTUIにリモートインスタンスに接続して表示する--remote-uiオプションが追加されました。これは、バックグラウンドでヘッドレスnvimインスタンスを実行し、オンデマンドでUIを表示するために使用できます。これは以前は外部UI実装を使用してのみ可能でした。
コードレンズをクリアするためのvim.lsp.codelens.clear()関数を追加しました。
willSaveおよびwillSaveWaitUntil機能をLSPクライアントに追加しました。willSaveWaitUntilを使用すると、サーバーは保存される前にドキュメントを変更できます。言語サーバーによるユースケースの例として、未使用のインポートの削除やファイルのフォーマットなどがあります。
ディスク上のファイル変更をサーバーに通知するための、LSPクライアントへのworkspace/didChangeWatchedFiles機能の予備的なサポートを追加しました。この機能はデフォルトで無効になっており、workspace.didChangeWatchedFiles.dynamicRegistration=true機能を設定することで有効にできます。
vim.diagnosticは、LSP DiagnosticsTagをサポートするようになりました。以下を参照してください:https://microsoft.github.io/language-server-protocol/specification/#diagnosticTag
vim.diagnostic.is_disabled()は、特定のバッファまたは名前空間で診断が無効になっているかどうかを確認します。
Treesitterキャプチャは、ディレクティブによって変換できるようになりました。これにより、より複雑な動的言語インジェクションが可能になります。
vim.treesitter.get_node_text()は、vim.treesitter.query.add_directive()を使用してカスタムディレクティブを記述するためのmetadataオプションを受け入れるようになりました。
vim.treesitter.language.add()は、vim.treesitter.language.require_languageに代わるものです。
vim.treesitter.foldexpr()'foldexpr'に使用して、折り畳みにtreesitterを使用できます。
TSNode APIを以下で拡張しました。
さらに、TSNode:range()はオプションの{include_bytes}引数を受け取るようになりました。
Treesitterインジェクションクエリは、https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injectionで説明されている形式を使用するようになりました。以前の形式のサポートは、今後のリリースで削除されます。
nvim_get_hl()を、nvim_set_hl()と互換性のある形式でハイライトグループ定義を取得するために追加しました。
特定のファイルタイプのデフォルトオプション値を取得するためのvim.filetype.get_option()。これは、キャッシングを備えたnvim_get_option_value()のラッパーです。
require'bit'が常に利用可能になりましたlua-bit

変更された機能

既存のAPIまたは機能への以下の変更により、新しい動作が追加されます。
'exrc'.nvim.luaファイルをサポートするようになりました。
'exrc'は非推奨としてマークされなくなりました。
TUIが、別のプロセスで実行されるように変更されました(以前は、別のスレッドが使用されていました)。これはユーザーにとって目に見える変更ではないはずですが、微妙な動作の変化やバグの原因となる可能性があります。
以前は、TUIはビルド時の機能(+tui/-tui)として無効にすることができ、ヘッドレスでのみ実行できるか、外部プロセスに埋め込まれたnvimバイナリになりました。このバージョン以降、TUIは常に利用可能です。
Vimのhas('gui_running')が、プラグインがGUI(TUIではない)がNvimにアタッチされているかどうかを確認する方法としてサポートされるようになりました。has()
msgsepは、'display'に「msgsep」フラグが含まれていない場合でも常に有効になりました。'cmdheight'よりも長いメッセージを表示するときに画面全体をスクロールすることはできなくなりました。
API呼び出しで、例外が発生した場所に関するより多くの情報が表示されるようになりました。
win_viewport UIイベントに仮想行に関する情報が含まれるようになり、スムーズなスクロールをより一貫して実装できるようになりました。
:= {expr}構文を使用して、:lua ={expr}の短い形式として、Lua式を評価できます。引数なしの:=:[range]=は変更されていません。ただし、ex-flagsを使用する:=#などの類似のバリアントはサポートされなくなりました。
channel-stdioが閉じられたときに、未保存の変更が破棄されるのではなく、保持されるようになりました。
nvim_open_win()は、マウスを基準にしてフローティングウィンドウを開くための相対的なmouseオプションを受け入れるようになりました。vim.o.mousemoveevent = trueを設定しないと、マウスは頻繁に更新されないことに注意してください。
nvim_eval_statusline()は、新しいoptsフィールドであるuse_statuscol_lnumを通じて'statuscolumn'の評価をサポートします。
nvim_buf_get_extmarks()は、すべての名前空間からエクスマークを要求するために-1 ns_idを受け入れるようになり、詳細配列に名前空間IDを追加します。他の不足しているプロパティが詳細配列に追加され、マークをタイプでフィルター処理できます。
vim.diagnostic.open_float() (およびそれに伴う vim.diagnostic.config()) は、デフォルトでLSPエラーコードを表示するsuffixオプションを受け付けるようになりました。同様に、vim.diagnostic.config()virtual_text 設定には、デフォルトでは何もしない suffix オプションが追加されました。
vim.fs.dir() に、ディレクトリツリーを再帰的に検索するための深さフィールドを持つ opts 引数が追加されました。
vim.gsplit() は、vim.split() のすべての機能をサポートします。
:highlight は、追加の属性 "altfont" をサポートするようになりました。
:Man manpage ビューアは、スペースを含む manpage 名をサポートします。
nvim_select_popupmenu_item() は、cmdline-completion ポップアップメニューをサポートするようになりました。
nvim_list_uis() は、すべての ui-option フィールドを報告します。
nvim_get_option_value() には filetype オプションが追加され、特定のファイルタイプのデフォルトオプションを返すことができるようになりました。
ビルド: コード生成スクリプトをより決定的にするためのいくつかの改善が行われ、いくつかの残りの再現性の問題を回避するための LUA_GEN_PRG ビルドパラメータが導入されました。

削除された機能

以下の非推奨の関数またはAPIが削除されました。
filetype.vimvim.filetype に置き換えられました。(ファイルタイプのロジックとテストはまだVimと一致しているため、追加または変更は最初にVimにコントリビュートする必要があります。)https://github.com/neovim/neovim/pull/20674 を参照してください。
'hkmap''hkmapp'、および'aleph' オプションが削除されました。代わりに 'keymap' オプションを使用してください。
LanguageTree:parse() は、変更されたリージョンを返さなくなりました。代わりに on_changedtree コールバックを使用してください。
vim.highlight.create()vim.highlight.link() が削除されました。代わりに nvim_set_hl() を使用してください。
require'health' が削除されました。代わりに vim.health を使用してください。

非推奨

deprecated-0.9 を参照してください。
メイン
コマンドインデックス
クイックリファレンス