Api

Nvim の :help ページは、生成されており、ソースtree-sitter-vimdoc パーサーで解析しています。


Nvim API api
Nvim は、プラグインや外部プロセスが RPCLua、Vimscript (eval-api) を介して利用できる強力な API を公開しています。
アプリケーションは、libnvim を埋め込んで C API を直接操作することもできます。

API の使用法 api-rpc RPC rpc

msgpack-rpc
RPC は、Nvim をプログラムで制御するための主要な方法です。Nvim は、MessagePack-RPC プロトコルを以下の追加(仕様外)制約付きで実装しています。
1. レスポンスは、リクエストの逆順で与えられなければなりません(「スタックを巻き戻す」ように)。2. Nvim は、受信した順序で全てのメッセージ(リクエストと通知)を処理します。
多くのクライアントが API を使用しています。ユーザーインターフェース (GUI)、リモートプラグイン、「nvr」のようなスクリプト(https://github.com/mhinz/neovim-remote)など。Nvim 自体が他の Nvim インスタンスを制御することもできます。API クライアントは、
任意の API 関数を呼び出す
イベントをリッスンする
Nvim からリモートコールを受信する
RPC API は、Vim の "clientserver" 機能のより強力なバージョンのようなものです。
チャンネルを開くための様々な方法については、channel-intro を参照してください。チャンネルを開く関数は、オプション辞書に rpc キーを取ります。RPC チャンネルは、Nvim によって listen されている TCP/IP ソケットまたは名前付きパイプに接続する他のプロセスによっても開くことができます。
Nvim は、起動時にデフォルトの RPC ソケットを v:servername で指定された場所に作成します。代わりに TCP/IP ソケットで開始するには、TCP スタイルのアドレスを指定して --listen を使用します。
nvim --listen 127.0.0.1:6666
さらに多くのエンドポイントを serverstart() で開始できます。
localhost TCP ソケットは一般的に名前付きパイプよりも安全性が低く、リモートコード実行のような脆弱性につながる可能性があることに注意してください。
ソケットに接続することは、プログラマーが API をテストするための最も簡単な方法であり、msgpack-rpc クライアントライブラリまたはフル機能の api-client を通じて行うことができます。以下は、現在の Nvim インスタンスに "hello world!" を出力する Ruby スクリプトです。
#!/usr/bin/env ruby
# Requires msgpack-rpc: gem install msgpack-rpc
#
# To run this script, execute it from a running Nvim instance (notice the
# trailing '&' which is required since Nvim won't process events while
# running a blocking command):
#
#   :!./hello.rb &
#
# Or from another shell by setting NVIM_LISTEN_ADDRESS:
# $ NVIM_LISTEN_ADDRESS=[address] ./hello.rb
require 'msgpack/rpc'
require 'msgpack/rpc/transport/unix'
nvim = MessagePack::RPC::Client.new(MessagePack::RPC::UNIXTransport.new, ENV['NVIM_LISTEN_ADDRESS'])
result = nvim.call(:nvim_command, 'echo "hello world!"')
より良い方法は、"pynvim" パッケージを使用して Python REPL を使用することです。ここでは、API 関数を対話的に呼び出すことができます。
>>> from pynvim import attach
>>> nvim = attach('socket', path='[address]')
>>> nvim.command('echo "hello world!"')
jobstart() を使用して Nvim を埋め込み、rpcrequest()rpcnotify() を使用して通信することもできます。
let nvim = jobstart(['nvim', '--embed'], {'rpc': v:true})
echo rpcrequest(nvim, 'nvim_eval', '"Hello " . "world!"')
call jobstop(nvim)

API 定義 api-definitions

api-types
Nvim C API は、全ての関数パラメーターにカスタム型を定義します。一部は C99 標準型の typedef にすぎませんが、他の型は Nvim 定義のデータ構造です。
基本型
API Type                              C type
------------------------------------------------------------------------
Nil
Boolean                               bool
Integer (signed 64-bit integer)       int64_t
Float (IEEE 754 double precision)     double
String                                {char* data, size_t size} struct
Array                                 kvec
Dict (msgpack: map)                   kvec
Object                                any of the above
注意
空の配列は、有効な辞書パラメーターとして受け入れられます。
関数は RPC の境界を越えることはできません。ただし、API 関数(例えば、nvim_create_autocmd())は、非 RPC 呼び出しのために Lua 関数パラメーターをサポートする場合があります。
特殊型 (msgpack EXT)
これらは、個別のオブジェクトサブタイプとして区別される整数 typedef です。これらは不透明な整数として扱うことができますが、相互に互換性がありません。Buffer は整数として渡すことはできますが、Window または Tabpage として渡すことはできません。
EXT オブジェクトのデータは、(整数)オブジェクトハンドルです。api-metadatatypes キーに記載されている EXT タイプコードは安定しており、変更されることはないため、前方互換性があります。
EXT Type      C type                                  Data
------------------------------------------------------------------------
Buffer        enum value kObjectTypeBuffer            |bufnr()|
Window        enum value kObjectTypeWindow            |window-ID|
Tabpage       enum value kObjectTypeTabpage           internal handle
api-indexing
API のほとんどは 0 ベースのインデックスを使用し、範囲は終端排他的です。範囲の終端の場合、-1 は最後の行/列を表します。
例外: 次の API 関数は、「マークのような」インデックス(1 ベースの行、0 ベースの列)を使用します。
例外: 次の API 関数は、extmarks インデックス(0 ベースのインデックス、終端包括的)を使用します。
api-fast
ほとんどの API 関数は「遅延」されます。つまり、メインループでキューに入れられ、通常の入力と順次処理されます。したがって、エディターが「モーダル」な方法(例えば、hit-enter-prompt)でユーザー入力を待っている場合、リクエストはブロックされます。nvim_get_mode()nvim_input() のような遅延しない(高速)関数は、すぐに処理されます(つまり、入力キューで待機することなく)。Lua コードは、vim.in_fast_event() を使用して高速コンテキストを検出できます。

API メタデータ api-metadata

Nvim C API は、ビルドシステムによって自動的に RPC に公開されます。これは、src/nvim/api/* のヘッダーを解析し、RPC API メソッド名をパブリック C API 関数にマッピングするディスパッチ関数を生成し、引数と戻り値を変換/検証します。
Nvim は、その API メタデータを以下の項目を持つ辞書として公開します。
version Nvim のバージョン、API レベル/互換性
version.api_level API バージョン整数 api-level
version.api_compatible API はこのレベルと後方互換性があります
version.api_prerelease API を不安定/未リリースとして宣言します (version.api_prerelease && fn.since == version.api_level)
functions API 関数のシグネチャ。戻り値とパラメーターを記述する api-types 情報を含みます。
ui_events UI イベントのシグネチャ
ui_options サポートされている ui-option
{fn}.since 関数 {fn} が導入された API レベル
{fn}.deprecated_since 関数 {fn} が非推奨になった API レベル
types Nvim によって定義されたカスタムハンドル型
error_types API 関数によって返される可能性のあるエラー型
functions マップについて
コンテナ型は、型/サイズ制約(例えば、ArrayOf(Buffer) または ArrayOf(Integer, 2))で装飾される場合があります。
Nvim 特殊型(msgpack EXT)のインスタンスを操作するメソッドと見なされる関数には、"method=true" フラグがあります。レシーバーの型は、最初の引数の型です。メソッド名は、nvim_ に型名を加えたもので、例えば nvim_buf_get_lines は Buffer インスタンスの get_lines メソッドです。dev-api
グローバル関数には "method=false" フラグがあり、nvim_ のみが接頭辞として付けられます(例えば、nvim_list_bufs)。
api-mapping
外部プログラム(クライアント)は、メタデータを使用して以下のいずれかの方法で API を検出できます。
1. 実行中の Nvim インスタンスに接続し、msgpack-RPC 経由で nvim_get_api_info() を呼び出します。これは、実行時に関数を定義できる動的言語で記述されたクライアントに最適です。
2. --api-info を指定して Nvim を起動します。静的にコンパイルされたクライアントに便利です。例 (Python "pyyaml" および "msgpack-python" モジュールが必要)
nvim --api-info | python -c 'import msgpack, sys, yaml; yaml.dump(msgpack.unpackb(sys.stdin.buffer.read()), sys.stdout)'
3. api_info() Vimscript 関数を使用します。
:lua vim.print(vim.fn.api_info())
非推奨の API 関数を除外するために filter() を使用する例
:new|put =map(filter(api_info().functions, '!has_key(v:val,''deprecated_since'')'), 'v:val.name')

API コントラクト api-contract

Nvim API は、関数とイベントで構成されています。
クライアントは、api-global で説明されているような関数を呼び出します。
クライアントは、ui-eventsapi-buffer-updates などに登録できます。
API 関数名は "nvim_" で始まります。
API イベント名は "nvim_" で始まり、"_event" で終わります。
Nvim の進化に伴い、API はこのコントラクトに準拠して変更される可能性があります。
新しい関数とイベントが追加される可能性があります。
そのような拡張機能は任意です。古いクライアントは無視してもかまいません。
関数シグネチャは、(リリース後)変更されません。
開発(未リリース)バージョンで導入された関数は、変更される可能性があります。(クライアントは、api_prerelease などを動的に確認できます。api-metadata
イベントパラメーターは、(リリース後)削除または並べ替えられません。
イベントは拡張される可能性があります。新しいパラメーターが追加される可能性があります。
関数およびイベントのマップ/リストパラメーター/結果に新しい項目が追加される可能性があります。
そのような新しい項目は任意です。古いクライアントは無視してもかまいません。
既存の項目は、(リリース後)削除されません。
非推奨の関数は、Nvim バージョン 2.0 まで削除されません。
"プライベート" インターフェースはこの契約の対象外です。
ドキュメント化されていない(:help にない)あらゆる種類の関数またはイベント
nvim__x (「二重アンダースコア」)関数
Rich Hickey の言葉を借りれば、このアイデアは「バージョンレス進化」です。
要件を緩和することは、互換性のある変更であるべきです。
約束を強化することは、互換性のある変更であるべきです。

グローバルイベント api-global-events

クライアントが API リクエストを非同期通知として呼び出す場合、Nvim がエラー応答を送信することはできません。代わりに、エラーが発生した場合、以下の通知がクライアントに送信されます。
nvim_error_event
nvim_error_event[{type}, {message}]
{type}api_info().error_types で定義された数値 ID で、{message} はエラーメッセージを含む文字列です。

バッファー更新イベント api-buffer-updates

API クライアントは、Nvim バッファーに「アタッチ」して、バッファー更新イベントをサブスクライブできます。これは TextChanged に似ていますが、より強力で細かく制御できます。
チャンネルでこれらのイベントを受信するには、nvim_buf_attach() を呼び出します。
nvim_buf_lines_event
nvim_buf_lines_event[{buf}, {changedtick}, {firstline}, {lastline}, {linedata}, {more}]
{firstline}{lastline} の間(終端排他的、ゼロベースインデックス)のバッファテキストが、{linedata} リストの新しいテキストに変更された場合。粒度は行単位です。つまり、エディターで単一の文字が変更された場合、行全体が送信されます。
{changedtick}v:null の場合、これは画面の行(表示)は変更されたが、バッファの内容は変更されていないことを意味します。{linedata} には、変更された画面の行が含まれています。これは、'inccommand' がバッファプレビューを表示するときに発生します。
プロパティ
{buf} API バッファハンドル(バッファ番号)
{changedtick} バッファの b:changedtick の値。nvim に API コマンドを送信し直す場合、リクエストの一部として b:changedtick の値を確認して、他の変更が加えられていないことを確認できます。
{firstline} 置換された最初の行の整数行番号。ゼロベースのインデックスです。行 1 が置換された場合、{firstline} は 1 ではなく 0 になります。{firstline} は、行が置換される前にバッファ内にあった行数以下になります。
{lastline} 置換されなかった最初の行の整数行番号(つまり、範囲 {firstline}{lastline} は終端排他的です)。ゼロベースのインデックスです。行番号 2 から 5 が置換された場合、これは 6 ではなく 5 になります。{lastline} は、行が置換される前にバッファ内にあった行数以下になります。{lastline} は、アタッチ後の最初の更新の一部である場合、-1 になります。
{linedata} 新しいバッファ行の内容を含む文字列のリスト。改行文字は省略されます。空の行は空の文字列として送信されます。
{more} ブール値。現在の変更が複数の nvim_buf_lines_event 通知にチャンク分割された「マルチパート」変更通知の場合は true(例えば、大きすぎる場合)。
nvim_buf_changedtick_event[{buf}, {changedtick}] nvim_buf_changedtick_event
b:changedtick がインクリメントされたが、テキストが変更されなかった場合に発生します。アンドゥ/リドゥに関連します。
プロパティ
{buf} APIバッファハンドル(バッファ番号) {changedtick} バッファの b:changedtick の新しい値
nvim_buf_detach_event[{buf}] nvim_buf_detach_event
バッファがデタッチされた(つまり、更新が無効になった)ときに発生します。nvim_buf_detach() によって明示的にトリガーされるか、以下のケースで暗黙的にトリガーされます。
バッファが破棄され、'hidden' が設定されていない場合。
バッファがリロードされた場合。例えば、:edit、外部の変更によってトリガーされた :checktime、または 'autoread' による場合。
一般的に:バッファの内容がメモリからアンロードされる場合。
プロパティ
{buf} API バッファハンドル(バッファ番号)
空のバッファでsend_buffer=trueを指定してnvim_buf_attach()を呼び出すと、以下が発生します
nvim_buf_lines_event[{buf}, {changedtick}, 0, -1, [""], v:false]
ユーザーがバッファに2行を追加すると、以下が発生します
nvim_buf_lines_event[{buf}, {changedtick}, 0, 0, ["line1", "line2"], v:false]
ユーザーが "Hello world" というテキストを含む行に移動し、"!" を挿入すると、以下が発生します
nvim_buf_lines_event[{buf}, {changedtick}, {linenr}, {linenr} + 1,
                     ["Hello world!"], v:false]
ユーザーが3行目に移動し、"20dd" を使用して20行を削除すると、以下が発生します
nvim_buf_lines_event[{buf}, {changedtick}, 2, 22, [], v:false]
ユーザーが行単位ビジュアルモードを使用して3〜5行目を選択し、次に "p" を入力して6行のブロックを貼り付けると、以下が発生します
nvim_buf_lines_event[{buf}, {changedtick}, 2, 5,
  ['pasted line 1', 'pasted line 2', 'pasted line 3', 'pasted line 4',
   'pasted line 5', 'pasted line 6'],
  v:false
]
ユーザーが ":edit" でバッファをリロードすると、以下が発生します
nvim_buf_detach_event[{buf}]
LUA
api-buffer-updates-lua
インプロセスの Lua プラグインは、Lua コールバックの形式でバッファの更新を受信できます。これらのコールバックはさまざまなコンテキストで頻繁に呼び出されます。textlock はバッファの内容とウィンドウレイアウトの変更を防止します(代わりにメインループに操作を延期するには vim.schedule() を使用します)。カーソルの移動は許可されていますが、後で復元されます。
nvim_buf_attach() は、コールバックのキーワード引数を取ります。"on_lines" は、パラメータ ("lines", {buf}, {changedtick}, {firstline}, {lastline}, {new_lastline}, {old_byte_size} [, {old_utf32_size}, {old_utf16_size}]) を受け取ります。リモートチャネルイベントとは異なり、テキスト内容は渡されません。新しいテキストはコールバック内で以下のようにアクセスできます。
vim.api.nvim_buf_get_lines(buf, firstline, new_lastline, true)
{old_byte_size} は、{firstline} から {lastline} までの置換された領域の合計サイズ(バイト単位)で、{lastline} の後の最後の改行を含みます。 utf_sizesnvim_buf_attach() キーワード引数で true に設定されている場合、削除された領域の UTF-32 および UTF-16 サイズも追加引数 {old_utf32_size} および {old_utf16_size} として渡されます。
"on_changedtick" は、b:changedtick がインクリメントされたが、テキストが変更されなかった場合に呼び出されます。受信されるパラメータは ("changedtick", {buf}, {changedtick}) です。
api-lua-detach
インプロセスの Lua コールバックは、true を返すことでデタッチできます。これにより、同じ nvim_buf_attach() 呼び出しでアタッチされたすべてのコールバックがデタッチされます。

バッファのハイライト api-highlights

Nvim では、プラグインが位置に基づいたハイライトをバッファに追加できます。これは matchaddpos() に似ていますが、いくつかの重要な違いがあります。追加されたハイライトはバッファに関連付けられ、サインと同様に、行の挿入と削除に適応します。ハイライトのセットをグループとして管理し、すべてを一度に削除または置換することも可能です。
想定されるユースケースは、変更のためにバッファを監視し、バックグラウンドでバッファのハイライトを計算するリンターまたはセマンティックハイライタープラグインです。別のユースケースは、追加専用バッファに出力を表示し、出力にハイライトを追加するプラグインです。ハイライトデータは、バッファをファイルに書き込みおよびロードするとき、またはアンドゥ/リドゥサイクルでは保持できません。
ハイライトは、nvim_buf_add_highlight() 関数を使用して登録されます。外部のハイライタープラグインが多くのハイライトをバッチで追加したい場合、最初に(同期的に)ソース ID を要求した後、nvim_buf_add_highlight() を非同期通知として呼び出すことでパフォーマンスを向上させることができます。
nvim_buf_add_highlight() は、ハイライトを extmarks として追加します。ハイライトを追加後に追跡または操作する必要がある場合は、配置された extmark ID を返すため、nvim_buf_set_extmark() を直接使用する方が適切です。したがって、以下の代わりに
vim.api.nvim_buf_add_highlight(buf, ns_id, hl_group, line, col_start, col_end)
以下を使用します
-- create the highlight through an extmark
extid = vim.api.nvim_buf_set_extmark(buf, ns_id, line, col_start, {end_col = col_end, hl_group = hl_group})
-- example: modify the extmark's highlight group
vim.api.nvim_buf_set_extmark(buf, ns_id, line, col_start, {end_col = col_end, hl_group = NEW_HL_GROUP, id = extid})
-- example: change the highlight's position
vim.api.nvim_buf_set_extmark(buf, ns_id, NEW_LINE, col_start, {end_col = col_end, hl_group = NEW_HL_GROUP, id = extid})
Python API クライアント(pynvim)を使用した例
src = vim.new_highlight_source()
buf = vim.current.buffer
for i in range(5):
    buf.add_highlight("String",i,0,-1,src_id=src)
# some time later ...
buf.clear_namespace(src)
ハイライトを削除または更新する必要がない場合は、src_id として -1 を渡すだけです(これは Python のデフォルトです)。特定のソースからのハイライトをクリアするには、特定の行範囲またはバッファ全体でクリアするには、nvim_buf_clear_namespace() を使用します。行範囲 0, -1(後者は上記で使用されているように Python のデフォルトです)を渡します。
Vimscript から API を使用した例
call nvim_buf_set_lines(0, 0, 0, v:true, ["test text"])
let src = nvim_buf_add_highlight(0, 0, "String", 1, 0, 4)
call nvim_buf_add_highlight(0, src, "Identifier", 0, 5, -1)
" some time later ...
call nvim_buf_clear_namespace(0, src, 0, -1)

フローティングウィンドウ api-floatwin

フローティングウィンドウ(「フローティング」)は、通常のウィンドウの上に表示されます。これは、カーソルの横に表示されるツールチップなどの単純なウィジェットを実装するのに役立ちます。フローティングは、ユーザー編集、一般的な api-window 呼び出し、およびほとんどのウィンドウオプション('statusline' を除く)をサポートする完全に機能するウィンドウです。
フローティングウィンドウを作成する2つの方法
nvim_open_win() は、新しいウィンドウを作成します(バッファが必要です。 nvim_create_buf() を参照)。
nvim_win_set_config() は、通常のウィンドウをフローティングに再構成します。
閉じるには、nvim_win_close() または :close などのコマンドを使用します。
ウィンドウがフローティングであるかどうかを確認するには、その構成の relative オプションが空でないかどうかを確認します。
if vim.api.nvim_win_get_config(window_id).relative ~= '' then
  -- window with this window_id is floating
end
バッファテキストは、一般的なメカニズム(シンタックスハイライト、api-highlights)によってハイライトできます。hl-NormalFloat グループは通常のテキストをハイライトします。 'winhighlight' は、通常どおりグループをローカルでオーバーライドするために使用できます。フローティングは現在のウィンドウからオプションを継承します。 nvim_open_win()style=minimal を指定して、'number' 列など、さまざまな視覚機能を無効にします。
フローティングウィンドウに固有のその他のハイライトグループ
hl-FloatBorder ウィンドウの境界線用
hl-FloatTitle ウィンドウのタイトル用
hl-FloatFooter ウィンドウのフッター用
現在、フローティングウィンドウはスクロールバーなどの一部のウィジェットをサポートしていません。
:mksession の出力には、フローティングウィンドウを復元するためのコマンドは含まれていません。
例:スクラッチバッファを使用してフローティングを作成
let buf = nvim_create_buf(v:false, v:true)
call nvim_buf_set_lines(buf, 0, -1, v:true, ["test", "text"])
let opts = {'relative': 'cursor', 'width': 10, 'height': 2, 'col': 0,
    \ 'row': 1, 'anchor': 'NW', 'style': 'minimal'}
let win = nvim_open_win(buf, 0, opts)
" optional: change highlight, otherwise Pmenu is used
call nvim_set_option_value('winhl', 'Normal:MyHighlight', {'win': win})
拡張マーク(extmarks)は、バッファ内のテキスト変更を追跡するバッファ注釈を表します。カーソル、折りたたみ、スペルミスのある単語など、時間経過とともにバッファ内の論理的な場所を追跡する必要のあるものを表すことができます。api-indexing
Extmark の位置は、「縦線」カーソルのように機能します。文字の間に存在します。したがって、行の最大 extmark インデックスは、文字インデックスより 1 つ多くなります。
 f o o b a r      line contents
 0 1 2 3 4 5      character positions (0-based)
0 1 2 3 4 5 6     extmark positions (0-based)
Extmark は「前方重力」を持っています。カーソルを extmark の位置に直接置いてテキストを入力すると、extmark は前方に移動します。
f o o|b a r      line (| = cursor)
     3           extmark
f o o z|b a r    line (| = cursor)
       4         extmark (after typing "z")
Extmark が行の最後のインデックスにあり、その時点で改行を入力すると、extmark はそれに応じて次の行に移動します。
f o o z b a r|   line (| = cursor)
             7   extmark
f o o z b a r    first line
                 extmarks (none present)
|                second line (| = cursor)
0                extmark (after typing <CR>)
最初の行(row=0)および3番目の列(column=2)に extmark を設定しましょう。api-indexing id=0 を渡すと、新しいマークが作成され、ID が返されます。
  01 2345678
0 ex|ample..
    ^ extmark position
let g:mark_ns = nvim_create_namespace('myplugin')
let g:mark_id = nvim_buf_set_extmark(0, g:mark_ns, 0, 2, {})
ID でマークを取得できます。
echo nvim_buf_get_extmark_by_id(0, g:mark_ns, g:mark_id, {})
" => [0, 2]
namespace (または範囲)でバッファ内のすべてのマークを取得できます。
echo nvim_buf_get_extmarks(0, g:mark_ns, 0, -1, {})
" => [[1, 0, 2]]
周囲のすべてのテキストを削除しても、extmark は削除されません! extmark を削除するには、nvim_buf_del_extmark() を使用します。例の "x" を削除する
  0 12345678
0 e|ample..
   ^ extmark position
echo nvim_buf_get_extmark_by_id(0, g:mark_ns, g:mark_id, {})
" => [0, 1]
注: Extmark の「重力」は、テキスト編集後にどのようにシフトするかを決定します。nvim_buf_set_extmark() を参照してください。
ネームスペースを使用すると、どのプラグインも他のプラグインによって作成されたものを無視して、独自の extmark のみを管理できます。
編集によって変更された Extmark の位置は、アンドゥ/リドゥで復元されます。extmark の作成と削除はバッファの変更ではないため、extmark の変更に対して新しいアンドゥ状態は作成されません。

グローバル関数 api-global

nvim_chan_send({chan}, {data}) nvim_chan_send()
チャネル id にデータを送信します。ジョブの場合、プロセスの stdin に書き込みます。stdio チャネル channel-stdio の場合、Nvim の stdout に書き込みます。内部ターミナルインスタンス(nvim_open_term())の場合、ターミナル出力に直接書き込みます。詳細については channel-bytes を参照してください。
この関数は、RPCメッセージではなく、生のデータを書き込みます。チャネルが rpc=true で作成された場合、チャネルは RPC メッセージを予期しているため、代わりに vim.rpcnotify() および vim.rpcrequest() を使用してください。
属性
RPC のみ Lua vim.api のみ
パラメータ
{chan} チャネルの ID
{data} 書き込むデータ。8ビットクリーン:NULバイトを含めることができます。
nvim_create_buf({listed}, {scratch}) nvim_create_buf()
新しい、空の、名前のないバッファを作成します。
パラメータ
{listed} 'buflisted' を設定します
{scratch} 一時的な作業用の「使い捨て」スクラッチバッファを作成します(常に 'nomodified')。また、バッファに 'nomodeline' を設定します。
戻り値
バッファハンドル、エラーの場合は0
以下も参照してください
buf_open_scratch
nvim_del_current_line() nvim_del_current_line()
現在の行を削除します。
属性
textlock がアクティブな場合は許可されません
nvim_del_keymap({mode}, {lhs}) nvim_del_keymap()
指定されたモードのグローバル マッピング を解除します。
バッファローカルマッピングを解除するには、nvim_buf_del_keymap() を使用します。
以下も参照してください
nvim_del_mark({name}) nvim_del_mark()
大文字/ファイル名のマークを削除します。mark-motions を参照してください。
注意
小文字の名前(または他のバッファローカルなマーク)はエラーです。
パラメータ
{name} マーク名
戻り値
マークが削除された場合はtrue、それ以外はfalse。
以下も参照してください
nvim_del_var({name}) nvim_del_var()
グローバル(g:)変数を削除します。
パラメータ
{name} 変数名
nvim_echo({chunks}, {history}, {opts}) nvim_echo()
メッセージをエコーします。
パラメータ
{chunks} テキストと指定されたハイライトを表す[text, hl_group]配列のリスト。hl_group要素は、ハイライトなしの場合は省略できます。
{history} trueの場合、message-historyに追加します。
{opts} オプションのパラメータ。
verbose: メッセージが'verbose'オプションの結果として出力された場合、Nvimが-V3log_fileで起動された場合は、メッセージはlog_fileにリダイレクトされ、直接出力からは抑制されます。
nvim_err_write({str}) nvim_err_write()
Vimのエラーバッファにメッセージを書き込みます。「\n」は追加しません。メッセージは行送りされるまでバッファリングされます(表示されません)。
パラメータ
{str} メッセージ
nvim_err_writeln({str}) nvim_err_writeln()
Vimのエラーバッファにメッセージを書き込みます。「\n」を追加するため、バッファがフラッシュされます(表示されます)。
パラメータ
{str} メッセージ
以下も参照してください
nvim_err_write()
nvim_eval_statusline({str}, {opts}) nvim_eval_statusline()
ステータスライン文字列を評価します。
属性
api-fast
パラメータ
{str} ステータスライン文字列('statusline'を参照)。
{opts} オプションのパラメータ。
winid: (number) ステータスラインのコンテキストとして使用するウィンドウのwindow-ID
maxwidth: (number) ステータスラインの最大幅。
fillchar: (string) ステータスラインの空白を埋める文字('fillchars'を参照)。たとえそうでない場合でも、単一幅として扱われます。
highlights: (boolean) ハイライト情報を返します。
use_winbar: (boolean) ステータスラインの代わりにwinbarを評価します。
use_tabline: (boolean) ステータスラインの代わりにtablineを評価します。trueの場合、{winid}は無視されます。{use_winbar}とは相互に排他的です。
use_statuscol_lnum: (number) ステータスラインの代わりに、この行番号のstatuscolumnを評価します。
戻り値
以下のキーを持つステータスライン情報を含む辞書
str: (string) ステータスラインに表示される文字。
width: (number) ステータスラインの表示幅。
highlights: ステータスラインのハイライト情報を含む配列。{opts}の"highlights"キーがtrueの場合のみ含まれます。配列の各要素は、以下のキーを持つDictです。
start: (number) ハイライトを使用する最初の文字のバイトインデックス(0ベース)。
group: (string) ハイライトグループの名前。
nvim_exec_lua({code}, {args}) nvim_exec_lua()
Luaコードを実行します。パラメータ(もしあれば)はチャンク内で...として利用可能です。チャンクは値を返すことができます。
ステートメントのみが実行されます。式を評価するには、returnを接頭辞として付けます。例:return my_function(...)
属性
RPCのみ
パラメータ
{code} 実行するLuaコード
{args} コードへの引数
戻り値
Luaコードの戻り値(存在する場合)、またはNIL。
nvim_feedkeys({keys}, {mode}, {escape_ks}) nvim_feedkeys()
modeフラグによって制御されるさまざまな癖に従い、Nvimに入力キーを送信します。これは、nvim_input()とは異なり、ブロッキングコールです。
実行エラーの場合:失敗しませんが、v:errmsgを更新します。
<C-o>のようなシーケンスを入力するには、nvim_replace_termcodes()(通常はescape_ks=false)を使用してキーコードを置き換え、その結果をnvim_feedkeys()に渡します。
:let key = nvim_replace_termcodes("<C-o>", v:true, v:false, v:true)
:call nvim_feedkeys(key, 'n', v:false)
パラメータ
{keys} 入力するキー
{mode} 動作フラグ。 feedkeys()を参照。
{escape_ks} trueの場合、keys内のK_SPECIALバイトをエスケープします。すでにnvim_replace_termcodes()を使用した場合はfalse、そうでない場合はtrueにする必要があります。
以下も参照してください
feedkeys()
vim_strsave_escape_ks
nvim_get_api_info() nvim_get_api_info()
2要素のタプル(配列)を返します。項目の0は現在のチャネルID、項目1はapi-metadataマップ(Dict)です。
属性
api-fast RPCのみ
戻り値
2要素のタプル[{channel-id}, {api-metadata}]
nvim_get_chan_info({chan}) nvim_get_chan_info()
チャネルに関する情報を取得します。
パラメータ
{chan} channel_id、または現在のチャネルの場合は0
戻り値
以下のキーを持つチャネル情報辞書
"id" チャネルID。
"argv" (オプション)ジョブの引数リスト。
"stream" チャネルの基になるストリーム。
"stdio" このNvimインスタンスのstdinとstdout。
"stderr" このNvimインスタンスのstderr。
"socket" TCP/IPソケットまたは名前付きパイプ。
"job" そのstdioを介して通信するジョブ。
"mode" チャネルで受信したデータがどのように解釈されるか。
"bytes" 生のバイトを送受信します。
"terminal" ターミナルインスタンスはASCIIシーケンスを解釈します。
"rpc" チャネルでRPC通信がアクティブです。
"pty" (オプション) 疑似端末の名前。POSIXシステムでは、これは "/dev/pts/1"のようなデバイスパスです。不明な場合は、ptyが使用されている場合(たとえば、Windowsのconptyの場合)、キーはまだ存在します。
"buffer" (オプション) ターミナルインスタンスに接続されたバッファ。
"client" (オプション) nvim_set_client_info()経由で提供されたピア(RPCチャネルのもう一方の端にあるクライアント)に関する情報。
nvim_get_color_by_name({name}) nvim_get_color_by_name()
nvim_get_color_map()カラー名または "#rrggbb" 16進数文字列の24ビットRGB値を返します。
:echo nvim_get_color_by_name("Pink")
:echo nvim_get_color_by_name("#cbcbcb")
パラメータ
{name} カラー名または"#rrggbb"文字列
戻り値
24ビットRGB値、または引数が無効な場合は-1。
nvim_get_color_map() nvim_get_color_map()
カラー名とRGB値のマップを返します。
キーはカラー名(例:「アクア」)で、値は24ビットRGBカラー値(例:65535)です。
戻り値
カラー名とRGB値のマップ。
nvim_get_context({opts}) nvim_get_context()
現在のエディタ状態のマップを取得します。
パラメータ
{opts} オプションのパラメータ。
types: 収集するコンテキストタイプ("regs"、"jumps"、"bufs"、"gvars"、...)のリスト。または「すべて」の場合は空。
戻り値
グローバルなコンテキストのマップ。
nvim_get_current_buf() nvim_get_current_buf()
現在のバッファを取得します。
戻り値
バッファハンドル
nvim_get_current_line() nvim_get_current_line()
現在の行を取得します。
戻り値
現在の行の文字列
nvim_get_current_tabpage() nvim_get_current_tabpage()
現在のタブページを取得します。
戻り値
タブページハンドル
nvim_get_current_win() nvim_get_current_win()
現在のウィンドウを取得します。
戻り値
ウィンドウハンドル
nvim_get_hl({ns_id}, {opts}) nvim_get_hl()
名前空間内のすべての、または特定のハイライトグループを取得します。
注意
ハイライト定義マップでlink属性が定義されている場合、他の属性は有効になりません(:hi-linkを参照)。
パラメータ
{ns_id} 名前空間ns_idのハイライトグループを取得します。 nvim_get_namespaces()。グローバルハイライトグループ:highlightを取得するには0を使用します。
{opts} オプション辞書
name: (string) 名前でハイライト定義を取得します。
id: (integer) IDでハイライト定義を取得します。
link: (boolean、デフォルトはtrue) 有効な定義の代わりにリンクされたグループ名を表示します :hi-link
create: (boolean、デフォルトはtrue) ハイライトグループが存在しない場合は作成します。
戻り値
ハイライトグループは、nvim_set_hl()のようにグループ名からハイライト定義マップへのマップとして、または名前またはIDで要求された場合は単一のハイライト定義マップとして取得します。
nvim_get_hl_id_by_name({name}) nvim_get_hl_id_by_name()
名前でハイライトグループを取得します。
hlID()に似ていますが、存在しない場合は新しいIDを割り当てます。
nvim_get_hl_ns({opts}) nvim_get_hl_ns()
アクティブなハイライト名前空間を取得します。
パラメータ
{opts} オプションのパラメータ
winid: (number) ウィンドウのハイライト名前空間を取得するためのwindow-IDnvim_win_set_hl_ns()がウィンドウに対して呼び出されていない(または-1の名前空間で呼び出された)場合は、値-1が返されます。
戻り値
名前空間ID、または-1
nvim_get_keymap({mode}) nvim_get_keymap()
グローバル(非バッファローカル)なマッピング定義のリストを取得します。
パラメータ
{mode} モードの短い名前("n", "i", "v", ...)
戻り値
maparg()のような、マッピングを記述する辞書の配列。"buffer"キーは常にゼロです。
nvim_get_mark({name}, {opts}) nvim_get_mark()
大文字/ファイル名付きマークの位置を表す(行、列、バッファ、バッファ名)タプルを返します。「行末」の列位置は、v:maxcol(大きな数)として返されます。 mark-motionsを参照してください。
マークは(1,0)ベースでインデックス付けされます。 api-indexing
注意
小文字の名前(または他のバッファローカルなマーク)はエラーです。
パラメータ
{name} マーク名
{opts} オプションのパラメータ。将来の使用のために予約されています。
戻り値
4要素のタプル(行、列、バッファ、バッファ名)。マークが設定されていない場合は(0、0、0、'')。
以下も参照してください
nvim_get_mode() nvim_get_mode()
現在のモードを取得します。 mode()。「blocking」は、Nvimが入力を待機している場合はtrueです。
属性
api-fast
戻り値
辞書 { "mode": String, "blocking": Boolean }
nvim_get_proc({pid}) nvim_get_proc()
プロセスpidを記述する情報を取得します。
戻り値
プロセスプロパティのマップ。プロセスが見つからない場合はNIL。
nvim_get_proc_children({pid}) nvim_get_proc_children()
プロセスpidの直下の子を取得します。
戻り値
子プロセスIDの配列。プロセスが見つからない場合は空。
nvim_get_runtime_file({name}, {all}) nvim_get_runtime_file()
'runtimepath'順に、ランタイムディレクトリ内のファイルを検索します。
"name"にはワイルドカードを含めることができます。例えば、nvim_get_runtime_file("colors/*.{vim,lua}", true)は、すべてのカラースキームファイルを返します。サブディレクトリの検索パターンでは、プラットフォームに関係なく、常にスラッシュ(/)を使用してください。
ファイルが見つからなくてもエラーにはなりません。その場合は空の配列が返されます。
属性
api-fast
パラメータ
検索するファイルの{name}パターン
{all} すべての一致を返すか、最初の一致のみを返すか
戻り値
見つかったファイルへの絶対パスのリスト
nvim_get_var({name}) nvim_get_var()
グローバル (g:) 変数を取得します。
パラメータ
{name} 変数名
戻り値
変数の値
nvim_get_vvar({name}) nvim_get_vvar()
v: 変数を取得します。
パラメータ
{name} 変数名
戻り値
変数の値
nvim_input({keys}) nvim_input()
生のユーザー入力をキューに入れます。nvim_feedkeys()とは異なり、これは低レベルの入力バッファを使用し、呼び出しは非ブロッキングです(入力はイベントループによって非同期的に処理されます)。
テキストのブロックを入力するには、nvim_paste()の方がはるかに高速で、推奨されます。
実行エラーの場合:失敗しませんが、v:errmsgを更新します。
注意
<CR>のようなキーコードは変換されるため、"<"は特別です。リテラルの"<"を入力するには、<LT>を送信してください。
マウスイベントにはnvim_input_mouse()を使用します。疑似キー形式の<LeftMouse><col,row>は、api-level 6以降では非推奨です。
属性
api-fast
パラメータ
{keys} 入力するキー
戻り値
実際に書き込まれたバイト数(バッファがいっぱいになると、要求された数よりも少なくなる場合があります)。
nvim_input_mouse()
nvim_input_mouse({button}, {action}, {modifier}, {grid}, {row}, {col}) GUIからマウスイベントを送信します。
非ブロッキング:結果を待たずに、イベントループによってすぐに処理されるイベントをキューに入れます。
注意
現在、これはループ内で複数回呼び出すことによる複数のマウスイベントの「スクリプト化」をサポートしていません。中間マウスの位置は無視されます。GUIでリアルタイムのマウス入力を実装するために使用する必要があります。nvim_input()の非推奨の疑似キー形式(<LeftMouse><col,row>)も同じ制限があります。
属性
api-fast
パラメータ
{button} マウスボタン: "left", "right", "middle", "wheel", "move", "x1", "x2" のいずれか。
{action} 通常のボタンの場合、"press", "drag", "release" のいずれか。ホイールの場合、"up", "down", "left", "right" のいずれか。"move"の場合は無視されます。
{modifier} 各修飾子を単一の文字で表した修飾子の文字列。キー押下の場合と同じ指定子が使用されますが、"-"区切り文字はオプションであるため、"C-A-"、"c-a"、"CA"のいずれもCtrl+Alt+クリックを指定するために使用できます。
{grid} クライアントがui-multigridを使用している場合、グリッド番号。それ以外の場合は0。
{row} マウスの行位置(再描画イベントのようにゼロベース)
{col} マウスの列位置(再描画イベントのようにゼロベース)
nvim_list_bufs() nvim_list_bufs()
現在のバッファハンドルリストを取得します
:ls!のように、リストされていない(ロードされていない/削除された)バッファが含まれます。バッファがロードされているかどうかを確認するには、nvim_buf_is_loaded()を使用してください。
戻り値
バッファハンドルのリスト
nvim_list_chans() nvim_list_chans()
開いているすべてのチャネルに関する情報を取得します。
戻り値
辞書の配列。それぞれがnvim_get_chan_info()で指定された形式でチャネルを記述します。
nvim_list_runtime_paths() nvim_list_runtime_paths()
runtime-search-pathに含まれるパスを取得します。
戻り値
パスのリスト
nvim_list_tabpages() nvim_list_tabpages()
現在のタブページハンドルリストを取得します。
戻り値
タブページハンドルのリスト
nvim_list_uis() nvim_list_uis()
アタッチされたUIを表す辞書のリストを取得します。
戻り値
UI辞書の配列。それぞれに次のキーがあります。
"height" UIの要求された高さ
"width" UIの要求された幅
"rgb" UIがRGBカラーを使用する場合はtrue(falseの場合はcterm-colorsを意味します)
"ext_..." 要求されたUI拡張機能。 ui-optionを参照してください
"chan" リモートUIのチャネルID
nvim_list_wins() nvim_list_wins()
現在のウィンドウハンドルリストを取得します。
戻り値
ウィンドウハンドルのリスト
nvim_load_context({dict}) nvim_load_context()
指定されたコンテキストマップから現在のエディタ状態を設定します。
パラメータ
{dict} コンテキストマップ。
nvim_notify({msg}, {log_level}, {opts}) nvim_notify()
ユーザーにメッセージを通知します
vim.notifyへの呼び出しをリレーします。デフォルトでは、メッセージがエコーエリアに転送されますが、デスクトップ通知をトリガーするようにオーバーライドできます。
パラメータ
{msg} ユーザーに表示するメッセージ
{log_level} ログレベル
{opts} 将来の使用のために予約されています。
nvim_open_term({buffer}, {opts}) nvim_open_term()
バッファにターミナルインスタンスを開きます
デフォルトでは(そして現在唯一のオプション)ターミナルは外部プロセスに接続されません。代わりに、チャネルで送信された入力はターミナルによって直接エコーされます。これは、RPCメッセージの一部として返されるANSIターミナルシーケンスなどを表示するのに役立ちます。
注意: 正しいサイズを使用してターミナルを直接起動するには、これを呼び出す前に、構成されたウィンドウにバッファを表示します。たとえば、フローティングディスプレイの場合、まずnvim_create_buf()を使用して空のバッファを作成し、次にnvim_open_win()を使用して表示し、次にこの関数を呼び出します。次に、nvim_chan_send()をすぐに呼び出して、意図したサイズの仮想ターミナルでシーケンスを処理できます。
属性
textlock がアクティブな場合は許可されません
パラメータ
{buffer} 使用するバッファ(空であることが期待されます)
{opts} オプションのパラメータ。
on_input: 送信された入力(ターミナルモードでのキー押下など)用のLuaコールバック。注意: キー押下は、PTYマスターエンドに送られるときと同様に生で送信されます。たとえば、キャリッジリターンは"\n"ではなく"\r"として送信されます。textlockが適用されます。ただし、コールバックでnvim_chan_send()を直接呼び出すこともできます。 ["input", term, bufnr, data]
force_crlf: (boolean、デフォルトはtrue)"\n"を"\r\n"に変換します。
戻り値
チャネルID、またはエラーの場合は0
nvim_out_write({str}) nvim_out_write()
Vim出力バッファにメッセージを書き込みます。"\n"は追加されず、メッセージはバッファリングされ(表示されません)、改行が書き込まれるまで表示されません。
パラメータ
{str} メッセージ
nvim_paste({data}, {crlf}, {phase}) nvim_paste()
カーソル位置に(どのモードでも)貼り付け、ドット (.) で入力を繰り返せるように「やり直し」を設定します。UIは「貼り付け」を実装するためにこれを呼び出しますが、スクリプトで大きく、ドットで繰り返すことができるテキストブロックを入力するためにも使用されます(マッピング/イベントの影響を受けるためはるかに遅いnvim_input()とは対照的です)。
vim.paste()ハンドラーを呼び出します。これは各モードを適切に処理します。
エラー('nomodifiable'vim.paste()の失敗など)はerrに反映されますが、戻り値(vim.paste()によって厳密に決定されます)には影響しません。エラーまたはキャンセル時、後続の呼び出しは、次の貼り付けが開始される(フェーズ1または-1)まで無視(「ドレイン」)されます。
複数行テキストを挿入するためのマッピングとスクリプトで役立ちます。例
vim.keymap.set('n', 'x', function()
  vim.api.nvim_paste([[
    line1
    line2
    line3
  ]], false, -1)
end, { buffer = true })
属性
textlock がアクティブな場合は許可されません
パラメータ
{data} 複数行の入力。行はLF("\n")で改行します。バイナリ(NULバイトを含む)の場合があります。
{crlf} CRとCRLFでも改行します。
{phase} -1:単一の呼び出しで貼り付けます(つまり、ストリーミングなし)。貼り付けを「ストリーミング」するには、次のphase値でnvim_pasteを順番に呼び出します。
1:貼り付けを開始します(正確に1回)
2:貼り付けを続けます(0回以上)
3:貼り付けを終了します(正確に1回)
戻り値
true:クライアントは貼り付けを続行できます。
false:クライアントは貼り付けをキャンセルする必要があります。
nvim_put({lines}, {type}, {after}, {follow}) nvim_put()
カーソル位置に(どのモードでも)テキストを配置します。ドットで繰り返し可能な入力の場合は、nvim_paste()を使用してください。
常に行単位の:putpを比較してください。
属性
textlock がアクティブな場合は許可されません
パラメータ
{lines} readfile()スタイルの行リスト。チャネル行
{type} 編集動作:getregtype()結果、または
"b" ブロック単位のビジュアルモード(幅を含めることができます。例:"b3")
"c" 文字単位モード
"l" 行単位モード
"" 内容によって推測します。 setreg()を参照してください
{after} trueの場合、カーソルの後(pのように)に挿入するか、前(Pのように)に挿入します。
{follow} trueの場合、挿入されたテキストの最後にカーソルを配置します。
nvim_replace_termcodes()
nvim_replace_termcodes({str}, {from_part}, {do_lt}, {special}) 文字列内のターミナルコードとキーコード<CR><Esc>など)を内部表現に置き換えます。
パラメータ
{str} 変換する文字列。
{from_part} レガシーVimパラメーター。通常はtrue。
{do_lt} <lt>も変換します。specialがfalseの場合は無視されます。
{special} キーコードを置き換えます。例:<CR>は"\r"文字になります。
以下も参照してください
replace_termcodes
cpoptions
nvim_select_popupmenu_item()
nvim_select_popupmenu_item({item}, {insert}, {finish}, {opts}) 補完ポップアップメニュー内の項目を選択します。
ins-completioncmdline-completionのいずれのポップアップメニューもアクティブでない場合、このAPI呼び出しは暗黙的に無視されます。ui-popupmenuを使用する外部UIがマウスでポップアップメニューを制御するのに役立ちます。マッピングでも使用できます。マッピングが補完モードを終了しないようにするには、<Cmd> :map-cmdまたはLuaマッピングを使用します。
パラメータ
{item} 選択する項目のインデックス(ゼロベース)。値-1は何も選択せず、元のテキストを復元します。
{insert} ins-completionの場合、選択をバッファに挿入するかどうか。cmdline-completionの場合は無視されます。
{finish} 補完を終了し、ポップアップメニューを閉じます。{insert}を意味します。
{opts} オプションのパラメータ。将来の使用のために予約されています。
nvim_set_client_info()
nvim_set_client_info({name}, {version}, {type}, {methods}, {attributes}) クライアントを自己識別します。
クライアント/プラグイン/アプリケーションは、接続後にこれを呼び出して、デバッグとオーケストレーションのために、そのIDと目的に関するヒントを提供する必要があります。
複数回呼び出すことができます。呼び出し側は、必要に応じて古い情報をマージする必要があります。例:ライブラリが最初にチャネルを識別し、次にそのライブラリを使用するプラグインが後で自身を識別します。
注意
「何もしないよりはましだ」。すべてのフィールドを含める必要はありません。
属性
RPCのみ
パラメータ
{name} 接続されたクライアントの短い名前
{version} バージョンを記述する辞書。次の(オプションの)キーがあります
"major" メジャーバージョン(まだリリースがない場合、設定されていない場合は0がデフォルト)
"minor" マイナーバージョン
"patch" パッチ番号
"prerelease" "dev"や"beta1"のようなプレリリースを記述する文字列
"commit" コミットのハッシュまたは同様の識別子
{type} 次のいずれかの値である必要があります。クライアントライブラリは、ユーザーによってオーバーライドされない限り、「remote」をデフォルトにする必要があります。
"remote" 「Nvimフレーバー」のMessagePack-RPC(応答は要求の逆順である必要があります)を介して接続されたリモートクライアント。msgpack-rpc
"msgpack-rpc" 完全なMessagePack-RPC準拠のプロトコルを介してNvimに接続されたリモートクライアント。
"ui" GUIフロントエンド
"embedder" Nvimをコンポーネントとして使用するアプリケーション(たとえば、Vimモードを実装するIDE/エディター)。
"host" プラグインホスト。通常はnvimによって起動されます
"plugin" 単一のプラグイン。nvimによって起動されます
{methods} クライアントに組み込まれたメソッド。ホストの場合、後で発見されるプラグインメソッドは含まれません。キーはメソッド名で、値は次の(オプションの)キーを持つ辞書です(将来のNvimバージョンでキーが追加される可能性があるため、不明なキーは無視されます。クライアントは、このバージョンまたはそれ以降のバージョンで定義されたキーのみを使用する必要があります)。
"async" が true の場合、通知として送信します。false または未指定の場合、ブロッキングリクエストを使用します。
"nargs" 引数の数。単一の整数または2つの整数の配列(最小値と最大値を含む)です。
{attributes} 任意の文字列:文字列のマップで、非公式なクライアントプロパティを表します。推奨されるキー
"pid": プロセスID。
"website": クライアントのホームページURL(例:GitHubリポジトリ)。
"license": ライセンスの説明("Apache 2"、"GPLv3"、"MIT"など)。
"logo": 画像へのURIまたはパス。できれば小さなロゴまたはアイコン。 .pngまたは.svg形式が推奨されます。
nvim_set_current_buf({buffer}) nvim_set_current_buf()
現在のバッファを設定します。
属性
textlockがアクティブな場合、またはcmdwinでは許可されていません。
パラメータ
{buffer} バッファハンドル
nvim_set_current_dir({dir}) nvim_set_current_dir()
グローバルな作業ディレクトリを変更します。
パラメータ
{dir} ディレクトリパス
nvim_set_current_line({line}) nvim_set_current_line()
現在の行を設定します。
属性
textlock がアクティブな場合は許可されません
パラメータ
{line} 行の内容
nvim_set_current_tabpage({tabpage}) nvim_set_current_tabpage()
現在のタブページを設定します。
属性
textlockがアクティブな場合、またはcmdwinでは許可されていません。
パラメータ
{tabpage} タブページハンドル
nvim_set_current_win({window}) nvim_set_current_win()
現在のウィンドウを設定します。
属性
textlockがアクティブな場合、またはcmdwinでは許可されていません。
パラメータ
{window} ウィンドウハンドル
nvim_set_hl({ns_id}, {name}, {val}) nvim_set_hl()
ハイライトグループを設定します。
注意
ハイライトグループを更新できる:highlightコマンドとは異なり、この関数は定義を完全に置き換えます。たとえば、nvim_set_hl(0, 'Visual', {})は、ハイライトグループ 'Visual' をクリアします。
fgおよびbgキーは、Normalグループの対応するフォアグラウンド値とバックグラウンド値のエイリアスとして機能する文字列値"fg"または"bg"も受け入れます。 Normalグループが定義されていない場合、これらの値を使用するとエラーになります。
linkが他の属性と組み合わせて使用されている場合、linkのみが有効になります(:hi-linkを参照)。
パラメータ
{ns_id} このハイライトのネームスペースID nvim_create_namespace()。ハイライトグループをグローバルに設定するには0を使用してください :highlight。グローバル以外の名前空間からのハイライトはデフォルトではアクティブではありません。アクティブにするには、nvim_set_hl_ns()またはnvim_win_set_hl_ns()を使用してください。
{name} ハイライトグループ名。例:"ErrorMsg"
{val} ハイライト定義マップ。次のキーを受け入れます。
fg: 色の名前または"#RRGGBB"。注を参照。
bg: 色の名前または"#RRGGBB"。注を参照。
sp: 色の名前または"#RRGGBB"
blend: 0〜100の整数
bold: 真偽値
standout: 真偽値
underline: 真偽値
undercurl: 真偽値
underdouble: 真偽値
underdotted: 真偽値
underdashed: 真偽値
strikethrough: 真偽値
italic: 真偽値
reverse: 真偽値
nocombine: 真偽値
link: リンクする別のハイライトグループの名前。 :hi-linkを参照。
default: 既存の定義を上書きしません :hi-default
ctermfg: ctermカラーのフォアグラウンドを設定します ctermfg
ctermbg: ctermカラーのバックグラウンドを設定します ctermbg
cterm: highlight-argsのようなcterm属性マップ。設定しない場合、cterm属性は上記の属性マップの属性と一致します。
force: trueの場合、ハイライトグループが存在するときに強制的に更新します。
nvim_set_hl_ns({ns_id}) nvim_set_hl_ns()
nvim_set_hl()で定義されたハイライトのアクティブな名前空間を設定します。これは単一のウィンドウに対して設定できます。 nvim_win_set_hl_ns()を参照してください。
パラメータ
{ns_id} 使用する名前空間
nvim_set_hl_ns_fast({ns_id}) nvim_set_hl_ns_fast()
再描画中にnvim_set_hl()で定義されたハイライトのアクティブな名前空間を設定します。
この関数は、主にnvim_set_decoration_provider()のon_winおよびon_lineコールバックから、再描画中に呼び出されることを意図しています。これにより、再描画サイクル中に名前空間を変更できます。
属性
api-fast
パラメータ
{ns_id} アクティブにする名前空間
nvim_set_keymap({mode}, {lhs}, {rhs}, {opts}) nvim_set_keymap()
指定されたモードのグローバルなマッピングを設定します。
バッファローカルなマッピングを設定するには、nvim_buf_set_keymap()を使用します。
:mapとは異なり、先頭/末尾の空白は{lhs}または{rhs}の一部として受け入れられます。空の{rhs}<Nop>です。キーコードは通常どおり置き換えられます。
call nvim_set_keymap('n', ' <NL>', '', {'nowait': v:true})
は同等です
nmap <nowait> <Space><NL> <Nop>
パラメータ
{mode} モードの短い名前(マップコマンドのプレフィックス:"n"、"i"、"v"、"x"、...)または:map!の場合は"!"、または:mapの場合は空の文字列。それぞれ、挿入モード、コマンドラインモード、またはその両方での省略形の場合は"ia"、"ca"、または"!a"
{lhs} マッピングの左辺 {lhs}
{rhs} マッピングの右辺 {rhs}
{opts} オプションのパラメーターマップ。<buffer>を除くすべての:map-argumentsをキーとして受け入れ、値はブール値(デフォルトはfalse)です。また
"noremap"は、:noremapのように、再帰マッピングを無効にします。
"desc" 人間が読める説明。
"callback" {rhs}の代わりに呼び出されるLua関数。
"replace_keycodes" (真偽値) "expr"がtrueの場合、結果の文字列のキーコードを置換します(nvim_replace_termcodes()を参照)。Lua "callback"からnilを返すことは、空の文字列を返すことと同等です。
nvim_set_var({name}, {value}) nvim_set_var()
グローバル(g:)変数を設定します。
パラメータ
{name} 変数名
{value} 変数の値
nvim_set_vvar({name}, {value}) nvim_set_vvar()
v:変数が読み取り専用でない場合に設定します。
パラメータ
{name} 変数名
{value} 変数の値
nvim_strwidth({text}) nvim_strwidth()
textによって占有される表示セルの数を計算します。 <Tab>を含む制御文字は1つのセルとして数えられます。
パラメータ
{text} テキスト
戻り値
セルの数
nvim__complete_set({index}, {opts}) nvim__complete_set()
実験的:このAPIは将来変更される可能性があります。
指定されたインデックスの補完項目の情報を設定します。情報テキストがウィンドウに表示された場合、ウィンドウとバッファIDを返します。表示されていない場合は空の辞書を返します。
パラメータ
{index} 補完候補インデックス
{opts} オプションのパラメータ。
情報:(文字列)情報テキスト。
戻り値
これらのキーを含む辞書
winid:(数値)フローティングウィンドウID
bufnr:(数値)フローティングウィンドウのバッファID
nvim__get_runtime({pat}, {all}, {opts}) nvim__get_runtime()
ランタイムディレクトリでファイルを検索します
属性
api-fast
パラメータ
{pat} 検索するファイルのパターン
{all} すべての一致を返すか、最初の一致のみを返すか
{opts} is_lua: Luaサブディレクトリのみを検索します
戻り値
見つかったファイルへの絶対パスのリスト
nvim__id({obj}) nvim__id()
引数として与えられたオブジェクトを返します。
このAPI関数はテストに使用されます。プラグインでの存在に依存すべきではありません。
パラメータ
{obj} 返すオブジェクト。
戻り値
その引数。
nvim__id_array({arr}) nvim__id_array()
引数として与えられた配列を返します。
このAPI関数はテストに使用されます。プラグインでの存在に依存すべきではありません。
パラメータ
{arr} 返す配列。
戻り値
その引数。
nvim__id_dict({dct}) nvim__id_dict()
引数として与えられた辞書を返します。
このAPI関数はテストに使用されます。プラグインでの存在に依存すべきではありません。
パラメータ
{dct} 返す辞書。
戻り値
その引数。
nvim__id_float({flt}) nvim__id_float()
引数として与えられた浮動小数点値を返します。
このAPI関数はテストに使用されます。プラグインでの存在に依存すべきではありません。
パラメータ
{flt} 返す値。
戻り値
その引数。
nvim__inspect_cell({grid}, {row}, {col}) nvim__inspect_cell()
注意:UIがhlstateを使用していない場合、これは最初にhlstateを返しません。
nvim__invalidate_glyph_cache() nvim__invalidate_glyph_cache()
テスト用。schar_cache_clear_if_fullの条件は到達するのが難しいため、この関数を使用してテストでキャッシュのクリアを強制的に実行できます。
nvim__redraw({opts}) nvim__redraw()
実験的:このAPIは将来変更される可能性があります。
Nvimにさまざまなコンポーネントを再描画するように指示します。
パラメータ
{opts} オプションのパラメータ。
win:以下に示すように、特定のウィンドウIDをターゲットにします。
buf:以下に示すように、特定のバッファ番号をターゲットにします。
flush:保留中の更新で画面を更新します。
valid:存在する場合は、winbuf、またはすべてのウィンドウを再描画対象としてマークします。trueの場合、変更された行のみを再描画します(デコレーションプロバイダーに役立ちます)。falseの場合、強制的に再描画します。
range:bufwinのバッファ、または現在のバッファの範囲を再描画します(デコレーションプロバイダーに役立ちます)。範囲の最初と最後の行番号を含むタプル[first, last]を0ベースのエンドエクスクルーシブAPIインデックスで期待します。
cursor:winまたは現在のウィンドウで画面上のカーソル位置をすぐに更新します。
statuscolumn:bufwinまたはすべてのウィンドウで'statuscolumn'を再描画します。
statusline:bufwinまたはすべてのウィンドウで'statusline'を再描画します。
winbar:bufwinまたはすべてのウィンドウで'winbar'を再描画します。
tabline:'tabline'を再描画します。
以下も参照してください
nvim__stats() nvim__stats()
内部統計を取得します。
戻り値
さまざまな内部統計のマップ。

Vimscript関数 api-vimscript

nvim_call_dict_function()
nvim_call_dict_function({dict}, {fn}, {args}) 指定された引数を使用してVimscriptのディクショナリ関数を呼び出します。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
パラメータ
{dict} 辞書、またはVimscriptのself辞書と評価される文字列
{fn} Vimscript辞書で定義された関数の名前
{args} 配列にパックされた関数の引数
戻り値
関数呼び出しの結果
nvim_call_function({fn}, {args}) nvim_call_function()
指定された引数を使用してVimscript関数を呼び出します。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
パラメータ
{fn} 呼び出す関数
{args} 配列にパックされた関数の引数
戻り値
関数呼び出しの結果
nvim_command({command}) nvim_command()
Exコマンドを実行します。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
これよりもnvim_cmd()またはnvim_exec2()を使用することをお勧めします。複数行のVimスクリプトまたはExコマンドを直接評価するには、nvim_exec2()を使用します。構造化された形式を使用してExコマンドを作成してから実行するには、nvim_cmd()を使用します。Exコマンドを評価前に変更するには、nvim_parse_cmd()nvim_cmd()と組み合わせて使用します。
パラメータ
{command} Exコマンド文字列
nvim_eval({expr}) nvim_eval()
Vimscriptのを評価します。辞書とリストは再帰的に展開されます。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
パラメータ
{expr} Vimscriptの式文字列
戻り値
評価結果または展開されたオブジェクト
nvim_exec2({src}, {opts}) nvim_exec2()
Vimscript(複数行のExコマンドのブロック)を、匿名:sourceのように実行します。
nvim_command()とは異なり、この関数はヒアドキュメント、スクリプトスコープ(s:)などをサポートします。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
パラメータ
{src} Vimscriptコード
{opts} オプションのパラメータ。
output: (boolean, デフォルト: false) すべての(エラーではなく、シェル:!ではない)出力をキャプチャして返すかどうか。
戻り値
実行に関する情報を含む辞書。以下のキーを持つ。
output: (string|nil) opts.outputがtrueの場合の出力。
以下も参照してください
nvim_parse_expression()
nvim_parse_expression({expr}, {flags}, {highlight}) Vimscriptの式を解析します。
属性
api-fast
パラメータ
{expr} 解析する式。常に1行として扱われます。
{flags} フラグ
"m":複数の式が連続して許可されている場合(最初の式のみが解析されます)。
"E":EOCトークンが許可されていない場合(解析プロセスを停止するか、演算子/スペースとして認識されるかを決定しますが、エラーも発生します)。
"l":「:let」または「:for」のために左辺値で解析を開始する必要がある場合。一般的なフラグセット。
"m":「:echo」のように解析する場合。
"E":「<C-r>=」のように解析する場合。
空文字列:「:call」の場合。
"lm":「:let」の場合。
{highlight} trueの場合、戻り値には、4タプル(配列)(整数, 整数, 整数, 文字列)の配列を含む "highlight" キーも含まれます。最初の3つの数値はハイライトされた領域を定義し、行、開始列、終了列を表します(後者は排他的です:[start_col, end_col)の領域をハイライトする必要があります)。
戻り値
AST:以下のキーを持つトップレベルの辞書
"error":パーサーが何らかのエラーを検出した場合にのみ存在する、エラーを含む辞書。以下のキーを含む
"message":printf形式のエラーメッセージ(翻訳済み)。必ず1つの"%.*s"を含める必要があります。
"arg":エラーメッセージの引数(文字列)。
"len":正常に解析されたバイト数。フラグが""の場合、expr文字列の長さに等しくなるはずです。(ここでの「正常に解析された」とは、「最初のエラーまで」ではなく、「AST作成に参加した」ことを意味します。)
"ast":AST。nilまたは以下のキーを持つ辞書。
"type":ノードタイプ。"kExprNode"プレフィックスなしで文字列化されたExprASTNodeTypeの値の1つ。
"start":ノードが「開始された」場所を記述するペア[行, 列]。「行」は常に0です(たとえば「:let」でこのAPIを使用する場合、0にはなりません。ただし、それはまだ存在しません)。両方の要素は整数です。
"len":ノードの「長さ」。これは "start" と共に、主にデバッグ目的(パーサーのデバッグとデバッグ情報の提供)のために存在します。
"children":top/"ast"で記述されたノードのリスト。常にゼロ、1つ、または2つの子が存在します。ノードに子がない場合、キーは存在しません。子の最大数はnode_maxchildren配列にあります。
ローカル値(特定のノードにのみ存在)
"scope":1つの整数。"Option"ノードと"PlainIdentifier"ノードのスコープを指定します。"Option"の場合、ExprOptScopeの値の1つであり、"PlainIdentifier"の場合、ExprVarScopeの値の1つです。
"ident":識別子(スコープがある場合は、スコープなし)。"Option"、"PlainIdentifier"、"PlainKey"、および"Environment"ノードに存在します。
"name":整数、レジスタ名(1文字)または-1。"Register"ノードにのみ存在します。
"cmp_type":文字列、比較タイプ。"kExprCmp"プレフィックスなしで文字列化されたExprComparisonTypeの値の1つ。"Comparison"ノードにのみ存在します。
"ccs_strategy":文字列、ケース比較戦略。"kCCStrategy"プレフィックスなしで文字列化されたExprCaseCompareStrategyの値の1つ。"Comparison"ノードにのみ存在します。
"augmentation":"Assignment"ノードの拡張タイプ。それぞれ "="、"+="、"-="、または ".=" の場合、空文字列、"Add"、"Subtract"、または "Concat" のいずれかです。
"invert":真理値。"Comparison"の結果を反転する必要がある場合はtrue。"Comparison"ノードにのみ存在します。
"ivalue":整数。"Integer"ノードの整数値。
"fvalue":浮動小数点。"Float"ノードの浮動小数点値。
"svalue":文字列。"SingleQuotedString"ノードと"DoubleQuotedString"ノードの値。

コマンド関数 api-command

nvim_buf_create_user_command()
nvim_buf_create_user_command({buffer}, {name}, {command}, {opts}) バッファローカルコマンドユーザー定義コマンドを作成します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0。
以下も参照してください
nvim_create_user_command
nvim_buf_del_user_command()
nvim_buf_del_user_command({buffer}, {name}) バッファローカルのユーザー定義コマンドを削除します。
:command-bufferまたはnvim_buf_create_user_command()で作成されたコマンドのみ、この関数で削除できます。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0。
{name} 削除するコマンドの名前。
nvim_buf_get_commands({buffer}, {opts}) nvim_buf_get_commands()
バッファローカルのユーザー定義コマンドのマップを取得します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{opts} オプションのパラメータ。現在使用されていません。
戻り値
コマンドを記述するマップのマップ。
nvim_cmd({cmd}, {opts}) nvim_cmd()
Exコマンドを実行します。
nvim_command()とは異なり、このコマンドはStringではなく構造化されたDictを受け取ります。これにより、Exコマンドの構築と操作が容易になります。また、コマンド引数内にスペースを含めたり、ファイル名を展開しないコマンドでファイル名を展開したりすることもできます。コマンド引数は、数値、真理値、または文字列の場合もあります。
最初の引数は、vim.cmd()でその使用を簡単にするために、それをサポートするコマンドのcountの代わりに使用することもできます。たとえば、vim.cmd.bdelete{ count = 2 }の代わりに、vim.cmd.bdelete(2)を実行できます。
実行エラー時:Vimscriptエラーで失敗し、v:errmsgを更新します。
パラメータ
{cmd} 実行するコマンド。nvim_parse_cmd()の戻り値と同じ値を格納できるDictである必要があります。ただし、提供されている場合は無視される "addr"、"nargs"、"nextcmd" を除きます。"cmd"以外のすべての値はオプションです。
{opts} オプションのパラメータ。
output: (boolean, デフォルト: false) コマンド出力を返すかどうか。
戻り値
outputがtrueの場合、コマンド出力(エラーではない、シェル:!ではない)。それ以外の場合は空の文字列。
以下も参照してください
nvim_create_user_command()
nvim_create_user_command({name}, {command}, {opts}) グローバルなユーザー定義コマンドを作成します。
Luaでの使用法については、lua-guide-commands-createを参照してください。
:call nvim_create_user_command('SayHello', 'echo "Hello world!"', {'bang': v:true})
:SayHello
Hello world!
パラメータ
{name} 新しいユーザーコマンドの名前。大文字で始まる必要があります。
{command} このユーザーコマンドが実行されたときに実行する置換コマンド。Luaから呼び出された場合、コマンドはLua関数にすることもできます。この関数は、以下のキーを含む単一のテーブル引数で呼び出されます
name: (string) コマンド名
args: (string) コマンドに渡された引数(ある場合) <args>
fargs: (table) エスケープされていない空白で区切られた引数(複数の引数が許可されている場合)(ある場合) <f-args>
nargs: (string) 引数の数:command-nargs
bang: (boolean) コマンドが ! 修飾子で実行された場合は "true" <bang>
line1: (number) コマンド範囲の開始行 <line1>
line2: (number) コマンド範囲の最終行 <line2>
range: (number) コマンド範囲内のアイテム数:0、1、または2 <range>
count: (number) 提供された任意のカウント <count>
reg: (string) 指定されている場合は、オプションのレジスタ <reg>
mods: (string) コマンド修飾子(ある場合) <mods>
smods: (table) 構造化された形式のコマンド修飾子。nvim_parse_cmd()の "mods" キーと同じ構造を持っています。
{opts} オプションのコマンド属性
:command-bang:command-barなどの真理値属性をtrueに設定します(ただし、:command-bufferは設定しないでください。代わりにnvim_buf_create_user_command()を使用してください)。
"complete" :command-completeは、:command-completion-customlistのように機能するLua関数も受け入れます。
その他のパラメータ
desc: (string) {command}にLua関数が使用されている場合に、コマンドを一覧表示するために使用されます。
force: (boolean, デフォルト: true) 以前の定義を上書きします。
preview: (function) 'inccommand'のプレビューコールバック:command-preview
nvim_del_user_command({name}) nvim_del_user_command()
ユーザー定義コマンドを削除します。
パラメータ
{name} 削除するコマンドの名前。
nvim_get_commands({opts}) nvim_get_commands()
グローバル(バッファローカルではない)Exコマンドのマップを取得します。
現在、ユーザー定義コマンドのみがサポートされており、組み込みのExコマンドはサポートされていません。
パラメータ
{opts} オプションのパラメータ。現在、{"builtin":false}のみをサポートしています。
戻り値
コマンドを記述するマップのマップ。
以下も参照してください
nvim_parse_cmd({str}, {opts}) nvim_parse_cmd()
コマンドラインを解析します。
コマンド引数の有効性はチェックしません。
属性
api-fast
パラメータ
{str} 解析するコマンドライン文字列。"\n"を含めることはできません。
{opts} オプションのパラメータ。将来の使用のために予約されています。
戻り値
コマンド情報を含む辞書。以下のキーを持つ。
cmd: (string) コマンド名。
range: (array) (optional) コマンド範囲 (<line1> <line2>)。コマンドが範囲を受け入れない場合は省略されます。それ以外の場合、範囲が指定されていない場合は要素がなく、単一の範囲項目のみが指定されている場合は要素が1つ、両方の範囲項目が指定されている場合は要素が2つになります。
count: (number) (optional) コマンド<count>。コマンドがカウントを受け入れられない場合は省略されます。
reg: (string) (optional) コマンド<register>。コマンドがレジスタを受け入れられない場合は省略されます。
bang: (boolean) コマンドに<bang>(!)修飾子が含まれているかどうか。
args: (array) コマンド引数。
addr: (string) :command-addrの値。-addr=linesの場合は短縮名または "line" を使用します。
nargs: (string) :command-nargsの値。
nextcmd: (string) :barで区切られた複数のコマンドがある場合、次のコマンド。次のコマンドがない場合は空。
magic: (dict) コマンド引数で特殊な意味を持つ文字。
file: (boolean) コマンドがファイル名を展開するかどうか。これは、"%"、"#"、ワイルドカードなどの文字が展開されることを意味します。
bar: (boolean) "|" 文字はコマンド区切り文字として扱われ、二重引用符 (") 文字はコメントの開始として扱われます。
mods: (dict) :command-modifiers
filter: (dict) :filter
pattern: (string) フィルターパターン。フィルターがない場合は空文字列。
force: (boolean) フィルターが反転されているかどうか。
silent: (boolean) :silent
emsg_silent: (boolean) :silent!
unsilent: (boolean) :unsilent
sandbox: (boolean) :sandbox
noautocmd: (boolean) :noautocmd
browse: (boolean) :browse
confirm: (boolean) :confirm
hide: (boolean) :hide
horizontal: (boolean) :horizontal
keepalt: (boolean) :keepalt
keepjumps: (boolean) :keepjumps
keepmarks: (boolean) :keepmarks
keeppatterns: (boolean) :keeppatterns
lockmarks: (boolean) :lockmarks
noswapfile: (boolean) :noswapfile
tab: (integer) :tab。省略時は -1。
verbose: (integer) :verbose。省略時は -1。
vertical: (boolean) :vertical
split: (string) 分割修飾子の文字列。分割修飾子がない場合は空文字列。分割修飾子がある場合は、次のいずれかになります。
"aboveleft": :aboveleft
"belowright": :belowright
"topleft": :topleft
"botright": :botright

オプション関数 api-options

nvim_get_all_options_info() nvim_get_all_options_info()
すべてのオプションのオプション情報を取得します。
辞書は、完全なオプション名をキーとし、nvim_get_option_info2() で詳述されているオプションメタデータ辞書を持ちます。
戻り値
すべてのオプションの辞書
以下も参照してください
nvim_get_option_info2({name}, {opts}) nvim_get_option_info2()
任意のバッファーまたはウィンドウから1つのオプションのオプション情報を取得します。
結果の辞書には次のキーがあります。
name: オプションの名前('filetype' など)
shortname: オプションの短縮名('ft' など)
type: オプションの型 ("string"、"number"、または "boolean")
default: オプションのデフォルト値
was_set: オプションが設定されたかどうか。
last_set_sid: 最後に設定されたスクリプト ID(ある場合)
last_set_linenr: オプションが設定された行番号
last_set_chan: オプションが設定されたチャネル(ローカルの場合は 0)
scope: "global"、"win"、または "buf" のいずれか
global_local: win または buf オプションがグローバル値を持つかどうか
commalist: コンマ区切り値のリスト
flaglist: 1文字のフラグのリスト
{scope} が提供されない場合、最後に設定された情報は、利用可能な場合は現在のバッファーまたはウィンドウのローカル値に適用され、それ以外の場合はグローバル値の情報が返されます。この動作は、{opts} テーブルで {scope} を明示的に指定することで無効にできます。
パラメータ
{name} オプション名
{opts} オプションのパラメータ
scope: "global" または "local" のいずれか。:setglobal および :setlocal にそれぞれ類似しています。
win: window-ID。ウィンドウローカルオプションを取得するために使用します。
buf: バッファー番号。バッファーローカルオプションを取得するために使用します。{scope} が "local" であることを意味します。
戻り値
オプション情報
nvim_get_option_value({name}, {opts}) nvim_get_option_value()
オプションの値を取得します。この関数の動作は :set の動作と一致します。ローカルオプション値が存在する場合はローカルオプション値が返され、それ以外の場合はグローバル値が返されます。ローカル値は常に現在のバッファーまたはウィンドウに対応しますが、{opts} に "buf" または "win" が設定されている場合を除きます。
パラメータ
{name} オプション名
{opts} オプションのパラメータ
scope: "global" または "local" のいずれか。:setglobal および :setlocal にそれぞれ類似しています。
win: window-ID。ウィンドウローカルオプションを取得するために使用します。
buf: バッファー番号。バッファーローカルオプションを取得するために使用します。{scope} が "local" であることを意味します。
filetype: filetype。特定のファイルタイプのデフォルトオプションを取得するために使用します。他のオプションと一緒に使用することはできません。 注意: これは、対応するファイルタイプの ftplugin およびすべての FileType 自動コマンドをトリガーします。
戻り値
オプション値
nvim_set_option_value()
nvim_set_option_value({name}, {value}, {opts}) オプションの値を設定します。この関数の動作は :set の動作と一致します。グローバルローカルオプションの場合、{scope} で特に指定しない限り、グローバル値とローカル値の両方が設定されます。
オプション {win}{buf} は一緒に使用できないことに注意してください。
パラメータ
{name} オプション名
{value} 新しいオプション値
{opts} オプションのパラメータ
scope: "global" または "local" のいずれか。:setglobal および :setlocal にそれぞれ類似しています。
win: window-ID。ウィンドウローカルオプションを設定するために使用します。
buf: バッファー番号。バッファーローカルオプションを設定するために使用します。

バッファー関数 api-buffer

バッファーの詳細については、buffers を参照してください。
アンロードされたバッファー
バッファーは、:bunload コマンドまたはバッファーの 'bufhidden' オプションによってアンロードされる場合があります。バッファーがアンロードされると、そのファイルの内容はメモリから解放され、再ロードされる(通常は新しいウィンドウでバッファーを再度開くことによって)まで、vim はバッファー行を操作できません。nvim_buf_get_lines()nvim_buf_line_count() などの API メソッドは影響を受けます。
nvim_buf_is_loaded() または nvim_buf_line_count() を使用して、バッファーがロードされているかどうかを確認できます。
nvim_buf_attach({buffer}, {send_buffer}, {opts}) nvim_buf_attach()
チャネル、または Lua コールバックでバッファー更新イベントをアクティブにします。
例 (Lua): グローバル events 変数でバッファー更新をキャプチャします (その内容を表示するには "vim.print(events)" を使用します)
events = {}
vim.api.nvim_buf_attach(0, false, {
  on_lines = function(...)
    table.insert(events, {...})
  end,
})
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{send_buffer} 最初の通知にバッファー全体を含める必要がある場合は True: 最初の通知は nvim_buf_lines_event になります。それ以外の場合、最初の通知は nvim_buf_changedtick_event になります。Lua コールバック用ではありません。
{opts} オプションのパラメータ。
on_lines: 変更時に呼び出される Lua コールバック。デタッチするには、真実の値(false または nil 以外)を返します。引数
文字列 "lines"
バッファーハンドル
b:changedtick
変更された最初の行(0から始まるインデックス)
変更された最後の行
更新された範囲の最後の行
前の内容のバイト数
削除されたコードポイント (utf_sizes が true の場合)
削除されたコードユニット (utf_sizes が true の場合)
on_bytes: 変更時に呼び出される Lua コールバック。このコールバックは、on_lines と比較して、変更に関するより詳細な情報を受信します。デタッチするには、真実の値(false または nil 以外)を返します。引数
文字列 "bytes"
バッファーハンドル
b:changedtick
変更されたテキストの開始行 (0から始まるインデックス)
変更されたテキストの開始列
変更されたテキストのバイトオフセット (バッファーの先頭から)
変更されたテキストの古い終了行 (開始行からのオフセット)
変更されたテキストの古い終了列 (古い終了行 = 0 の場合、開始列からのオフセット)
変更されたテキストの古い終了バイト長
変更されたテキストの新しい終了行 (開始行からのオフセット)
変更されたテキストの新しい終了列 (新しい終了行 = 0 の場合、開始列からのオフセット)
変更されたテキストの新しい終了バイト長
on_changedtick: テキストの変更なしで changedtick がインクリメントされたときに呼び出される Lua コールバック。引数
文字列 "changedtick"
バッファーハンドル
b:changedtick
on_detach: デタッチ時に呼び出される Lua コールバック。引数
文字列 "detach"
バッファーハンドル
on_reload: リロード時に呼び出される Lua コールバック。バッファーの内容全体が変更されたと見なされる必要があります。引数
文字列 "reload"
バッファーハンドル
utf_sizes: on_lines の引数として、置換された領域の UTF-32 および UTF-16 サイズを含めます。
preview: コマンドプレビュー (つまり、'inccommand') イベントにもアタッチします。
戻り値
アタッチに失敗した場合 (無効なパラメータ、またはバッファーがロードされていない場合) は False。それ以外の場合は True。TODO: LUA_API_NO_EVAL
以下も参照してください
nvim_buf_call({buffer}, {fun}) nvim_buf_call()
バッファーを一時的な現在のバッファーとして、関数を呼び出します。
これにより、現在のバッファーが一時的に "buffer" に切り替わります。現在のウィンドウにすでに "buffer" が表示されている場合、ウィンドウは切り替えられません。現在のタブページ内のウィンドウ(フローティングを含む)にすでにバッファーが表示されている場合、これらのウィンドウのいずれかが一時的に現在のウィンドウとして設定されます。それ以外の場合、一時的なスクラッチウィンドウ(歴史的な理由から「自動コマンドウィンドウ」と呼ばれる)が使用されます。
これは、たとえば、termopen() のように、現在のバッファー/ウィンドウでのみ動作する Vimscript 関数を呼び出すのに便利です。
属性
Lua vim.api のみ
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{fun} バッファー内で呼び出す関数 (現在は Lua 呼び出し可能のみ)
戻り値
関数の戻り値。
nvim_buf_del_keymap({buffer}, {mode}, {lhs}) nvim_buf_del_keymap()
指定されたモードのバッファーローカルの mapping をマップ解除します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
以下も参照してください
nvim_buf_del_mark({buffer}, {name}) nvim_buf_del_mark()
バッファー内の名前付きマークを削除します。mark-motions を参照してください。
注意
バッファーに設定されたマークのみを削除します。マークがバッファーに設定されていない場合は false を返します。
パラメータ
{buffer} マークを設定するバッファー
{name} マーク名
戻り値
マークが削除された場合はtrue、それ以外はfalse。
以下も参照してください
nvim_buf_del_var({buffer}, {name}) nvim_buf_del_var()
バッファースコープ (b:) 変数を削除します
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{name} 変数名
nvim_buf_delete({buffer}, {opts}) nvim_buf_delete()
バッファーを削除します。:bwipeout を参照してください
属性
textlockがアクティブな場合、またはcmdwinでは許可されていません。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{opts} オプションのパラメータ。キー
force: 強制削除し、保存されていない変更を無視します。
unload: アンロードのみ。削除しないでください。:bunload を参照してください
nvim_buf_detach({buffer}) nvim_buf_detach()
チャネルでのバッファー更新イベントを非アクティブ化します。
属性
RPCのみ
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
デタッチに失敗した場合 (バッファーがロードされていないため) は False。それ以外の場合は True。
以下も参照してください
api-lua-detach Lua コールバックのデタッチについて
nvim_buf_get_changedtick({buffer}) nvim_buf_get_changedtick()
バッファーの変更ティックを取得します
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
b:changedtick 値。
nvim_buf_get_keymap({buffer}, {mode}) nvim_buf_get_keymap()
バッファーローカルの mapping 定義のリストを取得します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{mode} モードの短い名前("n", "i", "v", ...)
戻り値
マッピングを記述する maparg() のような辞書の配列。「buffer」キーは関連付けられたバッファーハンドルを保持します。
nvim_buf_get_lines()
nvim_buf_get_lines({buffer}, {start}, {end}, {strict_indexing}) バッファーから行範囲を取得します。
インデックスは 0 から始まり、終端は含まれません。負のインデックスは length+1+index として解釈されます: -1 は末尾のインデックスを参照します。したがって、最後の要素を取得するには、start=-2 および end=-1 を使用します。
strict_indexing が設定されていない場合、範囲外のインデックスは最も近い有効な値にクランプされます。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{start} 最初の行のインデックス
{end} 最後の行のインデックス (終端は含まれません)
{strict_indexing} 範囲外をエラーにするかどうか。
戻り値
行の配列。アンロードされたバッファーの場合は空の配列。
nvim_buf_get_mark({buffer}, {name}) nvim_buf_get_mark()
名前付きマークの位置を表す (row,col) タプルを返します。「行末」の列位置は v:maxcol (大きな数) として返されます。mark-motions を参照してください。
マークは(1,0)ベースでインデックス付けされます。 api-indexing
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{name} マーク名
戻り値
(row, col) タプル。マークが設定されていない場合、または別のバッファーに設定された大文字/ファイルマークの場合は、(0, 0) になります。
以下も参照してください
nvim_buf_get_name({buffer}) nvim_buf_get_name()
バッファーのフルファイル名を取得します
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
バッファ名
nvim_buf_get_offset({buffer}, {index}) nvim_buf_get_offset()
行のバイトオフセット(0から始まるインデックス)を返します。api-indexing
1行目(index=0)のオフセットは0です。UTF-8バイトがカウントされます。EOLは1バイトです。'fileformat''fileencoding'は無視されます。最後の行の直後の行インデックスは、バッファの総バイト数を返します。最終的なEOLバイトは、書き込まれる場合カウントされます。 'eol'を参照してください。
line2byte()とは異なり、範囲外のインデックスに対してエラーをスローします。アンロードされたバッファの場合は-1を返します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{index} 行インデックス
戻り値
整数バイトオフセット、またはアンロードされたバッファの場合は-1。
nvim_buf_get_text()
nvim_buf_get_text({buffer}, {start_row}, {start_col}, {end_row}, {end_col}, {opts}) バッファから範囲を取得します。
nvim_buf_get_lines()と異なるのは、行の一部分だけを取得できる点です。
インデックスは0ベースです。行インデックスは終端を含み、列インデックスは終端を含みません。
行全体を取得する場合は、nvim_buf_get_lines()を使用することをお勧めします。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{start_row} 最初の行インデックス
{start_col} 最初の行の開始列(バイトオフセット)
{end_row} 最後の行インデックス(含む)
{end_col} 最後の行の終了列(バイトオフセット、含まない)
{opts} オプションパラメータ。現在未使用。
戻り値
行の配列。アンロードされたバッファーの場合は空の配列。
nvim_buf_get_var({buffer}, {name}) nvim_buf_get_var()
バッファスコープ (b:) 変数を取得します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{name} 変数名
戻り値
変数の値
nvim_buf_is_loaded({buffer}) nvim_buf_is_loaded()
バッファが有効でロードされているかどうかを確認します。アンロードされたバッファの詳細については、api-bufferを参照してください。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
バッファが有効でロードされている場合はtrue、それ以外の場合はfalse。
nvim_buf_is_valid({buffer}) nvim_buf_is_valid()
バッファが有効かどうかを確認します。
注意
バッファが有効であっても、アンロードされている可能性があります。アンロードされたバッファの詳細については、api-bufferを参照してください。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
バッファが有効な場合はtrue、それ以外の場合はfalse。
nvim_buf_line_count({buffer}) nvim_buf_line_count()
指定されたバッファの行数を返します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
戻り値
行数、またはアンロードされたバッファの場合は0。api-buffer
nvim_buf_set_keymap()
nvim_buf_set_keymap({buffer}, {mode}, {lhs}, {rhs}, {opts}) 指定されたモードのバッファローカルなマッピングを設定します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
以下も参照してください
nvim_buf_set_lines()
nvim_buf_set_lines({buffer}, {start}, {end}, {strict_indexing}, {replacement}) バッファ内の行範囲を設定(置換)します。
インデックスは0ベースで、終端を含みません。負のインデックスは、length+1+indexとして解釈されます。-1は終端を超えたインデックスを指します。したがって、最後の要素を変更または削除するには、start=-2およびend=-1を使用します。
指定されたインデックスに行を挿入するには、startendを同じインデックスに設定します。行の範囲を削除するには、replacementを空の配列に設定します。
strict_indexing が設定されていない場合、範囲外のインデックスは最も近い有効な値にクランプされます。
属性
textlock がアクティブな場合は許可されません
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{start} 最初の行のインデックス
{end} 最後の行のインデックス (終端は含まれません)
{strict_indexing} 範囲外をエラーにするかどうか。
{replacement} 置換として使用する行の配列
以下も参照してください
nvim_buf_set_mark()
nvim_buf_set_mark({buffer}, {name}, {line}, {col}, {opts}) 指定されたバッファに名前付きマークを設定します。すべてのマークは、ファイル/大文字、ビジュアル、最後の変更など許可されています。mark-motionsを参照してください。
マークは(1,0)ベースでインデックス付けされます。 api-indexing
注意
行として0を渡すと、マークが削除されます
パラメータ
{buffer} マークを設定するバッファー
{name} マーク名
{line} 行番号
{col} 列/行番号
{opts} オプションのパラメータ。将来の使用のために予約されています。
戻り値
マークが設定された場合はtrue、それ以外の場合はfalse。
以下も参照してください
nvim_buf_set_name({buffer}, {name}) nvim_buf_set_name()
:file_fのように、バッファのフルファイル名を設定します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{name} バッファ名
nvim_buf_set_text()
nvim_buf_set_text({buffer}, {start_row}, {start_col}, {end_row}, {end_col}, {replacement}) バッファ内の範囲を設定(置換)します
行の一部のみを変更する場合は、nvim_buf_set_lines()よりもこれをお勧めします。これにより、変更されていない行の部分でextmarkが保持されます。
インデックスは0ベースです。行インデックスは終端を含み、列インデックスは終端を含みません。
指定された(row, column)の位置にテキストを挿入するには、start_row = end_row = rowおよびstart_col = end_col = colを使用します。範囲内のテキストを削除するには、replacement = {}を使用します。
注意
行全体を追加または削除する場合は、(パフォーマンスのために)nvim_buf_set_lines()を使用することをお勧めします。
カーソル位置にテキストを挿入(置換ではなく)するには、nvim_paste()またはnvim_put()を使用することをお勧めします。
属性
textlock がアクティブな場合は許可されません
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{start_row} 最初の行インデックス
{start_col} 最初の行の開始列(バイトオフセット)
{end_row} 最後の行インデックス(含む)
{end_col} 最後の行の終了列(バイトオフセット、含まない)
{replacement} 置換として使用する行の配列
nvim_buf_set_var({buffer}, {name}, {value}) nvim_buf_set_var()
バッファスコープ (b:) 変数を設定します
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{name} 変数名
{value} 変数の値

Extmark関数 api-extmark

nvim_buf_add_highlight()
nvim_buf_add_highlight({buffer}, {ns_id}, {hl_group}, {line}, {col_start}, {col_end}) バッファにハイライトを追加します。
(セマンティックハイライターやリンターのように)バッファに動的にハイライトを生成するプラグインに役立ちます。この関数は、バッファに単一のハイライトを追加します。matchaddpos()とは異なり、ハイライトは行番号の変更(ハイライトされた行の上に線が挿入/削除される)に追従します。これは、サインやマークと同様です。
名前空間は、ハイライトのセットの一括削除/更新に使用されます。名前空間を作成するには、名前空間IDを返すnvim_create_namespace()を使用します。この関数にns_idとして渡して、名前空間にハイライトを追加します。同じ名前空間内のすべてのハイライトは、nvim_buf_clear_namespace()への単一の呼び出しでクリアできます。API呼び出しによってハイライトが削除されない場合は、ns_id = -1を渡します。
ショートカットとして、ns_id = 0を使用してハイライトの新しい名前空間を作成できます。割り当てられたIDが返されます。hl_groupが空の文字列の場合、ハイライトは追加されませんが、新しいns_idは返されます。これは下位互換性のためにサポートされています。新しいコードでは、新しい空の名前空間を作成するためにnvim_create_namespace()を使用する必要があります。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} 使用する名前空間、またはグループ化されていないハイライトの場合は-1
{hl_group} 使用するハイライトグループの名前
{line} ハイライトする行(0から始まるインデックス)
{col_start} ハイライトする(バイトインデックスの)列範囲の開始
{col_end} ハイライトする(バイトインデックスの)列範囲の終了、または行末までハイライトする場合は-1
戻り値
使用されたns_id
nvim_buf_clear_namespace()
nvim_buf_clear_namespace({buffer}, {ns_id}, {line_start}, {line_end}) 領域から名前空間付きオブジェクト(ハイライト、extmark、仮想テキスト)をクリアします。
行は0から始まるインデックスです。api-indexingバッファ全体で名前空間をクリアするには、line_start=0およびline_end=-1を指定します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} クリアする名前空間、またはすべての名前空間をクリアする場合は-1。
{line_start} クリアする行範囲の開始
{line_end} クリアする行範囲の終了(含まない)、またはバッファの終わりまでクリアする場合は-1。
nvim_buf_del_extmark({buffer}, {ns_id}, {id}) nvim_buf_del_extmark()
extmarkを削除します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} nvim_create_namespace()からの名前空間ID
{id} Extmark ID
戻り値
extmarkが見つかった場合はtrue、それ以外の場合はfalse
nvim_buf_get_extmark_by_id()
nvim_buf_get_extmark_by_id({buffer}, {ns_id}, {id}, {opts}) extmarkの位置(0から始まるインデックス)を取得します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} nvim_create_namespace()からの名前空間ID
{id} Extmark ID
{opts} オプションのパラメータ。キー
details: 詳細ディクショナリを含めるかどうか
hl_name: IDの代わりにハイライトグループ名を含めるかどうか。省略した場合はtrue
戻り値
0から始まるインデックスの(行、列)タプル、またはextmark IDが存在しない場合は空のリスト()
nvim_buf_get_extmarks()
nvim_buf_get_extmarks({buffer}, {ns_id}, {start}, {end}, {opts}) バッファの位置(両端を含む、0から始まるインデックスapi-indexing)によって定義された文字単位領域から「トラバーサル順」でextmarkを取得します。
領域は、(行、列)タプル、または有効なextmark ID(位置が境界を定義)として指定できます。0と-1はそれぞれ(0,0)と(-1、-1)と解釈されるため、以下は同等です
vim.api.nvim_buf_get_extmarks(0, my_ns, 0, -1, {})
vim.api.nvim_buf_get_extmarks(0, my_ns, {0,0}, {-1,-1}, {})
endstartより小さい場合、トラバーサルは逆方向に機能します。(limitを使用すると、特定の場所より前の最初のマークを取得するのに役立ちます。)
注意: extmark範囲(end_row/end_colの位置を持つマーク)を使用する場合、overlapオプションが役立つ場合があります。そうでない場合、extmarkの開始位置のみが考慮されます。
注意: :signコマンドで配置されたレガシーサインは、extmarkとして実装され、ここに表示されます。詳細配列にはsign_nameフィールドが含まれます。
local api = vim.api
local pos = api.nvim_win_get_cursor(0)
local ns  = api.nvim_create_namespace('my-plugin')
-- Create new extmark at line 1, column 1.
local m1  = api.nvim_buf_set_extmark(0, ns, 0, 0, {})
-- Create new extmark at line 3, column 1.
local m2  = api.nvim_buf_set_extmark(0, ns, 2, 0, {})
-- Get extmarks only from line 3.
local ms  = api.nvim_buf_get_extmarks(0, ns, {2,0}, {2,0}, {})
-- Get all marks in this buffer + namespace.
local all = api.nvim_buf_get_extmarks(0, ns, 0, -1, {})
vim.print(ms)
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} nvim_create_namespace()からの名前空間ID、またはすべての名前空間の場合は-1
{start} 範囲の開始:0から始まる(行、列)または有効なextmark ID(位置が境界を定義)。api-indexing
{end} 範囲の終了(含む):0から始まる(行、列)または有効なextmark ID(位置が境界を定義)。api-indexing
{opts} オプションのパラメータ。キー
limit: 返すマークの最大数
details: 詳細ディクショナリを含めるかどうか
hl_name: IDの代わりにハイライトグループ名を含めるかどうか。省略した場合はtrue
overlap: 開始位置がstartより小さくても、範囲と重複するマークも含まれます
type: タイプでマークをフィルター:「highlight」、「sign」、「virt_text」、「virt_lines」
戻り値
「トラバーサル順」の[extmark_id、行、列]タプルのリスト。
nvim_buf_set_extmark()
nvim_buf_set_extmark({buffer}, {ns_id}, {line}, {col}, {opts}) extmarkを作成または更新します。
デフォルトでは、IDが渡されない場合、新しいextmarkが作成されますが、以前に使用されていないIDを渡して新しいマークを作成したり、既存のマークのIDを渡して移動することもできます。その後、呼び出し元は既存のIDと未使用のIDを自分で追跡する必要があります。(RPC経由で、戻り値を待機するのを避けるために役立ちます。)
オプションの引数を使用すると、これを使用してテキスト範囲を強調表示したり、仮想テキストをマークに関連付けたりすることができます。
end_colend_row で定義される位置が存在する場合、extmark が範囲をカバーするためには、開始位置よりも後である必要があります。終了位置が開始位置よりも前にある場合はエラーにはなりませんが、その場合、空の範囲(ハイライトなし)のように動作します。
パラメータ
{buffer} バッファハンドル。現在のバッファの場合は0
{ns_id} nvim_create_namespace()からの名前空間ID
{line} マークを配置する行。0 ベースです。 api-indexing
{col} マークを配置する列。0 ベースです。 api-indexing
{opts} オプションのパラメータ。
id : 編集する extmark の ID。
end_row : マークの終了行。0 ベースで、この行を含みます。
end_col : マークの終了列。0 ベースで、この列は含みません。
hl_group : このマークをハイライトするために使用されるハイライトグループの名前。
hl_eol : true の場合、行末をカバーする複数行のハイライトの場合、残りの画面行に対してハイライトを継続します(diff やカーソル行のハイライトと同様)。
virt_text : このマークにリンクする仮想テキスト。[text, highlight] タプルのリストで、それぞれが指定されたハイライトを持つテキストチャンクを表します。highlight 要素は、単一のハイライトグループまたは、スタックされる複数のハイライトグループの配列(優先順位の高いものが最後)にすることができます。ハイライトグループは、文字列または整数として指定できます。後者は nvim_get_hl_id_by_name() を使用して取得できます。
virt_text_pos : 仮想テキストの位置。可能な値
"eol": 行末文字の直後(デフォルト)。
"overlay": 指定された列の上に、下にあるテキストをシフトせずに表示します。
"right_align": ウィンドウ内で右揃えで表示します。
"inline": 指定された列に表示し、必要に応じてバッファテキストを右にシフトします。
virt_text_win_col : "virt_text_pos" の代わりに、仮想テキストを(画面行の最初のテキスト列から始まる)固定されたウィンドウ列に配置します。
virt_text_hide : 背景テキストが選択されている場合、または 'nowrap''smoothscroll' でのスクロールのために非表示になっている場合に、仮想テキストを非表示にします。現在、"overlay" 仮想テキストにのみ影響します。
virt_text_repeat_linebreak : 折り返された行に仮想テキストを繰り返します。
hl_mode : ハイライトがテキストのハイライトとどのように組み合わされるかを制御します。現在、仮想テキストのハイライトにのみ影響しますが、後のバージョンでは hl_group に影響する可能性があります。
"replace": 仮想テキストの色のみを表示します。これがデフォルトです。
"combine": 背景テキストの色と組み合わせます。
"blend": 背景テキストの色とブレンドします。"inline" 仮想テキストではサポートされていません。
virt_lines : このマークの横に追加する仮想行。これは、各行が [text, highlight] タプルの配列である行の配列である必要があります。一般に、バッファとウィンドウのオプションはテキストの表示に影響しません。特に 'wrap' および 'linebreak' オプションは有効にならないため、追加の画面行数は常に配列のサイズと一致します。ただし、'tabstop' バッファオプションはハードタブの場合でも使用されます。デフォルトでは、行はマークを含むバッファ行の下に配置されます。
virt_lines_above: 代わりに仮想行を上に配置します。
virt_lines_leftcol: ウィンドウの左端の列に extmark を配置し、サイン列と数値列をバイパスします。
ephemeral : nvim_set_decoration_provider() コールバックで使用します。マークは現在の再描画サイクルでのみ使用され、バッファに永続的に保存されません。
right_gravity : 新しいテキストが挿入されたときに extmark がシフトされる方向を示すブール値です(右の場合は true、左の場合は false)。デフォルトは true です。
end_right_gravity : 新しいテキストが挿入されたときに extmark の終了位置(存在する場合)がシフトされる方向を示すブール値です(右の場合は true、左の場合は false)。デフォルトは false です。
undo_restore : マークの周りのテキストが削除され、アンドゥによって復元された場合に、マークの正確な位置を復元します。デフォルトは true です。
invalidate : マークの範囲全体が削除された場合に extmark を非表示にするかどうかを示すブール値です。非表示のマークの場合、nvim_buf_get_extmarks() とその仲間たちの "details" 配列に "invalid" キーが追加されます。"undo_restore" が false の場合、extmark は代わりに削除されます。
priority: ハイライトグループ、サイン属性、または仮想テキストの優先度値。仮想テキストの場合、優先度が最も高い項目が最後に描画されます。たとえば、treesitter のハイライトは 100 の値を使用します。
strict: 行または列の値がそれぞれバッファの末尾または行末を過ぎている場合に、extmark を配置しないことを示すブール値です。デフォルトは true です。
sign_text: サイン列に表示するために使用される長さ 1〜2 の文字列。
sign_hl_group: サイン列のテキストをハイライトするために使用されるハイライトグループの名前。
number_hl_group: 数値列をハイライトするために使用されるハイライトグループの名前。
line_hl_group: 行全体をハイライトするために使用されるハイライトグループの名前。
cursorline_hl_group: カーソルがマークと同じ行にあり、'cursorline' が有効になっている場合に、サイン列のテキストをハイライトするために使用されるハイライトグループの名前。
conceal: 空または単一の文字である必要のある文字列。:syn-conceal と同様に隠蔽を有効にします。文字が指定されている場合、:syn-cchar として使用されます。"hl_group" が指定されている場合は cchar のハイライトとして使用され、指定されていない場合はデフォルトで hl-Conceal が使用されます。
spell: この extmark 内でスペルチェックを実行する必要があることを示すブール値。
ui_watched: マークを UI によって描画する必要があることを示すブール値。設定すると、UI は win_extmark イベントを受信します。注:マークは virt_text 属性によって配置されます。virt_text と一緒に使用できます。
url: この extmark に関連付ける URL。TUI では、この URL へのクリック可能なハイパーリンクを生成するために OSC 8 コントロールシーケンスが使用されます。
戻り値
作成/更新された extmark の ID
nvim_create_namespace({name}) nvim_create_namespace()
新しい名前空間を作成するか、既存の名前空間を取得します。 namespace
名前空間は、バッファのハイライトと仮想テキストに使用されます。 nvim_buf_add_highlight() および nvim_buf_set_extmark() を参照してください。
名前空間には、名前付きまたは匿名のものがあります。name が既存の名前空間と一致する場合、関連付けられた ID が返されます。name が空の文字列の場合、新しい匿名名前空間が作成されます。
パラメータ
{name} 名前空間の名前または空の文字列
戻り値
名前空間 ID
nvim_get_namespaces() nvim_get_namespaces()
既存の、匿名でない namespace を取得します。
戻り値
名前から名前空間 ID へのマッピングの辞書。
nvim_set_decoration_provider()
nvim_set_decoration_provider({ns_id}, {opts}) namespace のデコレーションプロバイダを設定または変更します
これは、Lua コールバックが再描画コード中にトリガーされるようにするための非常に汎用的なインターフェイスです。
期待される使用方法は、現在再描画されているバッファに extmarks を設定することです。nvim_buf_set_extmark() を呼び出して、ウィンドウごとまたは行ごとにマークを追加できます。ephemeral キーを使用して、現在の画面の再描画でのみマークを使用します(コールバックは次の再描画で再び呼び出されます)。
注: この関数は頻繁に呼び出すべきではありません。むしろ、コールバック自体を使用して、不要なコールバックを抑制できます。on_start コールバックは false を返して、次の再描画までプロバイダを無効にすることができます。同様に、on_winfalse を返すと、そのウィンドウの on_line 呼び出しはスキップされます(ただし、on_win で設定された extmark は引き続き使用されます)。複数のデコレーションソースを管理するプラグインは、理想的には 1 つのプロバイダのみを設定し、ソースを内部的にマージする必要があります。いずれにしても、コールバック内で設定/変更された extmark には複数の ns_id を使用できます。
注: extmark の設定以外のことを行うことは実験的と見なされます。オプションの変更などの操作は明示的に禁止されていませんが、予期しない結果(100% の CPU 使用率など)になる可能性があります。vim.rpcnotify を行うことは問題ありませんが、今のところ vim.rpcrequest は非常に疑わしいです。
注: on_line コールバックで extmark を削除または更新することは許可されていません。
属性
Lua vim.api のみ
パラメータ
{ns_id} nvim_create_namespace()からの名前空間ID
{opts} コールバックのテーブル
on_start: 各画面の再描画で最初に呼び出されます
["start", tick]
on_buf: 再描画される各バッファに対して呼び出されます(ウィンドウコールバックの前)
["buf", bufnr, tick]
on_win: 特定のウィンドウの再描画を開始するときに呼び出されます。
["win", winid, bufnr, toprow, botrow]
on_line: 再描画されるバッファの各行に対して呼び出されます。(折りたたみ行との相互作用は変更される可能性があります)
["line", winid, bufnr, row]
on_end: 再描画サイクルの最後に呼び出されます
["end", tick]
nvim__ns_get({ns_id}) nvim__ns_get()
実験的:この API は将来変更されます。
名前空間のプロパティを取得します
パラメータ
{ns_id} 名前空間
戻り値
名前空間のプロパティを定義するマップ。 nvim__ns_set() を参照してください
nvim__ns_set({ns_id}, {opts}) nvim__ns_set()
実験的:この API は将来変更されます。
名前空間のいくつかのプロパティを設定します
パラメータ
{ns_id} 名前空間
{opts} 設定するオプションのパラメータ
wins: スコープされるウィンドウのリスト

ウィンドウ関数 api-window

nvim_win_call({window}, {fun}) nvim_win_call()
ウィンドウを一時的な現在のウィンドウとして、関数を呼び出します。
属性
Lua vim.api のみ
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{fun} ウィンドウ内で呼び出す関数(現在は Lua でのみ呼び出し可能)
戻り値
関数の戻り値。
以下も参照してください
nvim_win_close({window}, {force}) nvim_win_close()
ウィンドウを閉じます(:closewindow-ID を使用した場合と同様)。
属性
textlock がアクティブな場合は許可されません
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{force} :close! のように動作します。未書き込みの変更があるバッファの最後のウィンドウを閉じることができます。'hidden' が設定されていない場合でも、バッファは非表示になります。
nvim_win_del_var({window}, {name}) nvim_win_del_var()
ウィンドウスコープの (w:) 変数を削除します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{name} 変数名
nvim_win_get_buf({window}) nvim_win_get_buf()
ウィンドウ内の現在のバッファを取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
バッファハンドル
nvim_win_get_cursor({window}) nvim_win_get_cursor()
指定されたウィンドウの、(1,0)ベースのバッファ相対カーソル位置を取得します(同じバッファを表示する異なるウィンドウは、独立したカーソル位置を持ちます)。api-indexing
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
(行、列) タプル
以下も参照してください
nvim_win_get_height({window}) nvim_win_get_height()
ウィンドウの高さを取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
行数としての高さ
nvim_win_get_number({window}) nvim_win_get_number()
ウィンドウ番号を取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
ウィンドウ番号
nvim_win_get_position({window}) nvim_win_get_position()
表示セルでのウィンドウの位置を取得します。最初の位置はゼロです。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
ウィンドウの位置を持つ (行、列) タプル
nvim_win_get_tabpage({window}) nvim_win_get_tabpage()
ウィンドウのタブページを取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
ウィンドウを含むタブページ
nvim_win_get_var({window}, {name}) nvim_win_get_var()
ウィンドウスコープ (w:) 変数を取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{name} 変数名
戻り値
変数の値
nvim_win_get_width({window}) nvim_win_get_width()
ウィンドウの幅を取得します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
列数としての幅
nvim_win_hide({window}) nvim_win_hide()
ウィンドウを閉じ、ウィンドウが含むバッファを非表示にします ( :hideウィンドウID を指定した場合と同様)。
:hide と同様に、バッファを編集中の他のウィンドウがない場合、または 'bufhidden':closenvim_win_close() とは異なり、unloaddeletewipe のいずれかである場合、バッファは非表示になります。これらはバッファを閉じます。
属性
textlock がアクティブな場合は許可されません
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
nvim_win_is_valid({window}) nvim_win_is_valid()
ウィンドウが有効かどうかを確認します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
ウィンドウが有効な場合は true、それ以外の場合は false
nvim_win_set_buf({window}, {buffer}) nvim_win_set_buf()
副作用なしに、ウィンドウ内の現在のバッファを設定します
属性
textlock がアクティブな場合は許可されません
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{buffer} バッファハンドル
nvim_win_set_cursor({window}, {pos}) nvim_win_set_cursor()
ウィンドウ内の (1,0) インデックスのカーソル位置を設定します。api-indexing 現在のウィンドウでない場合でも、ウィンドウをスクロールします。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{pos} (行、列) のタプルで、新しい位置を表します
nvim_win_set_height({window}, {height}) nvim_win_set_height()
ウィンドウの高さを設定します。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{height} 行数としての高さ
nvim_win_set_hl_ns({window}, {ns_id}) nvim_win_set_hl_ns()
ウィンドウのハイライト名前空間を設定します。これにより、この名前空間に対して nvim_set_hl() で定義されたハイライトが使用されますが、見つからない場合はグローバルハイライト (ns=0) にフォールバックします。
これは、'winhighlight' オプションよりも優先されます。
パラメータ
{ns_id} 使用する名前空間
nvim_win_set_var({window}, {name}, {value}) nvim_win_set_var()
ウィンドウスコープ (w:) 変数を設定します
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{name} 変数名
{value} 変数の値
nvim_win_set_width({window}, {width}) nvim_win_set_width()
ウィンドウの幅を設定します。これは、画面が垂直に分割されている場合にのみ成功します。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{width} 列数としての幅
nvim_win_text_height({window}, {opts}) nvim_win_text_height()
指定されたウィンドウのテキスト範囲が占める画面行数を計算します。画面外のテキストでも機能し、折りたたみも考慮されます。
行の上のDiffフィラーまたは仮想行は、その行の一部としてカウントされます。ただし、行が "start_row" にあり、"start_vcol" が指定されている場合は除きます。
"end_row" が省略されている場合、最後のバッファ行の下のDiffフィラーまたは仮想行が結果にカウントされます。
行のインデックスは、nvim_buf_get_text() と同様です。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0 です。
{opts} オプションのパラメータ
start_row: 開始行インデックス。0 から始まるインクルーシブです。省略された場合は、一番上から開始します。
end_row: 終了行インデックス。0 から始まるインクルーシブです。省略された場合は、一番下で終了します。
start_vcol: "start_row" の開始仮想列インデックス。0 から始まるインクルーシブで、画面行全体に切り下げられます。省略された場合は、行全体が含まれます。
end_vcol: "end_row" の終了仮想列インデックス。0 から始まるエクスクルーシブで、画面行全体に切り上げられます。省略された場合は、行全体が含まれます。
戻り値
テキストの高さ情報を含むディクショナリ。以下のキーを持ちます。
all: 範囲が占める画面行の合計数。
fill: その中のdiffフィラーまたは仮想行の数。
以下も参照してください
テキスト幅については virtcol()

Win_config 関数 api-win_config

nvim_open_win({buffer}, {enter}, {config}) nvim_open_win()
新しい分割ウィンドウを開きます。relative が指定されている場合はフローティングウィンドウ、external が指定されている場合は (UI によって管理される) 外部ウィンドウを開きます。
フローティングウィンドウは、他のウィンドウのアンカー位置に、分割レイアウトの上に描画されるウィンドウです。フローティングウィンドウは、内部的に描画することも、ui-multigrid 拡張機能を使用して外部GUIによって描画することもできます。外部ウィンドウは、マルチグリッドGUIでのみサポートされており、個別のトップレベルウィンドウとして表示されます。
フローティングウィンドウの一般的な概要については、api-floatwin を参照してください。
フローティングウィンドウを開く場合は、新しいウィンドウの widthheight を指定する必要がありますが、通常のウィンドウの場合はオプションです。
relativeexternal が省略されている場合、通常の「分割」ウィンドウが作成されます。win プロパティは、どのウィンドウを分割するかを決定します。win が提供されていないか、win == 0 の場合、現在のウィンドウに隣接するウィンドウが作成されます。-1 が提供されている場合は、トップレベルの分割が作成されます。verticalsplit は通常のウィンドウでのみ有効であり、分割方向を制御するために使用されます。vertical の場合、正確な方向は 'splitright''splitbelow' によって決定されます。分割ウィンドウには、bufpos / `row` / `col` / `border` / `title` / `footer` プロパティを含めることはできません。
relative=editor (row=0,col=0) は、画面グリッドの左上隅を指し、(row=Lines-1,col=Columns-1) は、右下隅を指します。小数値も許可されますが、組み込み実装 (非マルチグリッドUIで使用) は常に最も近い整数に切り下げられます。
範囲外の値、およびフローティングウィンドウがメインエディター内に収まらない構成は許可されます。組み込み実装では、フローティングウィンドウがメイン画面グリッド内に完全に収まるように値が切り捨てられます。外部GUIでは、ツールチップのようにメインウィンドウの外にフローティングウィンドウをホバーさせることができますが、これは任意のWM画面位置を指定するために使用しないでください。
例 (Lua): ウィンドウ相対フローティングウィンドウ
vim.api.nvim_open_win(0, false,
  {relative='win', row=3, col=3, width=12, height=3})
例 (Lua): バッファ相対フローティングウィンドウ (バッファがスクロールされるにつれて移動します)
vim.api.nvim_open_win(0, false,
  {relative='win', width=12, height=3, bufpos={100,10}})
例 (Lua): 現在のウィンドウの左側の垂直分割
vim.api.nvim_open_win(0, false, {
  split = 'left',
  win = 0
})
属性
textlock がアクティブな場合は許可されません
パラメータ
{buffer} 表示するバッファ。現在のバッファの場合は 0 です
{enter} ウィンドウに入ります (現在のウィンドウにします)
{config} ウィンドウ構成を定義するマップ。キー
relative: ウィンドウレイアウトを「フローティング」に設定し、(row,col) 座標に配置されます。座標は、以下に対する相対位置です
"editor" グローバルエディターグリッド
"win" win フィールドで指定されたウィンドウ。または現在のウィンドウ。
"cursor" 現在のウィンドウのカーソル位置。
"mouse" マウス位置
win: ウィンドウID 分割するウィンドウ、またはフローティングウィンドウを作成する際の相対ウィンドウ (relative="win")。
anchor: (row,col) に配置するフローティングウィンドウのコーナーを決定します
"NW" 北西 (デフォルト)
"NE" 北東
"SW" 南西
"SE" 南東
width: ウィンドウの幅 (文字セル単位)。最小値は 1 です。
height: ウィンドウの高さ (文字セル単位)。最小値は 1 です。
bufpos: フローティングウィンドウをバッファテキストに対する相対位置に配置します (relative="win" の場合のみ)。ゼロから始まるインデックスの [行, 列] のタプルを受け取ります。指定されている場合、rowcol はこの位置に対する相対位置が適用されます。それ以外の場合は、
anchor が "NW" または "NE" の場合、row=1 および col=0
anchor が "SW" または "SE" の場合、row=0 および col=0 (したがって、バッファテキストの近くのツールチップのような動作になります)。
row: 「画面セル高さ」を単位とする行位置。小数でも構いません。
col: 「画面セル幅」を単位とする列位置。小数でも構いません。
focusable: ユーザー操作 (wincmd、マウスイベント) によるフォーカスを有効にします。デフォルトは true です。フォーカス不可のウィンドウは、nvim_set_current_win() または、mouse フィールドが true に設定されている場合は、マウスイベントによって入力できます。
mouse: このウィンドウがマウスイベントとどのように相互作用するかを指定します。デフォルトは focusable の値です。
false の場合、マウスイベントはこのウィンドウを通過します。
true の場合、マウスイベントはこのウィンドウと正常に相互作用します。
external: GUIはウィンドウを外部のトップレベルウィンドウとして表示する必要があります。現在、これと一緒に他の位置設定は受け入れません。
zindex: スタッキング順序。zindex が高いフローティングウィンドウは、インデックスが低いフローティングウィンドウの上に配置されます。ゼロより大きい必要があります。以下の画面要素には、ハードコードされたzインデックスがあります
100: 挿入補完ポップアップメニュー
200: メッセージスクロールバック
250: コマンドライン補完ポップアップメニュー (wildoptions+=pum の場合) フローティングウィンドウのデフォルト値は 50 です。一般的に、組み込み要素を覆い隠す正当な理由がない限り、100 未満の値をお勧めします。
style: (オプション) ウィンドウの外観を構成します。現在、1つの値のみをサポートしています。
"minimal" Nvimは、多くのUIオプションを無効にしてウィンドウを表示します。これは、テキストを編集すべきではない一時的なフローティングウィンドウを表示する場合に便利です。 'number''relativenumber''cursorline''cursorcolumn''foldcolumn''spell' および 'list' オプションを無効にします。 'signcolumn'auto に変更され、'colorcolumn' はクリアされます。 'statuscolumn' は空に変更されます。バッファの終端領域は、'fillchars'eob フラグをスペース文字に設定し、'winhighlight'hl-EndOfBuffer 領域をクリアすることによって非表示になります。
border: (オプション) ウィンドウの境界線のスタイル。これは、文字列または配列にすることができます。文字列の値は次のとおりです。
"none": 境界線なし (デフォルト)。
"single": 一重線のボックス。
"double": 二重線のボックス。
"rounded": "single" と同様ですが、角が丸くなっています ("╭" など)。
"solid": 単一の空白セルによるパディングを追加します。
"shadow": 背景とブレンドすることによるドロップシャドウ効果。
配列の場合、長さが8または8の約数である必要があります。配列は、左上隅から時計回りに、境界線を構成する8つの文字を指定します。例として、二重ボックススタイルは次のように指定できます。
[ "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" ].
文字数が8未満の場合は、繰り返されます。したがって、ASCII境界線は次のように指定できます。
[ "/", "-", \"\\\\\", "|" ],
または、すべての文字を同じにすることもできます。
[ "x" ].
特定の境界線をオフにするために、空の文字列を使用できます。たとえば、
[ "", "", "", ">", "", "", "", "<" ]
垂直方向の境界線のみを作成し、水平方向の境界線は作成しません。デフォルトでは、FloatBorderハイライトが使用されます。これは、定義されていない場合はWinSeparatorにリンクします。文字で指定することもできます。
[ ["+", "MyCorner"], ["x", "MyBorder"] ].
title: ウィンドウの境界線に表示するタイトル(オプション)、文字列またはリスト。リストは、[text, highlight]のタプルで構成される必要があります。文字列の場合、またはタプルにハイライトがない場合、デフォルトのハイライトグループはFloatTitleになります。
title_pos: タイトルの位置。titleオプションで設定する必要があります。値は、"left"、"center"、"right"のいずれかになります。デフォルトは"left"です。
footer: ウィンドウの境界線に表示するフッター(オプション)、文字列またはリスト。リストは、[text, highlight]のタプルで構成される必要があります。文字列の場合、またはタプルにハイライトがない場合、デフォルトのハイライトグループはFloatFooterになります。
footer_pos: フッターの位置。footerオプションで設定する必要があります。値は、"left"、"center"、"right"のいずれかになります。デフォルトは"left"です。
noautocmd: trueの場合、呼び出しの間、すべて自動コマンドがブロックされます。
fixed: アンカーがNWまたはSWの場合にtrueにすると、ウィンドウが切り捨てられた場合でも、フローティングウィンドウは固定されたままになります。
hide: trueの場合、フローティングウィンドウは非表示になります。
vertical: 垂直に分割します:vertical
split: 分割方向: "left", "right", "above", "below"。
戻り値
ウィンドウハンドル。エラーの場合は0
nvim_win_get_config({window}) nvim_win_get_config()
ウィンドウの設定を取得します。
返された値は、nvim_open_win()に渡すことができます。
relativeは、通常のウィンドウでは空です。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
戻り値
ウィンドウの設定を定義するマップ。 nvim_open_win()を参照してください。
nvim_win_set_config({window}, {config}) nvim_win_set_config()
ウィンドウのレイアウトを設定します。タブページ内の最後のウィンドウを別のウィンドウに移動するために使用することはできません。
ウィンドウを再設定する場合、存在しないオプションキーは変更されません。row/colrelativeは一緒に再設定する必要があります。
パラメータ
{window} ウィンドウハンドル。現在のウィンドウの場合は 0
{config} ウィンドウの設定を定義するマップ。 nvim_open_win()を参照してください。
以下も参照してください

タブページ関数 api-tabpage

nvim_tabpage_del_var({tabpage}, {name}) nvim_tabpage_del_var()
タブスコープ(t:)変数を削除します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
{name} 変数名
nvim_tabpage_get_number({tabpage}) nvim_tabpage_get_number()
タブページ番号を取得します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
戻り値
タブページ番号
nvim_tabpage_get_var({tabpage}, {name}) nvim_tabpage_get_var()
タブスコープ(t:)変数を取得します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
{name} 変数名
戻り値
変数の値
nvim_tabpage_get_win({tabpage}) nvim_tabpage_get_win()
タブページ内の現在のウィンドウを取得します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
戻り値
ウィンドウハンドル
nvim_tabpage_is_valid({tabpage}) nvim_tabpage_is_valid()
タブページが有効かどうかを確認します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
戻り値
タブページが有効な場合はtrue、それ以外の場合はfalse
nvim_tabpage_list_wins({tabpage}) nvim_tabpage_list_wins()
タブページ内のウィンドウを取得します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
戻り値
tabpage内のウィンドウのリスト
nvim_tabpage_set_var()
nvim_tabpage_set_var({tabpage}, {name}, {value}) タブスコープ(t:)変数を設定します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
{name} 変数名
{value} 変数の値
nvim_tabpage_set_win({tabpage}, {win}) nvim_tabpage_set_win()
タブページ内の現在のウィンドウを設定します
パラメータ
{tabpage} タブページハンドル。現在のタブページの場合は0
{win} ウィンドウハンドル。すでに{tabpage}に属している必要があります

自動コマンド関数 api-autocmd

nvim_clear_autocmds({opts}) nvim_clear_autocmds()
{opts}で選択されたすべての自動コマンドをクリアします。自動コマンドを削除するには、nvim_del_autocmd()を参照してください。
パラメータ
{opts} パラメータ
event: (string|table) 例
event: "pat1"
event: { "pat1" }
event: { "pat1", "pat2", "pat3" }
pattern: (string|table)
完全に一致するパターンまたはパターン。
たとえば、自動コマンドのパターンとして*.pyがある場合、それをクリアするには、*.pyを完全に渡す必要があります。test.pyはパターンに一致しません。
デフォルトでは、すべてのパターンをクリアします。
注意: {buffer}と一緒に使用することはできません
buffer: (bufnr)
autocmd-buflocal自動コマンドのみをクリアします。
注意: {pattern}と一緒に使用することはできません
group: (string|int) オートグループの名前またはID。
注意: 渡されなかった場合、グループにない自動コマンドのみが削除されます。
nvim_create_augroup({name}, {opts}) nvim_create_augroup()
自動コマンドグループautocmd-groupsを作成または取得します。
既存のグループIDを取得するには、次のようにします。
local id = vim.api.nvim_create_augroup("MyGroup", {
    clear = false
})
パラメータ
{name} String: グループの名前
{opts} Dict パラメータ
clear (bool) オプション: デフォルトはtrueです。グループがすでに存在する場合は、既存のコマンドをクリアしますautocmd-groups
戻り値
作成されたグループの整数ID。
以下も参照してください
nvim_create_autocmd({event}, {opts}) nvim_create_autocmd()
callback(Lua関数またはVimscript関数名文字列)またはcommand(Exコマンド文字列)で定義された自動コマンドイベントハンドラを作成します。
Luaコールバックを使用した例
vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, {
  pattern = {"*.c", "*.h"},
  callback = function(ev)
    print(string.format('event fired: %s', vim.inspect(ev)))
  end
})
Exコマンドをハンドラとして使用した例
vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, {
  pattern = {"*.c", "*.h"},
  command = "echo 'Entering a C or C++ file'",
})
注意: patternは、:autocmdとは異なり、自動的に展開されないため、「$HOME」や「~」のような名前は明示的に展開する必要があります
pattern = vim.fn.expand("~") .. "/some/path/*.py"
パラメータ
{event} (string|array) ハンドラ(callbackまたはcommand)をトリガーするイベント。
{opts} オプション辞書
group (string|integer) オプション: 一致させる自動コマンドグループ名またはID。
pattern (string|array) オプション: 文字通り一致させるパターンautocmd-pattern
buffer (integer) オプション: バッファローカルの自動コマンドのバッファ番号autocmd-buflocal{pattern}と一緒に使用することはできません。
desc (string) オプション: 説明(ドキュメントとトラブルシューティング用)。
callback (function|string) オプション: イベントがトリガーされたときに呼び出されるLua関数(または文字列の場合はVimscript関数名)。Luaコールバックは、自動コマンドを削除するために真の値(falseまたはnil以外)を返すことができます。次のキーを持つテーブルである1つの引数を受け取ります: event-args
id: (number) 自動コマンドID
event: (string) トリガーされたイベントの名前 autocmd-events
group: (number|nil) 自動コマンドグループID(存在する場合)
match: (string) <amatch>の展開された値
buf: (number) <abuf>の展開された値
file: (string) <afile>の展開された値
data: (any) nvim_exec_autocmds()から渡された任意のデータ event-data
command (string) オプション: イベント時に実行するVimコマンド。{callback}と一緒に使用することはできません
once (boolean) オプション: デフォルトはfalseです。自動コマンドを一度だけ実行しますautocmd-once
nested (boolean) オプション: デフォルトはfalseです。ネストされた自動コマンドを実行しますautocmd-nested
戻り値
自動コマンドID(数値)
以下も参照してください
nvim_del_augroup_by_id({id}) nvim_del_augroup_by_id()
IDで自動コマンドグループを削除します。
グループIDを取得するには、nvim_get_autocmds()を使用できます。
注意: 動作は:augroup-deleteとは異なります。グループを削除すると、このグループに含まれる自動コマンドも削除され、クリアされます。このグループは存在しなくなります。
パラメータ
{id} Integer グループのID。
以下も参照してください
nvim_del_augroup_by_name({name}) nvim_del_augroup_by_name()
名前で自動コマンドグループを削除します。
注意: 動作は:augroup-deleteとは異なります。グループを削除すると、このグループに含まれる自動コマンドも削除され、クリアされます。このグループは存在しなくなります。
パラメータ
{name} String グループの名前。
以下も参照してください
nvim_del_autocmd({id}) nvim_del_autocmd()
IDで自動コマンドを削除します。
パラメータ
{id} Integer nvim_create_autocmd()によって返された自動コマンドID
nvim_exec_autocmds({event}, {opts}) nvim_exec_autocmds()
対応する{opts}autocmd-executeに一致する{event}のすべての自動コマンドを実行します。
パラメータ
{event} (String|Array) 実行するイベント
{opts} 自動コマンドオプションのDict
group (string|integer) オプション: 一致させる自動コマンドグループ名またはID。autocmd-groups
pattern (string|array) オプション: デフォルトは"*"autocmd-pattern{buffer}と一緒に使用することはできません。
buffer (integer) オプション: バッファ番号autocmd-buflocal{pattern}と一緒に使用することはできません。
modeline (bool) オプション: デフォルトはtrueです。自動コマンドの後にmodelineを処理します<nomodeline>
data (any): 自動コマンドコールバックに送信する任意のデータ。詳細については、nvim_create_autocmd()を参照してください。
以下も参照してください
nvim_get_autocmds({opts}) nvim_get_autocmds()
対応する{opts}に一致するすべての自動コマンドを取得します。
これらの例では、指定されたすべての条件に一致する自動コマンドを取得します
-- Matches all criteria
autocommands = vim.api.nvim_get_autocmds({
  group = "MyGroup",
  event = {"BufEnter", "BufWinEnter"},
  pattern = {"*.c", "*.h"}
})
-- All commands from one group
autocommands = vim.api.nvim_get_autocmds({
  group = "MyGroup",
})
注意: 複数のパターンまたはイベントが指定されている場合、それらの任意の組み合わせに一致するすべての自動コマンドが見つかります。
パラメータ
{opts} 次のいずれかを含むDict
group (string|integer): 一致させる自動コマンドグループ名またはID。
event (string|array): 一致させるイベントautocmd-events
pattern (string|array): 一致させるパターンautocmd-pattern{buffer}と一緒に使用することはできません
buffer: バッファローカルの自動コマンドのバッファ番号またはバッファ番号のリストautocmd-buflocal{pattern}と一緒に使用することはできません
戻り値
条件に一致する自動コマンドの配列。各項目には次のフィールドが含まれます
id (number): 自動コマンドID(APIで定義されている場合のみ)。
group (integer): 自動コマンドグループID。
group_name (string): 自動コマンドグループ名。
desc (string): 自動コマンドの説明。
event (string): 自動コマンドイベント。
command (string): オートコマンドのコマンドです。注意: コールバックが設定されている場合は空になります。
callback (function|string|nil): このオートコマンドがトリガーされたときに実行される Lua 関数または Vim スクリプト関数の名前。
once (boolean): オートコマンドを一度だけ実行するかどうか。
pattern (string): オートコマンドのパターン。オートコマンドがバッファローカルの場合 autocmd-buffer-local
buflocal (boolean): オートコマンドがバッファローカルの場合は true。
buffer (number): バッファ番号。

UI 関数 api-ui

nvim_ui_attach({width}, {height}, {options}) nvim_ui_attach()
チャンネル上で UI イベントを有効にします。
すべての UI クライアントのエントリーポイントです。--embed が起動を続行できるようにします。クライアントが UI を表示する準備ができていることを意味します。クライアントを UI のリストに追加します。nvim_list_uis()
注意
複数の UI クライアントがアタッチされている場合、グローバル画面の寸法は最小のクライアントまで劣化します。例えば、クライアント A が 80x40 を要求し、クライアント B が 200x100 を要求した場合、グローバル画面のサイズは 80x40 になります。
属性
RPCのみ
パラメータ
{width} 要求された画面の列数
{height} 要求された画面の行数
{options} ui-option マップ
nvim_ui_detach() nvim_ui_detach()
チャンネル上の UI イベントを無効にします。
クライアントを UI のリストから削除します。nvim_list_uis()
属性
RPCのみ
nvim_ui_pum_set_bounds()
nvim_ui_pum_set_bounds({width}, {height}, {row}, {col}) ポップアップメニューのジオメトリを Nvim に伝え、フローティングウィンドウを外部ポップアップメニューに揃えます。
このメソッドは nvim_ui_pum_set_height() と混同しないように注意してください。これはポップアップメニューに表示される項目の数を設定しますが、この関数はポップアップメニューの境界ボックス(境界やスライダーなどの視覚要素を含む)を設定します。フローティングは同じフォントサイズを使用する必要はなく、正確なグリッドコーナーにアンカーする必要もないため、ポップアップメニューのジオメトリに浮動小数点数を設定できます。
属性
RPCのみ
パラメータ
{width} ポップアップメニューの幅。
{height} ポップアップメニューの高さ。
{row} ポップアップメニューの行。
{col} ポップアップメニューの高さ。
nvim_ui_pum_set_height({height}) nvim_ui_pum_set_height()
Nvim にポップアップメニューに表示される要素の数を伝え、<PageUp> および <PageDown> の移動を決定します。
属性
RPCのみ
パラメータ
{height} ポップアップメニューの高さ。ゼロより大きくなければなりません。
nvim_ui_set_focus({gained}) nvim_ui_set_focus()
GUI によってフォーカスが取得または失われた場合、nvim サーバーに通知します。
属性
RPCのみ
nvim_ui_set_option({name}, {value}) nvim_ui_set_option()
属性
RPCのみ
nvim_ui_term_event({event}, {value}) nvim_ui_term_event()
ターミナルイベントが発生したときに Nvim に通知します。
以下のターミナルイベントがサポートされています。
"termresponse": ターミナルが OSC または DCS レスポンスシーケンスを Nvim に送信しました。ペイロードは受信したレスポンスです。v:termresponse を設定し、TermResponse を発火します。
属性
RPCのみ
パラメータ
{event} イベント名
{value} イベントペイロード
nvim_ui_try_resize({width}, {height}) nvim_ui_try_resize()
属性
RPCのみ
nvim_ui_try_resize_grid()
nvim_ui_try_resize_grid({grid}, {width}, {height}) Nvim にグリッドのサイズを変更するように指示します。要求されたグリッドサイズまたはサイズ制限を超える場合は最大サイズで grid_resize イベントをトリガーします。
無効なグリッドハンドルでは、エラーで失敗します。
属性
RPCのみ
パラメータ
{grid} 変更するグリッドのハンドル。
{width} 新しい要求された幅。
{height} 新しい要求された高さ。
メイン
コマンドインデックス
クイックリファレンス