組み込み

Nvim の:help ページ。 生成元は ソースで、 tree-sitter-vimdoc パーサーを使用しています。


組み込み関数 builtin-functions
用途別にグループ化された関数については、 function-listを参照してください。
abs({expr}) abs()
{expr}の絶対値を返します。{expr}Floatに評価された場合、abs()はFloatを返します。{expr}Numberに変換できる場合、abs()はNumberを返します。それ以外の場合は、エラーメッセージを表示して-1を返します。例
echo abs(1.456)
1.456
echo abs(-5.456)
5.456
echo abs(-4)
4
パラメータ
{expr} (number)
戻り値
(number)
acos({expr}) acos()
ラジアン単位で測定された{expr}のアークコサインを、[0, π]の範囲のFloatとして返します。{expr}は、[-1, 1]の範囲のFloatまたはNumberに評価されなければなりません。{expr}が[-1, 1]の範囲外の場合はNaNを返します。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo acos(0)
1.570796
echo acos(-0.5)
2.094395
パラメータ
{expr} (number)
戻り値
(number)
add({object}, {expr}) add()
ListまたはBlob{object}にアイテム{expr}を追加します。ListまたはBlobの結果を返します。例
let alist = add([1, 2, 3], item)
call add(mylist, "woodstock")
{expr}Listの場合、単一のアイテムとして追加されることに注意してください。Listsを連結するにはextend()を使用してください。{object}Blobの場合、{expr}は数値でなければなりません。別の位置にアイテムを追加するにはinsert()を使用してください。{object}ListまたはBlobでない場合は1を返します。
パラメータ
{object} (any)
{expr} (any)
戻り値
(any) 結果のListまたはBlob、または{object}ListまたはBlobでない場合は1。
and({expr}, {expr}) and()
2つの引数に対するビット単位のAND演算を行います。引数は数値に変換されます。List、Dict、Floatの引数はエラーになります。or()およびxor()も参照してください。例
let flag = and(bits, 0x80)
パラメータ
{expr} (number)
{expr1} (number)
戻り値
(integer)
api_info() api_info()
api-metadataのディクショナリを返します。
分かりやすい人間が読める形式で表示します。
lua vim.print(vim.fn.api_info())
戻り値
(table)
append({lnum}, {text}) append()
{text}Listの場合:Listの各アイテムをテキスト行として、現在のバッファの行{lnum}の下に追加します。それ以外の場合は、{text}を1つのテキスト行として、現在のバッファの行{lnum}の下に追加します。あらゆる種類のアイテムが受け入れられ、文字列に変換されます。最初の行の前に挿入するには、{lnum}に0を使用できます。{lnum}getline()と同様に使用されます。失敗した場合({lnum}が範囲外またはメモリ不足)、1を返し、成功した場合は0を返します。{text}が空のリストの場合、{lnum}の値に関係なく、0が返されます。例
let failed = append(line('$'), "# THE END")
let failed = append(0, ["Chapter 1", "the beginning"])
パラメータ
{lnum} (integer)
{text} (string|string[])
戻り値
(0|1)
appendbufline({buf}, {lnum}, {text}) appendbufline()
append()と同様ですが、バッファ{expr}にテキストを追加します。
この関数は、ロード済みのバッファでのみ機能します。必要に応じて、最初にbufload()を呼び出してください。
{buf}の使用方法については、bufname()を参照してください。
{lnum}は、下に追加する行番号です。line()を使用すると、追加先のバッファではなく、現在のバッファが使用されることに注意してください。バッファの最後に追加するには「$」を使用します。その他の文字列値はサポートされていません。
成功すると0を返し、失敗すると1を返します。
{buf}が無効なバッファであるか、{lnum}が無効な場合は、エラーメッセージが表示されます。例
let failed = appendbufline(13, 0, "# THE START")
ただし、{text}が空のリストの場合、{lnum}は実際には使用されないため、無効な{lnum}に対してエラーは表示されません。
パラメータ
{buf} (integer|string)
{lnum} (integer)
{text} (string)
戻り値
(0|1)
argc([{winid}]) argc()
結果は、引数リスト内のファイルの数です。arglistを参照してください。{winid}が指定されていない場合、現在のウィンドウの引数リストが使用されます。{winid}が-1の場合、グローバルな引数リストが使用されます。それ以外の場合は、{winid}は、引数リストが使用されるウィンドウ(ウィンドウ番号またはウィンドウID)を指定します。{winid}引数が無効な場合は-1を返します。
パラメータ
{winid} (integer?)
戻り値
(integer)
argidx() argidx()
結果は、引数リスト内の現在のインデックスです。0は最初のファイルです。argc() - 1は最後のファイルです。arglistを参照してください。
戻り値
(integer)
arglistid([{winnr} [, {tabnr}]]) arglistid()
引数リストIDを返します。これは、使用されている引数リストを識別する番号です。グローバルな引数リストには0が使用されます。arglistを参照してください。引数が無効な場合は-1を返します。
引数なしで現在のウィンドウを使用します。{winnr}のみで現在のタブページ内のこのウィンドウを使用します。{winnr}{tabnr}で、指定されたタブページ内のウィンドウを使用します。{winnr}は、ウィンドウ番号またはwindow-IDにすることができます。
パラメータ
{winnr} (integer?)
{tabnr} (integer?)
戻り値
(integer)
argv([{nr} [, {winid}]]) argv()
結果は、引数リスト内の{nr}番目のファイルです。arglistを参照してください。「argv(0)」は最初のファイルです。例
let i = 0
while i < argc()
  let f = escape(fnameescape(argv(i)), '.')
  exe 'amenu Arg.' .. f .. ' :e ' .. f .. '<CR>'
  let i = i + 1
endwhile
{nr}引数が指定されていない場合、または{nr}が-1の場合、arglist全体のListが返されます。
{winid}引数はウィンドウIDを指定します。argc()を参照してください。Vimコマンドライン引数についてはv:argvを参照してください。
{nr}番目の引数が引数リストに存在しない場合は空の文字列を返します。{winid}引数が無効な場合は空のListを返します。
パラメータ
{nr} (integer?)
{winid} (integer?)
戻り値
(string|string[])
asin({expr}) asin()
ラジアン単位で測定された{expr}のアークサインを、[-π/2, π/2]の範囲のFloatとして返します。{expr}は、[-1, 1]の範囲のFloatまたはNumberに評価されなければなりません。{expr}が[-1, 1]の範囲外の場合はNaNを返します。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo asin(0.8)
0.927295
echo asin(-0.5)
-0.523599
パラメータ
{expr} (any)
戻り値
(number)
assert_beeps({cmd}) assert_beeps()
{cmd}を実行し、ビープ音または視覚ベルを生成しない場合に、v:errorsにエラーメッセージを追加します。assert_fails()assert_nobeep()、およびassert-returnも参照してください。
パラメータ
{cmd} (string)
戻り値
(0|1)
assert_equal({expected}, {actual} [, {msg}]) assert_equal()
{expected}{actual}が等しくない場合、v:errorsにエラーメッセージが追加され、1が返されます。それ以外の場合は0が返されます。assert-return エラーは「Expected {expected} but got {actual}」という形式です。{msg}が存在する場合は、スクリプトから実行された場合のアサートの位置とともに、その前に追加されます。
自動変換はありません。「4」という文字列は数値の4とは異なり、数値の4はFloatの4.0とは異なります。'ignorecase'の値はここでは使用されず、常に大文字と小文字が区別されます。例
call assert_equal('foo', 'bar', 'baz')
v:errorsに次が追加されます。
test.vim 12行目: baz: Expected foo but got bar
パラメータ
{expected} (any)
{actual} (any)
{msg} (any?)
戻り値
(0|1)
assert_equalfile({fname_one}, {fname_two}) assert_equalfile()
ファイル{fname_one}{fname_two}にまったく同じテキストが含まれていない場合、v:errorsにエラーメッセージが追加されます。assert-returnも参照してください。{fname_one}または{fname_two}が存在しない場合、エラーはその旨を伝えます。
パラメータ
{fname_one} (string)
{fname_two} (string)
戻り値
(0|1)
assert_exception({error} [, {msg}]) assert_exception()
v:exceptionに文字列{error}が含まれていない場合、v:errorsにエラーメッセージが追加されます。assert-returnも参照してください。これは、コマンドが例外をスローすることをアサートするために使用できます。エラー番号の後にコロンを付けることで、翻訳による問題を回避できます。
try
  commandthatfails
  call assert_false(1, 'command should have failed')
catch
  call assert_exception('E492:')
endtry
パラメータ
{error} (any)
{msg} (any?)
戻り値
(0|1)
assert_fails()
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) {cmd}を実行し、エラーが発生しない場合、またはエラーメッセージに{error}が見つからない場合に、v:errorsにエラーメッセージを追加します。assert-returnも参照してください。
{error}が文字列の場合、最初に報告されたエラーに文字通り一致する必要があります。ほとんどの場合、これはコロンを含むエラーコード(例:「E123:」)になります。
call assert_fails('bad cmd', 'E987:')
{error}が1つまたは2つの文字列を含むListの場合、これらはパターンとして使用されます。最初のパターンは、最初に報告されたエラーと照合されます。
call assert_fails('cmd', ['E987:.*expected bool'])
2番目のパターン(存在する場合)は、最後に報告されたエラーと照合されます。最後のエラーのみを照合するには、最初のエラーに空の文字列を使用します。
call assert_fails('cmd', ['', 'E987:'])
{msg}が空の場合、使用されません。{lnum}引数を渡す場合にデフォルトメッセージを取得するには、これを行います。E1115
{lnum}が存在し、負でない場合、および{error}引数が存在し、一致する場合、これはエラーが報告された行番号と比較されます。これは、関数内またはスクリプト内の行番号です。E1116
{context}が存在する場合は、パターンとして使用され、{lnum}が存在するコンテキスト(スクリプト名または関数名)と照合されます。
ビープ音はエラーとは見なされず、失敗するコマンドの中にはビープ音のみを生成するものもあります。それらにはassert_beeps()を使用してください。
パラメータ
{cmd} (string)
{error} (any?)
{msg} (any?)
{lnum} (integer?)
{context} (any?)
戻り値
(0|1)
assert_false({actual} [, {msg}]) assert_false()
{actual}が偽ではない場合、v:errorsにエラーメッセージが追加されます。assert_equal()の場合と同様です。エラーは「偽と予想されましたが、{actual}が得られました」という形式です。{msg}が存在する場合は、スクリプトから実行された場合のアサーションの位置と共に、その前に付加されます。assert-returnも参照してください。
値がゼロの場合、偽となります。{actual}が数値でない場合、アサーションは失敗します。
パラメータ
{actual} (any)
{msg} (any?)
戻り値
(0|1)
assert_inrange({lower}, {upper}, {actual} [, {msg}]) assert_inrange()
これは、数値とFloat値をアサートします。{actual}{lower}より小さいか、{upper}より大きい場合、v:errorsにエラーメッセージが追加されます。assert-returnも参照してください。エラーは「範囲{lower} - {upper}と予想されましたが、{actual}が得られました」という形式です。{msg}が存在する場合は、その前に付加されます。
パラメータ
{lower} (数値)
{upper} (数値)
{actual} (数値)
{msg} (文字列?)
戻り値
(0|1)
assert_match({pattern}, {actual} [, {msg}]) assert_match()
{pattern}{actual}と一致しない場合、v:errorsにエラーメッセージが追加されます。assert-returnも参照してください。エラーは「パターン{pattern}{actual}と一致しません」という形式です。{msg}が存在する場合は、スクリプトから実行された場合のアサーションの位置と共に、その前に付加されます。
{pattern}expr-=~と同様に使用されます。マッチングは常に'magic'が設定され、'cpoptions'が空であるかのように実行され、'magic'または'cpoptions'の実際の値に関係なく行われます。
{actual}は文字列として使用され、自動変換が適用されます。「^」と「$」を使用して、テキストの先頭と末尾と一致させます。全体を一致させるには両方を使用します。
call assert_match('^f.*o$', 'foobar')
v:errorsに追加される文字列になります。
test.vim 12行目: パターン '^f.*o$' はfoobarと一致しません
パラメータ
{pattern} (文字列)
{actual} (文字列)
{msg} (文字列?)
戻り値
(0|1)
assert_nobeep({cmd}) assert_nobeep()
{cmd}を実行し、ビープ音または視覚ベルを生成した場合は、v:errorsにエラーメッセージを追加します。assert_beeps()も参照してください。
パラメータ
{cmd} (string)
戻り値
(0|1)
assert_notequal({expected}, {actual} [, {msg}]) assert_notequal()
assert_equal()の反対です。{expected}{actual}が等しい場合、v:errorsにエラーメッセージを追加します。assert-returnも参照してください。
パラメータ
{expected} (any)
{actual} (any)
{msg} (any?)
戻り値
(0|1)
assert_notmatch({pattern}, {actual} [, {msg}]) assert_notmatch()
assert_match()の反対です。{pattern}{actual}と一致する場合、v:errorsにエラーメッセージを追加します。assert-returnも参照してください。
パラメータ
{pattern} (文字列)
{actual} (文字列)
{msg} (文字列?)
戻り値
(0|1)
assert_report({msg}) assert_report()
文字列{msg}を使用して、テストの失敗を直接報告します。常に1を返します。
パラメータ
{msg} (文字列)
戻り値
(0|1)
assert_true({actual} [, {msg}]) assert_true()
{actual}が真ではない場合、v:errorsにエラーメッセージが追加されます。assert_equal()の場合と同様です。assert-returnも参照してください。値がゼロ以外の数値またはv:trueの場合、TRUEとなります。{actual}が数値またはv:trueでない場合、アサーションは失敗します。{msg}が指定されている場合、スクリプトから実行された場合のアサーションの位置と共に、デフォルトメッセージの前に付加されます。
パラメータ
{actual} (any)
{msg} (文字列?)
戻り値
(0|1)
atan({expr}) atan()
{expr}の逆正接の主値を [-pi/2, +pi/2] ラジアンの範囲でFloatとして返します。{expr}FloatまたはNumberとして評価される必要があります。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo atan(100)
1.560797
echo atan(-4.01)
-1.326405
パラメータ
{expr} (number)
戻り値
(number)
atan2({expr1}, {expr2}) atan2()
{expr1} / {expr2}の逆正接をラジアンで測定した値を [-pi, pi] の範囲でFloatとして返します。{expr1}{expr2}FloatまたはNumberとして評価される必要があります。{expr1}または{expr2}FloatまたはNumberでない場合は0.0を返します。例
echo atan2(-1, 1)
-0.785398
echo atan2(1, -1)
2.356194
パラメータ
{expr1} (number)
{expr2} (数値)
戻り値
(number)
blob2list({blob}) blob2list()
Blob {blob}内の各バイトの数値を含むリストを返します。例
blob2list(0z0102.0304)        " returns [1, 2, 3, 4]
blob2list(0z)                " returns []
エラーが発生した場合は空のリストを返します。list2blob()はその反対を行います。
パラメータ
{blob} (任意)
戻り値
(任意[])
browse({save}, {title}, {initdir}, {default}) browse()
ファイル要求ダイアログを表示します。これは "has("browse")" がTRUEを返す場合にのみ機能します(一部のGUIバージョンのみ)。入力フィールドは次のとおりです。{save}TRUEの場合、書き込むファイルを選択する {title} 要求ダイアログのタイトル {initdir} ブラウジングを開始するディレクトリ {default} デフォルトのファイル名 「キャンセル」ボタンが押された場合、何か問題が発生した場合、またはブラウジングが不可能な場合は、空の文字列が返されます。
パラメータ
{save} (任意)
{title} (文字列)
{initdir} (文字列)
{default} (文字列)
戻り値
(0|1)
browsedir({title}, {initdir}) browsedir()
ディレクトリ要求ダイアログを表示します。これは "has("browse")" がTRUEを返す場合にのみ機能します(一部のGUIバージョンのみ)。ディレクトリブラウザがサポートされていないシステムでは、ファイルブラウザが使用されます。その場合、使用するディレクトリ内のファイルを選択します。入力フィールドは次のとおりです。{title} 要求ダイアログのタイトル {initdir} ブラウジングを開始するディレクトリ 「キャンセル」ボタンが押された場合、何か問題が発生した場合、またはブラウジングが不可能な場合は、空の文字列が返されます。
パラメータ
{title} (文字列)
{initdir} (文字列)
戻り値
(0|1)
bufadd({name}) bufadd()
名前{name}(文字列でなければならない)を持つバッファをバッファリストに追加します。ファイル{name}のバッファが既に存在する場合は、そのバッファ番号を返します。そうでない場合は、新しく作成されたバッファのバッファ番号を返します。{name}が空の文字列の場合、常に新しいバッファが作成されます。'buflisted'は設定されず、まだロードされていません。バッファにテキストを追加するには、これを使用します。
let bufnr = bufadd('someName')
call bufload(bufnr)
call setbufline(bufnr, 1, ['some', 'text'])
エラーの場合は0を返します。
パラメータ
{name} (文字列)
戻り値
(integer)
bufexists({buf}) bufexists()
結果は数値であり、{buf}という名前のバッファが存在する場合はTRUEとなります。{buf}引数が数値の場合、バッファ番号が使用されます。数値0は現在のウィンドウの代替バッファです。
{buf}引数が文字列の場合、バッファ名と正確に一致する必要があります。名前は次のようになります。
現在のディレクトリからの相対パス。
フルパス。
'buftype'が「nofile」に設定されているバッファの名前。
URL名。リストされていないバッファも検索されます。:buffersの出力ではヘルプファイルは短い名前で表示されますが、bufexists()では長い名前を使用する必要があります。bufexists()はバッファが存在すると報告する可能性がありますが、:bufferコマンドで名前を使用するには、expand()を使用する必要がある場合があります。特にMS-Windowsの8.3形式の名前("c:\DOCUME~1"など)の場合。"bufexists(0)"を使用して、代替ファイル名の存在を確認します。
パラメータ
{buf} (任意)
戻り値
(0|1)
buflisted({buf}) buflisted()
結果は数値であり、{buf}という名前のバッファが存在し、リストされている('buflisted'オプションが設定されている)場合はTRUEとなります。{buf}引数はbufexists()と同様に使用されます。
パラメータ
{buf} (任意)
戻り値
(0|1)
bufload({buf}) bufload()
バッファ{buf}がロードされていることを確認します。バッファ名が既存のファイルを指す場合、ファイルが読み取られます。そうでない場合、バッファは空になります。バッファが既にロードされている場合は、変更はありません。バッファがファイルに関連付けられていない場合(例:'buftype'が「nofile」の場合)、ファイルは読み取られません。バッファのファイルに既存のスワップファイルがある場合、ダイアログは表示されず、バッファはとにかくロードされます。{buf}引数はbufexists()と同様に使用されます。
パラメータ
{buf} (任意)
bufloaded({buf}) bufloaded()
結果は数値であり、{buf}という名前のバッファが存在し、ロードされている(ウィンドウに表示されているか非表示であるか)場合はTRUEとなります。{buf}引数はbufexists()と同様に使用されます。
パラメータ
{buf} (任意)
戻り値
(0|1)
bufname([{buf}]) bufname()
結果はバッファの名前です。主に:lsコマンドで表示されるものと同じですが、「[No Name]」などの特殊な名前は使用しません。{buf}が省略された場合、現在のバッファが使用されます。{buf}が数値の場合、そのバッファ番号の名前が返されます。数値0は現在のウィンドウの代替バッファです。{buf}が文字列の場合、バッファ名と照合するfile-patternとして使用されます。これは常に'magic'が設定され、'cpoptions'が空であるかのように実行されます。複数のマッチがある場合は、空の文字列が返されます。" "または"%"は現在のバッファに使用でき、"#"は代替バッファに使用できます。完全一致が優先され、そうでない場合は、バッファ名の先頭、末尾、または中央での一致が受け入れられます。完全一致のみを希望する場合は、パターンの先頭に"^"を、末尾に"$"を付けます。リストされているバッファが最初に検索されます。リストされているバッファに単一の一致がある場合、そのバッファが返されます。次に、リストされていないバッファが検索されます。{buf}が文字列だが、バッファ番号として使用したい場合は、0を加算して数値として強制します。
echo bufname("3" + 0)
バッファが存在しない場合、または名前がない場合は、空の文字列が返されます。
echo bufname("#")        " alternate buffer name
echo bufname(3)                " name of buffer 3
echo bufname("%")        " name of current buffer
echo bufname("file2")        " name of buffer where "file2" matches.
パラメータ
{buf} (整数|文字列?)
戻り値
(文字列)
bufnr([{buf} [, {create}]]) bufnr()
結果は、:lsコマンドで表示されるバッファの番号です。{buf}の使用方法については、上記のbufname()を参照してください。バッファが存在しない場合は-1が返されます。または、{create}引数が存在しTRUEの場合、新しいリストされていないバッファが作成され、その番号が返されます。bufnr("$")は最後のバッファです。
let last_buffer = bufnr("$")
結果は、既存のバッファの中で最も高いバッファ番号を表す数値です。より小さい番号を持つすべてバッファが必ずしも存在するとは限りません。 ":bwipeout"によって削除されている可能性があるためです。バッファの存在を確認するには、bufexists()を使用してください。
パラメータ
{buf} (整数|文字列?)
{create} (any?)
戻り値
(integer)
bufwinid({buf}) bufwinid()
結果は、バッファ{buf}に関連付けられた最初のウィンドウのウィンドウIDを表す数値です。{buf}の使用方法については、上記のbufname()を参照してください。バッファ{buf}が存在しない場合、またはそのようなウィンドウがない場合は-1が返されます。例
echo "A window containing buffer 1 is " .. (bufwinid(1))
現在のタブページのみを処理します。詳細な検索については、win_findbuf()を参照してください。
パラメータ
{buf} (任意)
戻り値
(integer)
bufwinnr({buf}) bufwinnr()
bufwinid()と同様ですが、ウィンドウIDではなくウィンドウ番号を返します。バッファ{buf}が存在しない場合、またはそのようなウィンドウがない場合は-1が返されます。例
echo "A window containing buffer 1 is " .. (bufwinnr(1))
この番号は、CTRL-W_wと":wincmd w" :wincmdで使用できます。
パラメータ
{buf} (任意)
戻り値
(integer)
byte2line({byte}) byte2line()
現在のバッファ内のバイト数{byte}にある文字を含む行番号を返します。現在のバッファの'fileformat'オプションに応じて、改行文字が含まれます。最初の文字のバイト数は1です。line2byte()go、および:gotoも参照してください。
{byte}値が無効な場合は-1を返します。
パラメータ
{byte} (any)
戻り値
(integer)
byteidx({expr}, {nr} [, {utf16}]) byteidx()
文字列{expr}内の{nr}番目の文字のバイトインデックスを返します。最初の文字にはゼロを使用し、ゼロを返します。マルチバイト文字がない場合、戻り値は{nr}と等しくなります。合成文字は別個にカウントされず、そのバイト長は前の基本文字に追加されます。合成文字を個別にカウントするには、下記のbyteidxcomp()を参照してください。{utf16}が存在しTRUEの場合、{nr}は文字インデックスではなく、文字列{expr}のUTF-16インデックスとして使用されます。UTF-16インデックスは、16ビットワードでエンコードされた場合の文字列内のインデックスです。指定されたUTF-16インデックスが文字の中央にある場合(例:4バイト文字の中央)、その文字の最初のバイトのバイトインデックスが返されます。詳細については、string-offset-encodingを参照してください。例
echo matchstr(str, ".", byteidx(str, 3))
4番目の文字を表示します。同じことを行う別の方法
let s = strpart(str, byteidx(str, 3))
echo strpart(s, 0, byteidx(s, 1))
strgetchar()strcharpart()も参照してください。
{nr}個より少ない文字がある場合は-1を返します。正確に{nr}個の文字がある場合は、バイト単位の文字列の長さを返します。charidx()utf16idx()は、バイトインデックスからそれぞれ文字インデックスとUTF-16インデックスを取得するために使用します。例
echo byteidx('a😊😊', 2)        " returns 5
echo byteidx('a😊😊', 2, 1)        " returns 1
echo byteidx('a😊😊', 3, 1)        " returns 5
パラメータ
{expr} (any)
{nr} (integer)
{utf16} (any?)
戻り値
(integer)
byteidxcomp({expr}, {nr} [, {utf16}]) byteidxcomp()
byteidx()と同様ですが、合成文字は個別の文字としてカウントされます。例
let s = 'e' .. nr2char(0x301)
echo byteidx(s, 1)
echo byteidxcomp(s, 1)
echo byteidxcomp(s, 2)
最初のエコーと3番目のエコーは3('e'と合成文字で3バイト)、2番目のエコーは1('e'は1バイト)になります。
パラメータ
{expr} (any)
{nr} (integer)
{utf16} (any?)
戻り値
(integer)
call({func}, {arglist} [, {dict}]) call() E699引数としてリスト{arglist}内の項目を使用して、関数{func}を呼び出します。{func}Funcrefまたは関数の名前のいずれかです。a:firstlineとa:lastlineはカーソル行に設定されます。呼び出された関数の戻り値を返します。{dict}は、「dict」属性を持つ関数用です。ローカル変数「self」の設定に使用されます。Dictionary-function
パラメータ
{func} (any)
{arglist} (any)
{dict} (any?)
戻り値
(any)
ceil({expr}) ceil()
浮動小数点数(切り上げ)として、{expr}以上の最小の整数値を返します。{expr}浮動小数点数または数値として評価する必要があります。例
echo ceil(1.456)
2.0
echo ceil(-5.456)
-5.0
echo ceil(4.0)
4.0
{expr}浮動小数点数または数値でない場合は0.0を返します。
パラメータ
{expr} (number)
戻り値
(number)
chanclose({id} [, {stream}]) chanclose()
チャネルまたはそれに関連付けられた特定のストリームを閉じます。ジョブの場合、{stream}は"stdin"、"stdout"、"stderr"、または"rpc"のいずれかになります("rpc":v:trueで開始されたジョブのstdin/stdoutを閉じます)。{stream}が省略された場合、すべてのストリームが閉じられます。チャネルがptyの場合、ptyマスターが閉じられ、ジョブプロセスにSIGHUPシグナルが送信されます。ソケットの場合、ストリームは1つだけであり、{stream}は省略する必要があります。
パラメータ
{id} (integer)
{stream} (string?)
戻り値
(0|1)
changenr() changenr()
最新の変更の番号を返します。:undolistで表示される番号と同じであり、:undoコマンドで使用できます。変更が行われた場合、その変更の番号です。やり直し後、やり直された変更の番号になります。元に戻した後、元に戻された変更の番号から1を引いた値になります。元に戻すリストが空の場合は0を返します。
戻り値
(integer)
chansend({id}, {data}) chansend()
チャネル{id}にデータを送信します。ジョブの場合、プロセスのstdinに書き込みます。channel-stdioチャネルの場合、Nvimのstdoutに書き込みます。書き込みが成功した場合は書き込まれたバイト数を、それ以外の場合は0を返します。詳細については、channel-bytesを参照してください。
{data}は、文字列、文字列に変換可能なもの、Blob、またはリストです。{data}がリストの場合、項目は改行文字で結合されます。項目内の改行文字はNULとして送信されます。最終的な改行文字を送信するには、最終的な空の文字列を含めます。例
call chansend(id, ["abc", "123\n456", ""])
"abc123456"を送信します。
chansend()は、RPCメッセージではなく、生のデータを書き込みます。チャネルが"rpc":v:trueで作成された場合、チャネルはRPCメッセージを期待するため、代わりにrpcnotify()rpcrequest()を使用してください。
パラメータ
{id} (number)
{data} (string|string[])
戻り値
(0|1)
char2nr({string} [, {utf8}]) char2nr()
{string}の最初の文字の数値を返します。例
echo char2nr(" ")        " returns 32
echo char2nr("ABC")        " returns 65
echo char2nr("á")        " returns 225
echo char2nr("á"[0])        " returns 195
echo char2nr("\<M-x>")        " returns 128
非ASCII文字は常にUTF-8文字として扱われます。{utf8}は無視されます。後方互換性のためだけに存在します。結合文字は個別の文字です。nr2char()は逆の処理を行います。
{string}文字列でない場合は0を返します。
パラメータ
{string} (string)
{utf8} (any?)
戻り値
(0|1)
charclass({string}) charclass()
{string}の最初の文字の文字クラスを返します。文字クラスは次のいずれかです。0空白1句読点2単語文字('iskeyword'に依存)3絵文字その他の特定のUnicodeクラスこのクラスは、パターンと単語移動で使用されます。{string}文字列でない場合は0を返します。
パラメータ
{string} (string)
戻り値
(0|1|2|3|'other')
charcol({expr} [, {winid}]) charcol()
col()と同じですが、バイト位置ではなく、{expr}で指定された列位置の文字インデックスを返します。
例:テキスト"여보세요"の5行目の'세'にカーソルがある場合
echo charcol('.')        " returns 3
echo col('.')                " returns 7
パラメータ
{expr} (string|integer[])
{winid} (integer?)
戻り値
(integer)
charidx({string}, {idx} [, {countcc} [, {utf16}]]) charidx()
{string}内の{idx}バイト目の文字インデックスを返します。最初の文字のインデックスはゼロです。マルチバイト文字がない場合、戻り値は{idx}と等しくなります。
{countcc}が省略されているかFALSEの場合、合成文字は個別にカウントされず、そのバイト長は前の基本文字に追加されます。{countcc}TRUEの場合、合成文字は個別の文字としてカウントされます。
{utf16}が存在しTRUEの場合、{idx}はバイトインデックスではなく、文字列{expr}のUTF-16インデックスとして使用されます。
引数が無効である場合、または{idx}バイトより少ないバイトがある場合は-1を返します。正確に{idx}バイトがある場合、文字単位の文字列の長さを返します。
最初の引数が文字列でない場合、2番目の引数が数値でない場合、または3番目の引数が存在し、0または1でない場合は、エラーが発生し-1が返されます。
byteidx()byteidxcomp()は文字インデックスからバイトインデックスを取得するために使用し、utf16idx()は文字インデックスからUTF-16インデックスを取得するために使用します。string-offset-encodingも参照してください。例
echo charidx('áb́ć', 3)                " returns 1
echo charidx('áb́ć', 6, 1)        " returns 4
echo charidx('áb́ć', 16)                " returns -1
echo charidx('a😊😊', 4, 0, 1)        " returns 2
パラメータ
{string} (string)
{idx} (integer)
{countcc} (boolean?)
{utf16} (boolean?)
戻り値
(integer)
chdir({dir}) chdir()
現在の作業ディレクトリを{dir}に変更します。ディレクトリ変更の範囲は、現在のウィンドウのディレクトリに依存します。
現在のウィンドウにウィンドウローカルディレクトリ(:lcd)がある場合、ウィンドウローカルディレクトリが変更されます。
それ以外の場合は、現在のタブページにローカルディレクトリ(:tcd)がある場合、タブページローカルディレクトリが変更されます。
それ以外の場合は、グローバルディレクトリが変更されます。{dir}は文字列である必要があります。成功した場合は、以前の作業ディレクトリが返されます。ディレクトリを復元するには、これを別のchdir()に渡します。失敗した場合は、空の文字列を返します。
let save_dir = chdir(newdir)
if save_dir != ""
   " ... do some work
   call chdir(save_dir)
endif
パラメータ
{dir} (string)
戻り値
(文字列)
cindent({lnum}) cindent()
'cindent'と同様に、Cインデント規則に従って、行{lnum}のインデント量を取得します。インデントはスペースでカウントされ、'tabstop'の値が関連します。{lnum}getline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。Cインデントを参照してください。
パラメータ
{lnum} (integer)
戻り値
(integer)
clearmatches([{win}]) clearmatches()
matchadd() および :match コマンドによって現在ウィンドウに対して以前に定義されたすべてのマッチをクリアします。{win} を指定すると、現在のウィンドウの代わりにこの番号またはウィンドウ ID を持つウィンドウが使用されます。
パラメータ
{win} (integer?)
col({expr} [, {winid}]) col()
結果は、{expr} で指定された列位置のバイトインデックスである数値です。有効な位置については、getpos() を参照してください。{expr} が「$」の場合、カーソル行の末尾を意味し、結果はカーソル行のバイト数プラス1になります。さらに、{expr} は[lnum, col]にすることができます。これは、行番号と列番号を含むリストです。列が「$」の場合、特定の行の最後の列を取得するのに最も役立ちます。「lnum」または「col」が範囲外の場合、col() はゼロを返します。
オプションの{winid}引数を使用すると、現在のウィンドウの代わりにそのウィンドウの値が取得されます。
行番号を取得するには、line() を使用します。両方取得するには、getpos() を使用します。
画面上の列位置を取得するには、virtcol() を使用します。文字位置を取得するには、charcol() を使用します。
現在のファイル内のマークのみを使用できることに注意してください。
echo col(".")                        " column of cursor
echo col("$")                        " length of cursor line plus one
echo col("'t")                        " column of mark t
echo col("'" .. markname)        " column of mark markname
最初の列は1です。{expr}が無効である場合、またはID {winid}のウィンドウが見つからない場合は0を返します。大文字のマークの場合、列は実際には別のバッファにある可能性があります。カーソル位置の場合、'virtualedit' が有効になっていると、カーソルが行末にある場合、列は1つ大きくなります。また、<Cmd> マッピングを使用する場合、カーソルは移動されません。これは、挿入モードでの列を取得するために使用できます。
imap <F2> <Cmd>echo col(".").."\n"<CR>
パラメータ
{expr} (string|integer[])
{winid} (integer?)
戻り値
(integer)
complete({startcol}, {matches}) complete() E785 挿入モードの補完のマッチを設定します。挿入モードでのみ使用できます。i_CTRL-R を参照して、CTRL-R を含むマッピングを使用する必要があります。CTRL-Oの後、または式マッピングでは動作しません。{startcol} は、補完されるテキストが始まる行におけるバイトオフセットです。カーソルまでのテキストは、マッチで置き換えられる元のテキストです。空の文字列には col('.') を使用します。"col('.') - 1" は、マッチで1文字を置き換えます。{matches}リスト でなければなりません。各 リスト のアイテムは1つのマッチです。complete-items で可能なアイテムの種類を参照してください。'completeopt' の "longest" は無視されます。この関数を呼び出した後は、補完が停止するようなものを挿入しないようにする必要があります。マッチは、挿入モードの補完で通常どおりCTRL-NCTRL-P で選択できます。指定されている場合、ポップアップメニューが表示されます。ins-completion-menu を参照してください。例
inoremap <F5> <C-R>=ListMonths()<CR>
func ListMonths()
  call complete(col('.'), ['January', 'February', 'March',
    \ 'April', 'May', 'June', 'July', 'August', 'September',
    \ 'October', 'November', 'December'])
  return ''
endfunc
これはあまり役に立ちませんが、動作方法を示しています。ゼロが挿入されるのを避けるために、空の文字列が返されることに注意してください。
パラメータ
{startcol} (integer)
{matches} (any[])
complete_add({expr}) complete_add()
{expr} をマッチのリストに追加します。'completefunc' オプションで指定された関数によってのみ使用されます。失敗した場合(空の文字列またはメモリ不足)は0、マッチが追加された場合は1、マッチが既にリストに存在する場合は2を返します。{expr} の説明については、complete-functions を参照してください。'omnifunc' が返すリスト内のアイテムと同じです。
パラメータ
{expr} (any)
戻り値
(0|1|2)
complete_check() complete_check()
補完マッチを検索中にタイプされたキーをチェックします。これは、マッチの検索に時間がかかる場合に使用されます。マッチの検索を中止する必要がある場合はTRUE、そうでない場合はゼロを返します。'completefunc' オプションで指定された関数によってのみ使用されます。
戻り値
(0|1)
complete_info([{what}]) complete_info()
挿入モードの補完に関する情報を格納した辞書を返します。ins-completion を参照してください。アイテムは以下のとおりです。mode 現在の補完モード名文字列。complete_info_modeで値を参照してください。pum_visible ポップアップメニューが表示されている場合はTRUEpumvisible() を参照してください。items 補完マッチのリスト。各アイテムは、"word"、"abbr"、"menu"、"kind"、"info"、"user_data"のエントリを含む辞書です。complete-items を参照してください。selected 選択されたアイテムのインデックス。最初のインデックスはゼロです。アイテムが選択されていない場合は-1(タイプされたテキストのみを表示している場合、または<Up>または<Down>キーを使用しているときにアイテムが選択されていない後の最後の補完の場合)inserted 挿入された文字列。[まだ実装されていません] preview_winid 情報浮動プレビューウィンドウID。preview_bufnr 情報浮動プレビューバッファID。
complete_info_mode
mode の値は次のとおりです。" " 補完モードではない "keyword" キーワード補完 i_CTRL-X_CTRL-N "ctrl_x" CTRL-X を押したばかり i_CTRL-X "scroll" i_CTRL-X_CTRL-E または i_CTRL-X_CTRL-Y でスクロール "whole_line" 全行 i_CTRL-X_CTRL-L "files" ファイル名 i_CTRL-X_CTRL-F "tags" タグ i_CTRL-X_CTRL-] "path_defines" 定義補完 i_CTRL-X_CTRL-D "path_patterns" インクルード補完 i_CTRL-X_CTRL-I "dictionary" 辞書 i_CTRL-X_CTRL-K "thesaurus" シソーラス i_CTRL-X_CTRL-T "cmdline" Vim コマンドライン i_CTRL-X_CTRL-V "function" ユーザー定義の補完 i_CTRL-X_CTRL-U "omni" オムニ補完 i_CTRL-X_CTRL-O "spell" スペルミス候補 i_CTRL-X_s "eval" complete() 補完 "unknown" その他の内部モード
オプションの{what}リスト引数が提供されている場合、{what}にリストされているアイテムのみが返されます。{what}内のサポートされていないアイテムは、黙って無視されます。
ポップアップメニューの位置とサイズを取得するには、pum_getpos() を参照してください。CompleteChanged イベント中にも v:event で使用できます。
エラー時には空の辞書を返します。
" Get all items
call complete_info()
" Get only 'mode'
call complete_info(['mode'])
" Get only 'mode' and 'pum_visible'
call complete_info(['mode', 'pum_visible'])
パラメータ
{what} (any[]?)
戻り値
(table)
confirm({msg} [, {choices} [, {default} [, {type}]]]) confirm()
confirm() はユーザーにダイアログを表示し、そこから選択を行うことができます。選択の番号を返します。最初の選択の場合は1です。
{msg} は、{choices} を選択肢としてダイアログに表示されます。{choices} が不足しているか空の場合、「&OK」が使用されます(そして翻訳されます)。{msg} は文字列です。改行を含めるには '\n' を使用します。一部のシステムでは、文字列が収まらない場合に折り返されます。
{choices} は文字列で、個々の選択肢は '\n' で区切られます。例:
confirm("Save changes?", "&Yes\n&No\n&Cancel")
'&' の後の文字はその選択肢のショートカットキーです。したがって、'c' を入力して "Cancel" を選択できます。ショートカットは最初の文字である必要はありません。
confirm("file has been modified", "&Save\nSave &All")
コンソールの場合、各選択肢の最初の文字がデフォルトのショートカットキーとして使用されます。大文字と小文字は区別されません。
オプションの{type}文字列引数は、ダイアログの種類を指定します。「Error」、「Question」、「Info」、「Warning」、または「Generic」のいずれかの値にすることができます。最初の文字のみが関連します。{type}が省略された場合は、「Generic」が使用されます。
オプションの{type}引数は、ダイアログの種類を指定します。これは、Win32 GUI のアイコンに対してのみ使用されます。「Error」、「Question」、「Info」、「Warning」、または「Generic」のいずれかの値にすることができます。最初の文字のみが関連します。{type}が省略された場合は、「Generic」が使用されます。
ユーザーが<Esc>CTRL-C、または他の有効な割り込みキーを押してダイアログを中止した場合、confirm() は 0 を返します。
let choice = confirm("What do you want?",
                     \ "&Apples\n&Oranges\n&Bananas", 2)
if choice == 0
     echo "make up your mind!"
elseif choice == 3
     echo "tasteful"
else
     echo "I prefer bananas myself."
endif
GUI ダイアログでは、ボタンが使用されます。ボタンのレイアウトは、'guioptions' の 'v' フラグによって異なります。含まれている場合、ボタンは常に垂直に配置されます。そうでない場合、confirm() はボタンを1本の水平線に配置しようとします。収まらない場合は、いずれにせよ垂直レイアウトが使用されます。一部のシステムでは、水平レイアウトが常に使用されます。
パラメータ
{msg} (文字列)
{choices} (string?)
{default} (integer?)
{type} (string?)
戻り値
(integer)
copy({expr}) copy()
{expr}のコピーを作成します。数値と文字列の場合、{expr}を直接使用することと変わりません。{expr}リストの場合、浅いコピーが作成されます。つまり、元のリストを変更してもコピーは変更されず、その逆も同様です。しかし、アイテムは同一であるため、アイテムを変更すると両方のリストの内容が変更されます。辞書リストと同様の方法でコピーされます。deepcopy()も参照してください。
パラメータ
{expr} (any)
戻り値
(any)
cos({expr}) cos()
ラジアンで測定した{expr}の余弦を浮動小数点数として返します。{expr}浮動小数点数または数値でなければなりません。{expr}浮動小数点数または数値でない場合は0.0を返します。例
echo cos(100)
0.862319
echo cos(-4.01)
-0.646043
パラメータ
{expr} (number)
戻り値
(number)
cosh({expr}) cosh()
{expr}の双曲線余弦を[1, inf]の範囲の浮動小数点数として返します。{expr}浮動小数点数または数値でなければなりません。{expr}浮動小数点数または数値でない場合は0.0を返します。例
echo cosh(0.5)
1.127626
echo cosh(-0.5)
-1.127626
パラメータ
{expr} (number)
戻り値
(number)
count({comp}, {expr} [, {ic} [, {start}]]) count() E706 文字列リスト、または辞書{comp}に値{expr}を持つアイテムが何回出現するかを返します。
{start}が指定されている場合、このインデックスを持つアイテムから開始します。{start}リストでのみ使用できます。
{ic}が指定され、それがTRUEの場合、大文字と小文字は区別されません。
{comp}が文字列の場合、{expr}の重複しない出現回数が返されます。{expr}が空の文字列の場合、ゼロが返されます。
パラメータ
{comp} (string|table|any[])
{expr} (any)
{ic} (boolean?)
{start} (integer?)
戻り値
(integer)
ctxget([{index}]) ctxget()
コンテキストスタックの一番上から{index}番目のコンテキストを表す辞書を返します(context-dictを参照)。{index}が指定されていない場合、0(つまり、一番上)であるとみなされます。
パラメータ
{index} (integer?)
戻り値
(table)
ctxpop() ctxpop()
コンテキストスタックの一番上のコンテキストをポップして復元します。
戻り値
(any)
ctxpush([{types}]) ctxpush()
現在のエディターの状態(コンテキスト)をコンテキストスタックにプッシュします。{types}が指定され、文字列リストの場合、プッシュされたコンテキストに含めるコンテキストの種類を指定します。それ以外の場合は、すべてのコンテキストの種類が含まれます。
パラメータ
{types} (string[]?)
戻り値
(any)
ctxset({context} [, {index}]) ctxset()
コンテキストスタックの先頭からインデックス{index}の位置にあるコンテキストを、{context}で表されるコンテキストに設定します。{context}はコンテキストデータを持つ辞書( context-dict)です。{index}が指定されていない場合、0(つまり先頭)とみなされます。
パラメータ
{context} (table)
{index} (integer?)
戻り値
(any)
ctxsize() ctxsize()
コンテキストスタックのサイズを返します。
戻り値
(any)
cursor({lnum}, {col} [, {off}]) cursor()
{lnum}の列(バイト数){col}にカーソルを配置します。最初の列は1です。
引数が1つの{list}の場合、これは2、3、または4つの要素を持つリストListとして使用されます: [{lnum}, {col}] [{lnum}, {col}, {off}] [{lnum}, {col}, {off}, {curswant}] これはgetpos()またはgetcurpos()の戻り値と同じですが、最初の要素がありません。
{col}を文字数として使用してカーソルを配置するには、setcursorcharpos()を使用してください。
ジャンプリストは変更しません。{lnum}getline()と同様に使用されますが、{lnum}が0の場合、カーソルは現在の行にとどまります。{lnum}がバッファの行数より大きい場合、カーソルはバッファの最後の行に配置されます。{col}が行のバイト数より大きい場合、カーソルは行の最後の文字に配置されます。{col}が0の場合、カーソルは現在の列にとどまります。{curswant}が指定されている場合は、垂直方向の移動で優先される列を設定するために使用されます。それ以外の場合は、{col}が使用されます。
'virtualedit'が使用されている場合、{off}は文字の先頭からの画面列のオフセットを指定します。例:<Tab>内または最後の文字の後の位置。位置を設定できた場合は0を、そうでない場合は-1を返します。
パラメータ
{list} (integer[])
戻り値
(any)
debugbreak({pid}) debugbreak()
デバッグ中のプログラムを中断するために特に使用されます。プロセス{pid}にSIGTRAPシグナルを送信します。他のプロセスの動作は未定義です。terminal-debugを参照してください。(MS-Windows以外では、プロセス{pid}にSIGINTシグナルを送信します)
プログラムを正常に中断した場合TRUEを、そうでない場合FALSEを返します。
パラメータ
{pid} (integer)
戻り値
(any)
deepcopy({expr} [, {noref}]) deepcopy() E698 {expr}のコピーを作成します。数値と文字列の場合、{expr}を直接使用することと変わりません。{expr}がリストListの場合、完全なコピーが作成されます。つまり、元のリストListを変更してもコピーは変更されず、その逆も同様です。アイテムがリストListの場合、そのアイテムのコピーが再帰的に作成されます。したがって、コピー内のアイテムを変更しても、元のリストListの内容は変更されません。
{noref}が省略されているか0の場合、含まれているリストListまたは辞書Dictionaryは一度だけコピーされます。すべての参照はこの単一のコピーを指します。{noref}を1に設定すると、リストListまたは辞書Dictionaryの出現ごとに新しいコピーが作成されます。これは、循環参照によりdeepcopy()が失敗することを意味します。E724
ネストは最大100レベル可能です。上位レベルを参照するアイテムがある場合、{noref}を1に設定してディープコピーを作成すると失敗します。copy()も参照してください。
パラメータ
{expr} (any)
{noref} (boolean?)
戻り値
(any)
delete({fname} [, {flags}]) delete()
{flags}がない場合、または{flags}が空の場合:名前{fname}のファイルを削除します。
これは、{fname}がシンボリックリンクの場合にも機能します。シンボリックリンク自体が削除され、それが指すものは削除されません。
{flags}が"d"の場合:名前{fname}のディレクトリを削除します。ディレクトリ{fname}が空でない場合は失敗します。
{flags}が"rf"の場合:名前{fname}のディレクトリとその中のすべてを再帰的に削除します。注意してください! 注:MS-Windowsでは、使用中のディレクトリを削除することはできません。
結果は数値であり、削除操作が成功した場合は0/false、削除に失敗した場合または部分的に失敗した場合は-1/trueになります。
パラメータ
{fname} (string)
{flags} (string?)
戻り値
(integer)
deletebufline({buf}, {first} [, {last}]) deletebufline()
バッファ{buf}から行{first}から{last}まで(を含む)を削除します。{last}が省略されている場合は、行{first}のみを削除します。成功した場合は0を、失敗した場合は1を返します。
この関数は、ロード済みのバッファでのみ機能します。必要に応じて、最初にbufload()を呼び出してください。
{buf}の使用方法については、上記のbufname()を参照してください。
{first}{last}getline()と同様に使用されます。 line()を使用する場合、これは現在のバッファを参照することに注意してください。"$"を使用して、バッファ{buf}の最後の行を参照します。
パラメータ
{buf} (integer|string)
{first} (integer|string)
{last} (integer|string?)
戻り値
(any)
dictwatcheradd({dict}, {pattern}, {callback}) dictwatcheradd()
辞書にウォッチャーを追加します。辞書ウォッチャーは3つのコンポーネントで識別されます。
辞書({dict});
キーパターン({pattern}).
関数({callback}).
これが呼び出された後、{dict}および{pattern}に一致するキーのすべての変更により、{callback}が呼び出されます。
たとえば、すべてのグローバル変数を監視するには
silent! call dictwatcherdel(g:, '*', 'OnDictChanged')
function! OnDictChanged(d,k,z)
  echomsg string(a:k) string(a:z)
endfunction
call dictwatcheradd(g:, '*', 'OnDictChanged')
現時点では、{pattern}は文字列の末尾に"*"を含めることができる非常に単純なパターンのみを受け入れます。その場合、接頭辞が"*"の前にあるすべてのキーと一致します。つまり、"*"が{pattern}の最後の文字でない場合、{pattern}と完全に等しいキーのみが一致するということです。
{callback}は3つの引数を受け取ります。
監視されている辞書。
変更されたキー。
キーの新しい値と古い値を含む辞書。
変更の種類は、3番目の引数にあるキーを調べることで判断できます。
oldnewの両方が含まれている場合、キーが更新されました。
newのみが含まれている場合、キーが追加されました。
oldのみが含まれている場合、キーが削除されました。
この関数は、プラグインが検証と解析ロジックを持つオプションを実装するために使用できます。
パラメータ
{dict} (table)
{pattern} (文字列)
{callback} (function)
戻り値
(any)
dictwatcherdel({dict}, {pattern}, {callback}) dictwatcherdel()
dictwatcheradd()で追加されたウォッチャーを削除します。ウォッチャーを正常に削除するには、すべての3つの引数がdictwatcheradd()に渡された引数と一致する必要があります。
パラメータ
{dict} (any)
{pattern} (文字列)
{callback} (function)
戻り値
(any)
did_filetype() did_filetype()
autocommandが実行中で、FileTypeイベントが少なくとも1回トリガーされた場合にTRUEを返します。ファイルの種類を検出するスクリプトでFileTypeイベントを再度トリガーするのを回避するために使用できます。FileType :setf FALLBACKが使用された場合はFALSEを返します。別のファイルを編集すると、カウンターはリセットされます。そのため、これは現在のバッファに対してFileTypeイベントがトリガーされたかどうかを実際に確認します。これにより、別のバッファの編集を開始するautocommandは'filetype'を設定し、構文ファイルを読み込むことができます。
戻り値
(any)
diff_filler({lnum}) diff_filler()
{lnum}の上にあるフィラー行の数を返します。これらは、別のdiff表示ウィンドウでこの時点に挿入された行です。これらのフィラー行は表示されますが、バッファには存在しません。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどです。現在のウィンドウがdiffモードでない場合は0を返します。
パラメータ
{lnum} (integer)
戻り値
(any)
diff_hlID({lnum}, {col}) diff_hlID()
{lnum}{col}(バイトインデックス)のdiffモードのハイライトIDを返します。現在の行にdiff変更がない場合、0が返されます。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどです。{col}は左端の列が1、{lnum}は最初の行が1です。ハイライトIDはsynIDattr()で使用して、ハイライトに関する構文情報を取得できます。
パラメータ
{lnum} (integer)
{col} (integer)
戻り値
(any)
digraph_get({chars}) digraph_get() E1214 {chars}のダイグラフを返します。これは正確に2文字の文字列である必要があります。{chars}が2文字だけではない場合、または{chars}のダイグラフが存在しない場合、エラーが発生し、空の文字列が返されます。
digraph_getlist()も参照してください。
" Get a built-in digraph
echo digraph_get('00')                " Returns '∞'
" Get a user-defined digraph
call digraph_set('aa', 'あ')
echo digraph_get('aa')                " Returns 'あ'
パラメータ
{chars} (string)
戻り値
(any)
digraph_getlist([{listall}]) digraph_getlist()
ダイグラフのリストを返します。{listall}引数が指定されていてTRUEの場合、デフォルトのダイグラフを含むすべてのダイグラフを返します。それ以外の場合は、ユーザー定義のダイグラフのみを返します。
digraph_get()も参照してください。
" Get user-defined digraphs
echo digraph_getlist()
" Get all the digraphs, including default digraphs
echo digraph_getlist(1)
パラメータ
{listall} (boolean?)
戻り値
(any)
digraph_set({chars}, {digraph}) digraph_set()
リストにダイグラフ{chars}を追加します。{chars}は2文字の文字列である必要があります。{digraph}は1つのUTF-8エンコードされた文字を持つ文字列です。E1215 注意してください、合成文字は無視されません。この関数は:digraphsコマンドに似ていますが、空白で始まるダイグラフを追加するのに役立ちます。
関数の結果は、ダイグラフが登録されている場合はv:trueです。失敗した場合はエラーメッセージが表示され、v:falseが返されます。
一度に複数のダイグラフを定義する場合は、digraph_setlist()を使用できます。
call digraph_set('  ', 'あ')
パラメータ
{chars} (string)
{digraph} (string)
戻り値
(any)
digraph_setlist({digraphlist}) digraph_setlist()
digraph_set()に似ていますが、この関数は一度に複数のダイグラフを追加できます。{digraphlist}はリストで構成されるリストであり、各リストにはdigraph_set()のように{chars}{digraph}を含む2つの文字列が含まれています。E1216
call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
これは次のものと似ています。
for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
      call digraph_set(chars, digraph)
endfor
ただし、関数は最初のエラーの後で返されるため、後続のダイグラフは追加されません。
パラメータ
{digraphlist} (table<integer,string[]>)
戻り値
(any)
empty({expr}) empty()
{expr}が空の場合、数値の1を返し、それ以外の場合は0を返します。
リストまたは辞書は、アイテムが1つもない場合に空です。
文字列の長さが0の場合、空です。
数値浮動小数点数は、値が0の場合に空です。
v:falsev:nullは空です。v:trueは空ではありません。
Blobの長さが0の場合、空です。
パラメータ
{expr} (any)
戻り値
(any)
environ() environ()
すべての環境変数を辞書として返します。環境変数の存在確認は次のように行えます。
echo has_key(environ(), 'HOME')
変数名はCamelCaseの場合があります。大文字小文字を区別しない場合は、以下を使用してください。
echo index(keys(environ()), 'HOME', 0, 1) != -1
戻り値
(any)
escape({string}, {chars}) escape()
{string}に出現する{chars}内の文字をバックスラッシュでエスケープします。例:
echo escape('c:\program files\vim', ' \')
結果は次のようになります。
c:\\program\ files\\vim
また、shellescape()fnameescape()も参照してください。
パラメータ
{string} (string)
{chars} (string)
戻り値
(any)
eval({string}) eval()
{string}を評価し、結果を返します。string()の結果を元の値に戻すのに特に役立ちます。数値、浮動小数点数、文字列、Blob、およびそれらの複合体で機能します。既存の関数を参照するFuncrefにも機能します。
パラメータ
{string} (string)
戻り値
(any)
eventhandler() eventhandler()
イベントハンドラ内で1を返します。つまり、Vimがユーザーからの文字入力待ち中に中断された場合(例:ファイルをVimにドラッグアンドドロップした場合)です。これは、対話型コマンドを使用できないことを意味します。それ以外の場合は0を返します。
戻り値
(any)
executable({expr}) executable()
この関数は、{expr}という名前の実行可能ファイルが存在するかどうかを確認します。{expr}は、引数を含まないプログラムの名前である必要があります。
executable()は、$PATHの値やプログラムの通常の検索パスを使用します。PATHEXT
MS-Windowsでは、".exe"、".bat"などをオプションで含めることができます。その後、$PATHEXTの拡張子が試行されます。したがって、「foo.exe」が存在しない場合、「foo.exe.bat」が見つかる可能性があります。$PATHEXTが設定されていない場合は、".com;.exe;.bat;.cmd"が使用されます。$PATHEXTでは、拡張子なしの名前を試すために、単独のドットを使用できます。'shell'がUnixシェルのように見える場合、拡張子を付けずに名前も試行されます。MS-Windowsでは、ファイルが存在し、ディレクトリでないかどうかのみチェックし、実際に実行可能かどうかはチェックしません。MS-Windowsでは、Vim実行可能ファイルと同じディレクトリにある実行可能ファイルは常に検出されます(起動時に$PATHに追加されます)。NoDefaultCurrentDirectoryInExePath
MS-Windowsでは、Vimの現在の作業ディレクトリにある実行可能ファイルも通常は検出されますが、$NoDefaultCurrentDirectoryInExePath環境変数を設定することで無効にすることができます。
結果は数値です。1は存在、0は存在しません。exepath()を使用して、実行可能ファイルのフルパスを取得できます。
パラメータ
{expr} (string)
戻り値
(0|1)
execute({command} [, {silent}]) execute()
{command}を実行し、その出力を取得します。{command}文字列の場合、{command}の出力を返します。{command}リストの場合、連結された出力を返します。{command}の行継続は認識されません。例:
echo execute('echon "foo"')
foo
echo execute(['echon "foo"', 'echon "bar"'])
foobar
オプションの{silent}引数は、次の値を取ることができます:" "(:silentを使用しない)"silent"(:silentを使用)"silent!"(:silent!を使用)デフォルトは"silent"です。"silent!"では、:redirとは異なり、エラーメッセージは削除されます。
行のリストを取得するには、結果に対してsplit()を使用します。
execute('args')->split("\n")
この関数はサンドボックスでは使用できません。**注:** ネストされている場合、外側のexecute()は内側の呼び出しの出力を観測しません。**注:** テキスト属性(ハイライト)は取得されません。現在のウィンドウ以外のウィンドウでコマンドを実行するには、win_execute()を使用します。
パラメータ
{command} (string|string[])
{silent} (''|'silent'|'silent!'?)
戻り値
(文字列)
exepath({expr}) exepath()
{expr}が実行可能ファイルであり、(部分的または完全な)パスとして与えられているか、$PATHで見つかった場合、そのフルパスを返します。それ以外の場合は空文字列を返します。{expr}が"./”で始まる場合、カレントディレクトリが使用されます。
パラメータ
{expr} (string)
戻り値
(文字列)
exists({expr}) exists()
結果は数値であり、{expr}が定義されている場合はTRUE、それ以外の場合は0です。
サポートされている機能を確認するには、has()を使用します。ファイルが存在するかどうかを確認するには、filereadable()を使用します。
{expr}引数は、次のいずれかを含む文字列です。varname 内部変数(dict.key 内部変数を参照)。波括弧名辞書のエントリ、リストのアイテムなど、list[i]にも機能します。インデックスの評価によって、無効な式に対するエラーメッセージが発生する可能性があることに注意してください。例:
let l = [1, 2, 3]
echo exists("l[5]")
0
echo exists("l[xx]")
E121: Undefined variable: xx 0 &option-name Vimオプション(存在するかどうかのみチェックし、実際に機能するかどうかはチェックしません)+option-name 動作するVimオプション。$ENVNAME 環境変数(空文字列と比較することによっても行うことができます)*funcname 組み込み関数(関数を参照)またはユーザー定義関数(ユーザー関数を参照)。Funcrefである変数にも機能します。:cmdname Exコマンド:組み込みコマンド、ユーザーコマンド、またはコマンド修飾子:command。戻り値:コマンドの先頭と一致する場合1、コマンドと完全に一致する場合2、複数のユーザーコマンドと一致する場合3。サポートされているコマンドを確認するには、戻り値が2であることを常に確認してください。:2match :2matchコマンド。:3match :3matchコマンド(ただし、おそらく使用すべきではありません。内部使用のために予約されています)#event このイベントに対して定義されたautocommand #event#pattern このイベントとパターンに対して定義されたautocommand(パターンは文字通り取得され、autocommandのパターンと文字ごとに比較されます)#group 存在するautocommandグループ #group#event このグループとイベントに対して定義されたautocommand。 #group#event#pattern このグループ、イベント、パターンに対して定義されたautocommand。 ##event このイベントのautocommandがサポートされています。
echo exists("&mouse")
echo exists("$HOSTNAME")
echo exists("*strftime")
echo exists("*s:MyFunc")
echo exists("*MyFunc")
echo exists("*v:lua.Func")
echo exists("bufcount")
echo exists(":Make")
echo exists("#CursorHold")
echo exists("#BufReadPre#*.gz")
echo exists("#filetypeindent")
echo exists("#filetypeindent#FileType")
echo exists("#filetypeindent#FileType#*")
echo exists("##ColorScheme")
記号(&/$/*/#)と名前の間にスペースがあってはいけません。名前の後に余分な文字があってはいけません。ただし、一部のケースではこれは無視されます。将来的にはより厳しくなる可能性があるため、それに頼らないでください!動作する例:
echo exists(":make")
動作しない例:
echo exists(":make install")
引数は文字列でなければならないことに注意してください。変数名自体ではありません。例:
echo exists(bufcount)
これは"bufcount"変数の存在をチェックするのではなく、"bufcount"の値を取得し、それが存在するかどうかをチェックします。
パラメータ
{expr} (string)
戻り値
(0|1)
exp({expr}) exp()
[0, inf]の範囲内の浮動小数点数として、{expr}の指数関数を返します。{expr}浮動小数点数または数値として評価される必要があります。{expr}浮動小数点数または数値でない場合は0.0を返します。例:
echo exp(2)
7.389056
echo exp(-1)
0.367879
パラメータ
{expr} (number)
戻り値
(any)
expand({string} [, {nosuf} [, {list}]]) expand()
{string}内のワイルドカードと次の特別なキーワードを展開します。'wildignorecase'が適用されます。
{list}が指定され、TRUEの場合、リストが返されます。それ以外の場合は結果は文字列であり、複数のマッチがある場合、<NL>文字で区切られます。
展開に失敗した場合、結果は空文字列です。存在しないファイルの名前は、{string}が'%'、'#'、または'<'で始まっていない限り含まれません(下記参照)。
{string}が'%'、'#'、または'<'で始まる場合、コマンドライン特殊変数とその関連する修飾子と同様に展開が行われます。簡単な概要を以下に示します。
% カレントファイル名 # 別ファイル名 #n 別ファイル名n <cfile> カーソル下のファイル名 <afile> autocmdファイル名 <abuf> autocmdバッファ番号(文字列として!) <amatch> autocmd一致名 <cexpr> カーソル下のC式 <sfile> ソースされたスクリプトファイルまたは関数名 <slnum> ソースされたスクリプトの行番号または関数の行番号 <sflnum> スクリプトファイルの行番号(関数内にある場合も同様) <SID> "123"が現在のスクリプトIDである"<SNR>123_" <SID> <script> ソースされたスクリプトファイル、または現在の関数が定義されているスクリプトファイル <stack> コールスタック <cword> カーソル下の単語 <cWORD> カーソル下のWORD <client> 最後に受信したメッセージの{clientid} 修飾子::p フルパスに展開 :h ヘッダー(最後のパスコンポーネントが削除される) :t テール(最後のパスコンポーネントのみ) :r ルート(拡張子が1つ削除される) :e 拡張子のみ
let &tags = expand("%:p:h") .. "/tags"
'%'、'#'、または'<'で始まる文字列を展開する場合、それに続くテキストは無視されます。これは機能しません。
let doesntwork = expand("%:h.bak")
これを使用してください。
let doeswork = expand("%:h") .. ".bak"
また、"<cfile>"などを展開しても、さらに展開せずに参照されたファイル名のみが返されることに注意してください。"<cfile>"が"~/.cshrc"の場合、ホームディレクトリのパスに"~/"を展開するには、別のexpand()を実行する必要があります。
echo expand(expand("<cfile>"))
変数とその後の修飾子の間に空白があってはいけません。fnamemodify()関数は、通常のファイル名を変更するために使用できます。
'%'または'#'を使用する場合、カレントファイル名または別ファイル名が定義されていない場合、空文字列が使用されます。名前のないバッファで"%:p"を使用すると、'/'が追加された現在のディレクトリになります。'verbose'が設定されている場合、引数を展開できない場合、'%'、'#'、および<>アイテムの展開はエラーメッセージになります。
{string}が'%'、'#'、または'<'で始まっていない場合、コマンドラインでファイル名が展開されるように展開されます。'suffixes''wildignore'が使用されます(オプションの{nosuf}引数が指定され、TRUEでない限り)。存在しないファイルの名前は含まれます。"**"アイテムを使用して、ディレクトリツリー内を検索できます。たとえば、現在のディレクトリとその下にあるすべての"README"ファイルを見つけるには、次のようになります。
echo expand("**/README")
expand()は、シェルでのみ認識される変数や環境変数を展開するためにも使用できます。ただし、シェルを使用して展開を行う必要があるため、遅くなる可能性があります。expr-env-expandを参照してください。展開された変数は、ファイル名のリストとして引き続き処理されます。環境変数を展開できない場合、変更されません。したがって、":echo expand('$FOOBAR')"は"$FOOBAR"になります。
既存のファイルを見つけるにはglob()を参照してください。外部コマンドの生の出力を取得するにはsystem()を参照してください。
パラメータ
{string} (string)
{nosuf} (boolean?)
{list} (nil|false?)
戻り値
(文字列)
expandcmd({string} [, {options}]) expandcmd()
:editなどのExコマンドに対して行われるように、文字列{string}内の特別な項目を展開します。expand()と同様に、特別なキーワードと環境変数を{string}のどこでも展開します。"~user"と"~/path"は先頭でのみ展開されます。
{options} Dict引数では、次の項目がサポートされています。errmsg 展開中にエラーが発生した場合、TRUEに設定するとエラーメッセージが表示されます。デフォルトでは、エラーメッセージは表示されません。
展開された文字列を返します。展開中にエラーが発生した場合、変更されていない{string}が返されます。
echo expandcmd('make %<.o')
make /path/runtime/doc/builtin.o
echo expandcmd('make %<.o', {'errmsg': v:true})
パラメータ
{string} (string)
{options} (table?)
戻り値
(any)
extend({expr1}, {expr2} [, {expr3}]) extend()
{expr1}{expr2}は両方ともリストであるか、両方とも辞書である必要があります。
両方がリストの場合:{expr2}{expr1}に追加します。{expr3}が指定されている場合、{expr2}の要素を{expr1}のインデックス{expr3}の要素の前に挿入します。{expr3}が0の場合、最初の要素の前に挿入されます。{expr3}がlen({expr1})と等しい場合、{expr2}は追加されます。例
echo sort(extend(mylist, [7, 5]))
call extend(mylist, [2, 3], 1)
{expr1}{expr2}が同じリストの場合、コピーされる要素の数はリストの元の長さと同じになります。例えば、{expr3}が1の場合、最初の要素の新しいコピーがN個作成されます(ここでNはリストの元の長さです)。リストに1つの要素を連結するにはadd()を使用します。2つのリストを新しいリストに連結するには、+演算子を使用します。
let newlist = [1, 2, 3] + [4, 5]
両方が辞書の場合:{expr2}のすべてのエントリを{expr1}に追加します。{expr1}{expr2}の両方に同じキーが存在する場合、{expr3}を使用して処理方法を決定します:{expr3} = "keep":{expr1}の値を保持します {expr3} = "force":{expr2}の値を使用します {expr3} = "error":エラーメッセージを表示します E737
{expr3}が省略された場合、「force」が想定されます。
{expr2}が空でない場合、{expr1}が変更されます。必要に応じて、最初に{expr1}のコピーを作成してください。{expr2}は変更されません。{expr1}がロックされていて{expr2}が空でない場合、操作は失敗します。{expr1}を返します。エラーの場合は0を返します。
パラメータ
{expr1}table
{expr2}table
{expr3}table?
戻り値
(any)
extendnew({expr1}, {expr2} [, {expr3}]) extendnew()
extend()と同様ですが、{expr1}に要素を追加する代わりに、新しいリストまたは辞書が作成されて返されます。{expr1}は変更されません。
パラメータ
{expr1}table
{expr2}table
{expr3}table?
戻り値
(any)
feedkeys({string} [, {mode}]) feedkeys()
{string}の文字は、マッピングから来たか、ユーザーによって入力されたかのように、処理のためにキューに入れられます。
デフォルトでは、文字列はタイプヘッドバッファの最後に追加されます。そのため、マッピングがまだ実行されている場合、文字はその後に続きます。他の文字の前に挿入するには「i」フラグを使用します。これらは、マッピングからの文字の前に実行されます。
この関数は、{string}に含まれるキーの処理を待機しません。
{string}に特殊キーを含めるには、二重引用符と「\...」表記を使用しますexpr-quote。たとえば、feedkeys("\<CR>")は<Enter>キーを押したことをシミュレートします。しかし、feedkeys('\<CR>')は5文字をプッシュします。<Ignore>キーコードを使用して、何もせずに文字待ちを終了できます。
{mode}は文字列であり、次の文字フラグを含めることができます:'m' キーのリマップ。これはデフォルトです。{mode}がない場合、キーはリマップされます。'n' キーをリマップしません。't' キーをタイプされたものとして処理します。それ以外の場合は、マッピングから来たものとして処理されます。これは、元に戻す、折り畳みを展開するなどにおいて重要です。'L' 低レベル入力。他のフラグは使用されません。'i' 文字列を追加する代わりに挿入します(上記参照)。'x' タイプヘッドが空になるまでコマンドを実行します。これは「:normal!」を使用するのと似ています。「x」なしでfeedkeys()を複数回呼び出し、次に「x」付きで1回(空の{string}の場合もあり)呼び出すことで、すべてのタイプヘッドを実行できます。Vimが挿入モードで終了すると、スタックを避けるために<Esc>が入力されたかのように動作します。スクリプトが続行する前に文字が入力されるのを待つことなく。コマンドの実行中にfeedkeys()を呼び出す(つまり、再帰的に呼び出す)ことに成功した場合、すべてのタイプヘッドは最後の呼び出しによって消費されることに注意してください。'!' 'x'と一緒に使用すると、挿入モードを終了しません。タイマーが少し後に挿入モードを終了するように設定されているテストで使用できます。CursorHoldIのテストに役立ちます。
戻り値は常に0です。
パラメータ
{string} (string)
{mode}string?
戻り値
(any)
filecopy({from}, {to}) filecopy()
{from}で示されるファイル名を{to}にコピーします。結果は数値であり、ファイルが正常にコピーされた場合はTRUE、失敗した場合はFALSEになります。{to}という名前のファイルが既に存在する場合は失敗します。ディレクトリはまだ処理しません。
この関数はサンドボックスでは使用できません。
パラメータ
{from}string
{to}string
戻り値
(0|1)
filereadable({file}) filereadable()
結果は数値であり、{file}という名前のファイルが存在し、読み取り可能な場合はTRUEになります。{file}が存在しない場合、またはディレクトリである場合、結果はFALSEになります。{file}は文字列として使用される任意の式です。ファイルの読み取り可能性を気にしない場合は、glob()を使用できます。{file}はそのまま使用されます。最初にワイルドカードを展開する必要があるかもしれません。
echo filereadable('~/.vimrc')
0
echo filereadable(expand('~/.vimrc'))
1
パラメータ
{file}string
戻り値
(0|1)
filewritable({file}) filewritable()
結果は数値であり、{file}という名前のファイルが存在し、書き込み可能な場合は1になります。{file}が存在しない場合、または書き込み不可能な場合、結果は0になります。{file}がディレクトリであり、書き込み可能な場合、結果は2になります。
パラメータ
{file}string
戻り値
(0|1)
filter({expr1}, {expr2}) filter()
{expr1}リスト文字列BLOB、または辞書である必要があります。{expr1}の各要素に対して{expr2}を評価し、結果が0またはfalseの場合、リストまたは辞書から要素を削除します。BLOBの各バイトと文字列の各文字についても同様です。
{expr2}文字列または関数参照である必要があります。
{expr2}文字列の場合、{expr2}内ではv:valに現在の要素の値が入ります。辞書の場合、v:keyに現在の要素のキーが入ります。リストの場合、v:keyに現在の要素のインデックスが入ります。BLOBの場合、v:keyに現在のバイトのインデックスが入ります。文字列の場合、v:keyに現在の文字のインデックスが入ります。例
call filter(mylist, 'v:val !~ "OLD"')
"OLD"が現れる要素を削除します。
call filter(mydict, 'v:key >= 8')
キーが8未満の要素を削除します。
call filter(var, 0)
すべての要素を削除します。これにより、リストまたは辞書がクリアされます。
{expr2}は式の結果であり、その後再び式として使用されることに注意してください。バックスラッシュを二重にする必要がないように、多くの場合リテラル文字列を使用する方が良いでしょう。
{expr2}関数参照の場合、2つの引数を取る必要があります。1. 現在の要素のキーまたはインデックス。2. 現在の要素の値。関数は、要素を保持する必要がある場合はTRUEを返す必要があります。リストの奇数の要素を保持する例
func Odd(idx, val)
  return a:idx % 2 == 1
endfunc
call filter(mylist, function('Odd'))
ラムダ式を使用する方が短くなります。
call filter(myList, {idx, val -> idx * val <= 42})
"val"を使用しない場合は、省略できます。
call filter(myList, {idx -> idx % 2 == 1})
リスト辞書の場合、操作はインプレースで行われます。変更されないようにしたい場合は、最初にコピーを作成してください。
let l = filter(copy(mylist), 'v:val =~ "KEEP"')
フィルタリングされたリストまたは辞書である{expr1}、または新しいBLOBまたは文字列を返します。{expr2}の評価中にエラーが発生した場合、{expr1}のそれ以降の要素は処理されません。{expr2}が関数参照の場合、関数の内部エラーは無視されます。"abort"フラグで定義されていない限り。
パラメータ
{expr1}string|table
{expr2}string|function
戻り値
(any)
finddir({name} [, {path} [, {count}]]) finddir()
{path}でディレクトリ{name}を検索します。下方向と上方向の両方の再帰的なディレクトリ検索をサポートします。{path}の構文についてはファイルの検索を参照してください。
最初に検出された一致のパスの文字列を返します。検出されたディレクトリが現在のディレクトリの下にある場合、相対パスが返されます。それ以外の場合は、フルパスが返されます。{path}が省略されているか空の場合、'path'が使用されます。
オプションの{count}が指定されている場合、最初のものではなく、{path}{name}{count}番目の出現箇所を検索します。{count}が負の場合、すべてのマッチをリストで返します。
ディレクトリが見つからない場合は、空の文字列を返します。
これはexコマンド:findと非常によく似ています。
パラメータ
{name} (文字列)
{path}string?
{count}integer?
戻り値
(any)
findfile({name} [, {path} [, {count}]]) findfile()
finddir()と同様ですが、ディレクトリではなくファイルを検索します。'suffixesadd'を使用します。例
echo findfile("tags.vim", ".;")
現在のファイルのディレクトリから上方向に検索し、「tags.vim」というファイルを見つけます。
パラメータ
{name} (文字列)
{path}string?
{count}any?
戻り値
(any)
flatten({list} [, {maxdepth}]) flatten()
{list}{maxdepth}レベルまでフラット化します。{maxdepth}がない場合、結果は入れ子が無いリストになります。まるで{maxdepth}が非常に大きな数であるかのように。{list}はインプレースで変更されます。変更したくない場合はflattennew()を使用してください。E900
{maxdepth}は、入れ子のリスト内で変更が行われる深さを意味します。{maxdepth}が0の場合、{list}は変更されません。{maxdepth}は正の数である必要があります。
エラーが発生した場合は、数値0が返されます。
echo flatten([1, [2, [3, 4]], 5])
[1, 2, 3, 4, 5]
echo flatten([1, [2, [3, 4]], 5], 1)
[1, 2, [3, 4], 5]
パラメータ
{list}any[]
{maxdepth}integer?
戻り値
any[]|0
flattennew({list} [, {maxdepth}]) flattennew()
flatten()と同様ですが、最初に{list}のコピーを作成します。
パラメータ
{list}any[]
{maxdepth}integer?
戻り値
any[]|0
float2nr({expr}) float2nr()
小数点以下の部分を省略することで、{expr}を数値に変換します。{expr}浮動小数点数または数値として評価する必要があります。{expr}浮動小数点数または数値でない場合は0を返します。{expr}の値が数値の範囲外の場合、結果は0x7fffffffまたは-0x7fffffffに切り捨てられます(または64ビット数値サポートが有効になっている場合は、0x7fffffffffffffffまたは-0x7fffffffffffffff)。NaNは-0x80000000になります(または64ビット数値サポートが有効になっている場合は、-0x8000000000000000)。例
echo float2nr(3.95)
3
echo float2nr(-23.45)
-23
echo float2nr(1.0e100)
2147483647(または9223372036854775807)
echo float2nr(-1.0e150)
-2147483647(または-9223372036854775807)
echo float2nr(1.0e-100)
0
パラメータ
{expr} (number)
戻り値
(any)
floor({expr}) floor()
浮動小数点数として、{expr}以下の最大の整数値を返します(切り捨て)。{expr}浮動小数点数または数値として評価する必要があります。{expr}浮動小数点数または数値でない場合は0.0を返します。例
echo floor(1.856)
1.0
echo floor(-5.456)
-6.0
echo floor(4.0)
4.0
パラメータ
{expr} (number)
戻り値
(any)
fmod({expr1}, {expr2}) fmod()
{expr1} / {expr2} の剰余を返します。除算が表現できない場合でも、剰余を返します。ある整数 i について {expr1} - i * {expr2} を返します。{expr2} がゼロでない場合、結果は{expr1}と同じ符号を持ち、{expr2}の絶対値より小さくなります。{expr2}がゼロの場合、返される値はゼロです。返される値はFloat型です。{expr1}{expr2}Float型またはNumber型でなければなりません。Float型またはNumber型でない場合、0.0を返します。例
echo fmod(12.33, 1.22)
0.13
echo fmod(-12.33, 1.22)
-0.13
パラメータ
{expr1} (number)
{expr2} (数値)
戻り値
(any)
fnameescape({string}) fnameescape()
ファイル名コマンド引数として使用するように{string}をエスケープします。'%''|'など、特別な意味を持つ文字はバックスラッシュでエスケープされます。ほとんどのシステムでは、エスケープされる文字は " \t\n*?[{`$\\%#'\"|!<".}です。バックスラッシュがファイル名に含まれるシステムでは、'isfname'の値によって異なります。先頭の'+'と'>'もエスケープされます(:edit:writeの後に続く特殊文字)。そして、単独の'-'もエスケープされます(:cdの後に続く特殊文字)。エラーが発生した場合は空文字列を返します。例
let fname = '+some str%nge|name'
exe "edit " .. fnameescape(fname)
実行結果は
edit \+some\ str\%nge\|name
パラメータ
{string} (string)
戻り値
(文字列)
fnamemodify({fname}, {mods}) fnamemodify()
{mods}に従ってファイル名{fname}を変更します。{mods}は、コマンドラインでファイル名に使用されるものと同様の文字列です。filename-modifiersを参照してください。例
echo fnamemodify("main.c", ":p:h")
結果は次のようになります。
/home/user/vim/vim/src
{mods}が空であるか、サポートされていない修飾子が使用されている場合、{fname}が返されます。{fname}が空の場合、{mods}が":h"の場合、"."が返されます。これにより、:cdで使用できます。これは、バッファ名がない場合のexpand('%:h')とは異なり、空文字列を返します。**注:** 環境変数は{fname}では機能しません。expand()を最初に使用してください。
パラメータ
{fname} (string)
{mods} (文字列)
戻り値
(文字列)
foldclosed({lnum}) foldclosed()
結果はNumber型です。行{lnum}が閉じられた折りたたみ内にある場合、その折りたたみの最初の行の行番号が結果として返されます。行{lnum}が閉じられた折りたたみ内になければ、-1が返されます。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。
パラメータ
{lnum} (integer)
戻り値
(integer)
foldclosedend({lnum}) foldclosedend()
結果はNumber型です。行{lnum}が閉じられた折りたたみ内にある場合、その折りたたみの最後の行の行番号が結果として返されます。行{lnum}が閉じられた折りたたみ内になければ、-1が返されます。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。
パラメータ
{lnum} (integer)
戻り値
(integer)
foldlevel({lnum}) foldlevel()
結果はNumber型で、現在のバッファにおける行{lnum}の折りたたみレベルを表します。入れ子になった折りたたみの場合、最も深いレベルが返されます。行{lnum}に折りたたみがない場合は、ゼロが返されます。折りたたみが開いているか閉じているかは関係ありません。'foldexpr'から折りたたみ更新中(更新中)に使用する場合、折りたたみはまだ更新されておらず、折りたたみレベルが不明な行に対しては-1が返されます。特別なケースとして、前の行のレベルは通常利用可能です。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。
パラメータ
{lnum} (integer)
戻り値
(integer)
foldtext() foldtext()
閉じられた折りたたみに対して表示される文字列を返します。これは'foldtext'オプションで使用されるデフォルトの関数であり、'foldtext'の評価からのみ呼び出されるべきです。v:foldstartv:foldendv:folddashes変数を使用します。返される文字列は次のようになります。
+-- 45 lines: abcdef
先頭のダッシュの数は折りたたみレベルによって異なります。"45"は折りたたみ内の行数です。"abcdef"は折りたたみの最初の空白でない行のテキストです。先頭の空白、"//"または"/*"、および'foldmarker''commentstring'オプションのテキストは削除されます。実際のfoldtextを描画するために使用する場合、行の残りの部分は'fillchars'設定の折りたたみ文字で埋められます。折りたたみがない場合は空文字列を返します。
戻り値
(文字列)
foldtextresult({lnum}) foldtextresult()
{lnum}にある閉じられた折りたたみに対して表示されるテキストを返します。適切なコンテキストで'foldtext'を評価します。{lnum}に閉じられた折りたたみがない場合は、空文字列が返されます。{lnum}getline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。折り畳まれたテキスト(例:HTML)をエクスポートする場合に便利です。
パラメータ
{lnum} (integer)
戻り値
(文字列)
foreach({expr1}, {expr2}) foreach()
{expr1}ListStringBlob、またはDictionaryでなければなりません。{expr1}の各項目に対して、{expr2}を実行します。{expr1}は変更されません。ただし、:lockvar 1のように、その値は変更される可能性があります。E741 {expr1}を変更するには、map()filter()を参照してください。
{expr2}文字列または関数参照である必要があります。
{expr2}文字列の場合、{expr2}内ではv:valに現在の要素の値が入ります。辞書の場合、v:keyに現在の要素のキーが入ります。リストの場合、v:keyに現在の要素のインデックスが入ります。BLOBの場合、v:keyに現在のバイトのインデックスが入ります。文字列の場合、v:keyに現在の文字のインデックスが入ります。例
call foreach(mylist, 'let used[v:val] = v:true')
これは、{expr1}リストにある項目を記録します。
{expr2}は式の結果であり、コマンドとして使用されることに注意してください。バックスラッシュを二重にする必要がないように、リテラル文字列を使用するのが良い場合が多いです。
{expr2}Funcrefの場合、2つの引数をとる必要があります。1.現在の項目のキーまたはインデックス。2.現在の項目の値。ラムダ式を使用すると、1つの引数しか受け付けなくてもエラーになりません。関数が値を返す場合、その値は無視されます。
すべてのケースで{expr1}を返します。{expr2}の実行中にエラーが発生した場合、{expr1}のそれ以降の項目は処理されません。{expr2}がFuncrefの場合、"abort"フラグで定義されていない限り、関数内のエラーは無視されます。
パラメータ
{expr1}string|table
{expr2}string|function
戻り値
(any)
fullcommand({name}) fullcommand()
短い略語コマンド名から完全なコマンド名を取得します。コマンドの略語の詳細については20.2を参照してください。
文字列引数{name}:で始まり、[範囲]を含めることができます。これらはスキップされ、返されません。コマンドが存在しない場合、または曖昧な場合(ユーザー定義コマンドの場合)、空文字列を返します。
たとえば、fullcommand('s')fullcommand('sub')fullcommand(':%substitute')はすべて"substitute"を返します。
パラメータ
{name} (文字列)
戻り値
(文字列)
funcref({name} [, {arglist}] [, {dict}]) funcref()
function()と同様ですが、返されるFuncrefは名前ではなく参照によって関数を検索します。これは、関数{name}が後で再定義される場合に重要になります。
function()とは異なり、{name}は既存のユーザー関数でなければなりません。既にロードされている場合にのみ、自動ロード関数に対して機能します(関数名だけを使用する意図があるのに誤って自動ロードスクリプトをロードしてしまうのを避けるには、代わりにfunction()を使用してください)。{name}は組み込み関数にはできません。エラーの場合は0を返します。
パラメータ
{name} (文字列)
{arglist} (任意?)
{dict} (any?)
戻り値
(any)
function({name} [, {arglist}] [, {dict}]) function() partial E700 E923 関数{name}を参照するFuncref変数を返します。{name}は、ユーザー定義関数または内部関数の名前にすることができます。
{name}はFuncrefまたはpartialにすることもできます。partialの場合、そこに格納されているdictが使用され、{dict}引数は許可されません。例:
let FuncWithArg = function(dict.Func, [arg])
let Broken = function(dict.Func, [arg], dict)
Funcrefを使用すると、後で再定義された場合でも、関数{name}によって関数が検出されます。同じ関数を維持するにはfuncref()を使用してください。
{arglist}または{dict}が存在する場合、partialが作成されます。つまり、引数リストと/または辞書はFuncrefに格納され、Funcrefが呼び出されるときに使用されます。
引数は、他の引数の前に、methodからの引数の後、関数に渡されます。例
func Callback(arg1, arg2, name)
"...
endfunc
let Partial = function('Callback', ['one', 'two'])
"...
call Partial('name')
次のように関数を呼び出します。
call Callback('one', 'two', 'name')
methodを使用する場合
func Callback(one, two, three)
"...
endfunc
let Partial = function('Callback', ['two'])
"...
eval 'one'->Partial('three')
次のように関数を呼び出します。
call Callback('one', 'two', 'three')
function()呼び出しは、Funcrefにさらに引数を追加するためにネストできます。追加の引数は引数のリストに追加されます。例
func Callback(arg1, arg2, name)
"...
endfunc
let Func = function('Callback', ['one'])
let Func2 = function(Func, ['two'])
"...
call Func2('name')
次のように関数を呼び出します。
call Callback('one', 'two', 'name')
辞書は、「dict」関数を呼び出す場合にのみ役立ちます。その場合、{dict}は「self」として渡されます。例
function Callback() dict
   echo "called for " .. self.name
endfunction
"...
let context = {"name": "example"}
let Func = function('Callback', context)
"...
call Func()        " will echo: called for example
追加の引数がない場合は、function()の使用は必要ありません。Callback()がcontext.Callback()として定義されている場合、これら2つは同等です。
let Func = function('Callback', context)
let Func = context.Callback
引数リストと辞書を組み合わせることができます。
function Callback(arg1, count) dict
"...
endfunction
let context = {"name": "example"}
let Func = function('Callback', ['one'], context)
"...
call Func(500)
次のように関数を呼び出します。
call context.Callback('one', 500)
エラーの場合は0を返します。
パラメータ
{name} (文字列)
{arglist} (任意?)
{dict} (any?)
戻り値
(any)
garbagecollect([{atexit}]) garbagecollect()
循環参照を持つ使用されていないListsDictionariesをクリーンアップします。
Vimがメモリ不足になった場合、または'updatetime'の後にユーザーがキーを押すのを待っている場合に自動的に実行されるため、この関数を呼び出す必要はほとんどありません。循環参照のない項目は、使用されなくなると常に解放されます。これは、長時間実行されるスクリプトで、循環参照を持つ非常に大きなListと/またはDictionaryを削除した場合に役立ちます。
オプションの{atexit}引数が1の場合、以前に行われていない場合、Vimを終了するときにもガベージコレクションが行われます。これは、メモリリークをチェックする場合に役立ちます。
ガベージコレクションはすぐに実行されるのではなく、安全に実行できる場合にのみ実行されます。これは、ユーザーが文字を入力するのを待っているときです。
パラメータ
{atexit} (ブール値?)
戻り値
(any)
get({list}, {idx} [, {default}]) get() get()-list リスト{list}からアイテム{idx}を取得します。このアイテムが存在しない場合は、{default}を返します。{default}が省略された場合は0を返します。
パラメータ
{list}any[]
{idx} (integer)
{default} (any?)
戻り値
(any)
get({blob}, {idx} [, {default}]) get()-blob
Blob{blob}からバイト{idx}を取得します。このバイトが存在しない場合は、{default}を返します。{default}が省略された場合は-1を返します。
パラメータ
{blob} (string)
{idx} (integer)
{default} (any?)
戻り値
(any)
get({dict}, {key} [, {default}]) get()-dict
辞書{dict}からキー{key}を持つアイテムを取得します。このアイテムが存在しない場合は、{default}を返します。{default}が省略された場合は0を返します。便利な例
let val = get(g:, 'var_name', 'default')
これは、g:var_nameが存在する場合はその値を取得し、存在しない場合は"default"を使用します。
パラメータ
{dict} (table<string,any>)
{key} (string)
{default} (any?)
戻り値
(any)
get({func}, {what}) get()-func
関数参照{func}からアイテム{what}を取得します。{what}の可能な値は次のとおりです。「name」 関数名 「func」 関数 「dict」 辞書 「args」 引数のリスト 「arity」 関数が受け付ける引数の数({arglist}を除く)に関する情報を含む辞書。次のフィールドがあります。required 位置引数の数 optional 必須引数に加えてオプション引数の数 varargs 関数が可変数の引数を受け付ける場合TRUE...
注記: Funcrefの{arglist}にFuncrefが期待するよりも多くの引数が含まれていても、エラーは発生しません。検証されません。
エラー時には0を返します。
パラメータ
{func} (function)
{what} (string)
戻り値
(any)
getbufinfo([{buf}]) getbufinfo()
getbufinfo([{dict}]) バッファに関する情報を辞書のリストとして取得します。
引数が指定されていない場合、すべてのバッファに関する情報が返されます。
引数がDictionaryの場合、指定された基準に一致するバッファのみが返されます。{dict}には、次のキーを指定できます。buflisted リストされているバッファのみを含める。bufloaded ロードされているバッファのみを含める。bufmodified 変更されているバッファのみを含める。
それ以外の場合、{buf}は、情報が返される特定のバッファを指定します。{buf}の使用方法については、上記bufname()を参照してください。バッファが見つかった場合、返されるリストには1つのアイテムが含まれます。それ以外の場合は、空のリストが返されます。
返される各リストアイテムは、次のエントリを持つ辞書です。bufnr バッファ番号。changed バッファが変更されている場合TRUE。changedtick バッファに加えられた変更回数。command バッファがコマンドラインウィンドウcmdwinに属する場合TRUE。hidden バッファが非表示の場合TRUE。lastused localtime()のように、秒単位のタイムスタンプ。バッファが最後に使用された時刻。listed バッファがリストされている場合TRUE。lnum 現在のウィンドウで開かれたときのバッファに使用される行番号。過去にウィンドウにバッファが表示されている場合にのみ有効です。特定のウィンドウでの最後の既知のカーソル位置の行番号が必要な場合は、line()を使用してください。
echo line('.', {winid})
linecount バッファ内の行数(ロードされている場合のみ有効)。loaded バッファがロードされている場合TRUE。name バッファ内のファイルへのフルパス。signs バッファに配置されたサインのリスト。各リストアイテムは、次のフィールドを持つ辞書です。id サイン識別子 lnum 行番号 name サイン名 variables バッファローカル変数を含む辞書への参照。windows このバッファを表示するwindow-IDのリスト
for buf in getbufinfo()
    echo buf.name
endfor
for buf in getbufinfo({'buflisted':1})
    if buf.changed
        " ....
    endif
endfor
バッファローカルオプションを取得するには
getbufvar({bufnr}, '&option_name')
パラメータ
{dict} (vim.fn.getbufinfo.dict?)
戻り値
(vim.fn.getbufinfo.ret.item[])
getbufline({buf}, {lnum} [, {end}]) getbufline()
バッファ{buf}内の{lnum}から{end}(含む)までの行を含むListを返します。{end}が省略された場合、行{lnum}のみを含むListが返されます。行のみを取得するには、getbufoneline()を参照してください。
{buf}の使用方法については、上記のbufname()を参照してください。
{lnum}{end}には、バッファの最終行を表す"$"を使用できます。それ以外の場合は、数値を使用する必要があります。
{lnum}が1より小さいか、バッファ内の行数より大きい場合、空のListが返されます。
{end}がバッファ内の行数より大きい場合、{end}はバッファ内の行数に設定されたものとして扱われます。{end}{lnum}より前の場合、空のListが返されます。
この関数は、ロード済みのバッファでのみ機能します。アンロード済みおよび存在しないバッファの場合、空のListが返されます。
let lines = getbufline(bufnr("myfile"), 1, "$")
パラメータ
{buf} (integer|string)
{lnum} (integer)
{end_} (integer?)
戻り値
(any)
getbufoneline({buf}, {lnum}) getbufoneline()
getbufline()と同様ですが、1行のみを取得し、文字列として返します。
パラメータ
{buf} (integer|string)
{lnum} (integer)
戻り値
(文字列)
getbufvar({buf}, {varname} [, {def}]) getbufvar()
結果は、バッファ{buf}内のオプションまたはローカルバッファ変数{varname}の値です。"b:"なしの名前を使用する必要があることに注意してください。{varname}引数は文字列です。{varname}が空の場合、すべてのバッファローカル変数を含むDictionaryを返します。{varname}が"&"の場合、すべてのバッファローカルオプションを含むDictionaryを返します。それ以外の場合は、{varname}が"&"で始まる場合、バッファローカルオプションの値を返します。これはグローバルまたはバッファローカルオプションにも機能しますが、グローバル変数、ウィンドウローカル変数、またはウィンドウローカルオプションには機能しません。{buf}の使用方法については、上記bufname()を参照してください。バッファまたは変数が存在しない場合、{def}または空の文字列が返され、エラーメッセージは表示されません。例
        let bufmodified = getbufvar(1, "&mod")
        echo "todo myvar = " .. getbufvar("todo", "myvar")
Parameters: ~
  • {buf} (`integer|string`)
  • {varname} (`string`)
  • {def} (`any?`)
Return: ~
  (`any`)
getcellwidths() getcellwidths()
setcellwidths()によって上書きされた文字範囲のセル幅のListを返します。フォーマットはsetcellwidths()の引数と同じです。文字範囲のセル幅が上書きされていない場合、空のリストが返されます。
戻り値
(any)
getchangelist([{buf}]) getchangelist()
バッファ{buf}changelistを返します。{buf}の使用方法については、上記bufname()を参照してください。バッファ{buf}が存在しない場合、空のリストが返されます。
返されるリストには、変更箇所のリストとリスト内の現在の位置という2つのエントリが含まれています。変更リストの各エントリは、次のエントリを持つ辞書です。col 列番号 coladd 'virtualedit'の列オフセット lnum 行番号 バッファ{buf}が現在のバッファの場合、現在の位置はリスト内の位置を参照します。その他バッファの場合、リストの長さに設定されます。
パラメータ
{buf} (整数|文字列?)
戻り値
(table[])
getchar([{expr}]) getchar()
ユーザーまたは入力ストリームから1文字を取得します。{expr}が省略された場合、文字が利用可能になるまで待ちます。{expr}が0の場合、文字が利用可能な場合にのみ取得します。それ以外の場合は0を返します。{expr}が1の場合、文字が利用可能かどうかのみチェックし、消費しません。文字が利用できない場合は0を返します。常に文字列を取得したい場合はgetcharstr()を使用してください。
{expr}なしの場合、および{expr}が0の場合、完全な文字または特殊キーが返されます。単一の文字の場合、結果は数値です。文字列に変換するにはnr2char()を使用します。それ以外の場合は、エンコードされた文字を含む文字列が返されます。特殊キーの場合、0x80(10進数:128)で始まるバイトのシーケンスを含む文字列です。これは文字列"\<Key>"(例:"\<Left>")と同じ値です。修飾子(シフト、コントロール、alt)が文字に含まれていない場合も、返される値は文字列になります。
{expr}が0でEscが入力された場合、これがエスケープシーケンスの先頭かどうかを確認する間、短い遅延が発生します。
{expr}が1の場合、最初のバイトのみが返されます。1バイトの文字の場合、それは数値としての文字自体です。文字列に変換するにはnr2char()を使用します。
追加の修飾子を取得するにはgetcharmod()を使用します。
ユーザーがマウスボタンをクリックすると、マウスイベントが返されます。位置はv:mouse_colv:mouse_lnumv:mouse_winidv:mouse_winで見つけることができます。getmousepos()も使用できます。マウス移動イベントは無視されます。この例では、通常どおりにマウスを配置します。
let c = getchar()
if c == "\<LeftMouse>" && v:mouse_win > 0
  exe v:mouse_win .. "wincmd w"
  exe v:mouse_lnum
  exe "normal " .. v:mouse_col .. "|"
endif
プロンプトはありません。ユーザーに文字を入力する必要があることを何らかの方法で明確にする必要があります。画面は再描画されません(例:ウィンドウのサイズ変更時)。
文字のマッピングはありません。キーコードは置換されるため、ユーザーが<Del>キーを押すと、生の文字シーケンスではなく、<Del>キーのコードが取得されます。例
getchar() == "\<Del>"
getchar() == "\<S-Left>"
この例では、「f」を大文字と小文字を区別しないように再定義しています。
nmap f :call FindChar()<CR>
function FindChar()
  let c = nr2char(getchar())
  while col('.') < col('$') - 1
    normal l
    if getline('.')[col('.') - 1] ==? c
      break
    endif
  endwhile
endfunction
パラメータ
{expr} (0|1?)
戻り値
(integer)
getcharmod() getcharmod()
結果は、getchar()またはその他の方法で最後に取得された文字の修飾子の状態である数値です。これらの値は加算されます。2 シフト 4 コントロール 8 alt(メタ) 16 メタ(ALTと異なる場合) 32 マウスダブルクリック 64 マウストリプルクリック 96 マウスクアッドクリック(== 32 + 64) 128 コマンド(Mac)またはスーパー 文字自体に含まれていない修飾子のみが取得されます。したがって、Shift-aは修飾子なしで「A」になります。修飾子が使用されていない場合は0を返します。
戻り値
(integer)
getcharpos({expr}) getcharpos()
文字列{expr}の位置を取得します。getpos()と同じですが、返されるリストの列番号はバイトインデックスではなく文字インデックスです。getpos()v:maxcolに等しい非常に大きな列番号を返す場合、getcharpos()は最後の文字の文字インデックスを返します。
例:テキスト"여보세요"の5行目の'세'にカーソルがある場合
getcharpos('.')                returns [0, 5, 3, 0]
getpos('.')                returns [0, 5, 7, 0]
パラメータ
{expr} (string)
戻り値
(整数配列)
getcharsearch() getcharsearch()
現在の文字検索情報を、以下の項目を含む{辞書}として返します。
char 文字検索に使用された直前の文字(tfT、またはF)。文字検索が実行されていない場合は空文字列になります。forward 文字検索の方向。前方検索の場合は1、後方検索の場合は0。until 文字検索の種類。tまたはT文字検索の場合は1、fまたはF文字検索の場合は0。
これは、直前の文字検索の方向に関係なく、常に;,で前方/後方検索を行うのに役立ちます。
nnoremap <expr> ; getcharsearch().forward ? ';' : ','
nnoremap <expr> , getcharsearch().forward ? ',' : ';'
また、setcharsearch()も参照してください。
戻り値
(table)
getcharstr([{式}]) getcharstr()
ユーザーまたは入力ストリームから1文字を文字列として取得します。{式}が省略された場合は、文字が入力可能になるまで待ちます。{式}が0またはfalseの場合は、文字が入力可能な場合のみ取得します。それ以外の場合は空文字列を返します。{式}が1またはtrueの場合は、文字が入力可能かどうかのみチェックし、消費しません。文字が入力不可能な場合は空文字列を返します。それ以外の場合は、数値の結果が文字列に変換される点を除いて、getchar()と同様に機能します。
パラメータ
{expr} (0|1?)
戻り値
(文字列)
getcmdcomplpat() getcmdcomplpat()
現在のコマンドラインの補完パターンを返します。コマンドラインが編集されている場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=を使用する必要があります。また、getcmdtype()setcmdpos()getcmdline()getcmdprompt()getcmdcompltype()、およびsetcmdline()も参照してください。補完が定義されていない場合は空文字列を返します。
戻り値
(文字列)
getcmdcompltype() getcmdcompltype()
現在のコマンドライン補完の種類を返します。コマンドラインが編集されている場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=を使用する必要があります。:command-completionを参照して返される文字列を確認してください。また、getcmdtype()setcmdpos()getcmdline()getcmdprompt()getcmdcomplpat()、およびsetcmdline()も参照してください。補完が定義されていない場合は空文字列を返します。
戻り値
(文字列)
getcmdline() getcmdline()
現在のコマンドライン入力を返します。コマンドラインが編集されている場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=を使用する必要があります。例
cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
また、getcmdtype()getcmdpos()setcmdpos()getcmdprompt()、およびsetcmdline()も参照してください。パスワードを入力している場合、またはinputsecret()を使用している場合は、空文字列を返します。
戻り値
(文字列)
getcmdpos() getcmdpos()
コマンドライン内でのカーソルの位置をバイト数で返します。最初の列は1です。コマンドラインを編集している場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=、または式マッピングを使用する必要があります。それ以外の場合は0を返します。また、getcmdtype()setcmdpos()getcmdline()getcmdprompt()、およびsetcmdline()も参照してください。
戻り値
(integer)
getcmdprompt() getcmdprompt()
input()またはconfirm()などの関数を使用している場合の、現在のコマンドラインプロンプトを返します。コマンドラインが編集されている場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=を使用する必要があります。また、getcmdtype()getcmdline()getcmdpos()setcmdpos()、およびsetcmdline()も参照してください。
戻り値
(文字列)
getcmdscreenpos() getcmdscreenpos()
コマンドライン内でのカーソルの画面上の位置をバイト数で返します。最初の列は1です。getcmdpos()とは異なり、プロンプトの位置が追加されます。コマンドラインを編集している場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=、または式マッピングを使用する必要があります。それ以外の場合は0を返します。また、getcmdpos()setcmdpos()getcmdline()、およびsetcmdline()も参照してください。
戻り値
(any)
getcmdtype() getcmdtype()
現在のコマンドラインの種類を返します。可能な戻り値は次のとおりです。: 通常のExコマンド > デバッグモードコマンド debug-mode / 前方検索コマンド ? 後方検索コマンド @ input() コマンド - :insertまたは:appendコマンド = i_CTRL-R_= コマンドラインを編集している場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=、または式マッピングを使用する必要があります。それ以外の場合は空文字列を返します。また、getcmdpos()setcmdpos()、およびgetcmdline()も参照してください。
戻り値
(':'|'>'|'/'|'?'|'@'|'-'|'=')
getcmdwintype() getcmdwintype()
現在のcommand-line-windowの種類を返します。可能な戻り値はgetcmdtype()と同じです。コマンドラインウィンドウにない場合は空文字列を返します。
戻り値
(':'|'>'|'/'|'?'|'@'|'-'|'=')
getcompletion({パターン}, {種類} [, {フィルタリング済み}]) getcompletion()
コマンドライン補完の一致リストを返します。文字列{種類}引数は、何の補完を行うかを指定します。サポートされている補完の種類は次のとおりです。
arglist 引数リスト内のファイル名 augroup autocmdグループ buffer バッファ名 breakpoint :breakaddおよび:breakdelサブオプション cmdline cmdline-completion結果 color カラーテーマ command Exコマンド compiler コンパイラ custom,{func} カスタム補完({func}で定義) customlist,{func} カスタム補完({func}で定義) diff_buffer :diffgetおよび:diffput補完 dir ディレクトリ名 dir_in_path 'cdpath'内のディレクトリ名 environment 環境変数名 event autocommandイベント expression Vim式 file ファイル名とディレクトリ名 file_in_path 'path'内のファイル名とディレクトリ名 filetype filetype名 'filetype' function 関数名 help ヘルプ項目 highlight ハイライトグループ history :historyサブオプション keymap キーボードマッピング locale ロケール名(locale -aの出力が表示されます) mapclear バッファ引数マッピング mapping マッピング名 menu メニュー messages :messagesサブオプション option オプション packadd オプションパッケージ pack-add名 runtime :runtime補完 scriptnames ソース済みスクリプト名 :scriptnames shellcmd シェルコマンド shellcmdline ファイル名引数付きシェルコマンドライン sign :signサブオプション syntax シンタックスファイル名 'syntax' syntime :syntimeサブオプション tag タグ tag_listfiles タグ、ファイル名 user ユーザー名 var ユーザー変数
{パターン}が空文字列の場合、すべての一致が返されます。それ以外の場合は、{パターン}と一致する項目のみが返されます。{パターン}における特殊文字の使用についてはワイルドカードを参照してください。
オプションの{フィルタリング済み}フラグが1に設定されている場合、'wildignore'が適用されて結果がフィルタリングされます。それ以外の場合は、すべての一致が返されます。'wildignorecase'オプションは常に適用されます。
'wildoptions'オプションに"fuzzy"が含まれている場合、あいまい検索を使用して補完の一致を取得します。それ以外の場合は、正規表現の一致が使用されます。したがって、この関数は、コマンドラインで発生することと同じように、ユーザーの設定に従います。これを避けたい場合は、getcompletion()を呼び出す前に'wildoptions'を空にして、後で復元できます。
{種類}が"cmdline"の場合、cmdline-completionの結果が返されます。たとえば、":call"コマンドの後に可能な値を補完するには
echo getcompletion('call ', 'cmdline')
一致がない場合は、空のリストが返されます。{種類}の値が無効な場合は、エラーが発生します。
パラメータ
{パターン} (文字列)
{種類} (文字列)
{フィルタリング済み} (ブール値?)
戻り値
(文字列配列)
getcurpos([{ウィンドウID}]) getcurpos()
カーソルの位置を取得します。これはgetpos('.')に似ていますが、リストに"curswant"項目が追加されています。
[0, 行番号, 列番号, オフセット, curswant]
"curswant"数値は、カーソルを垂直方向に移動したときの優先列です。$コマンドの後、v:maxcolに等しい非常に大きな数値になります。また、getcursorcharpos()およびgetpos()も参照してください。"bufnum"項目は常にゼロです。カーソルのバイト位置は"列番号"に返されます。文字位置を取得するには、getcursorcharpos()を使用してください。
オプションの{ウィンドウID}引数は、ウィンドウを指定できます。ウィンドウ番号またはwindow-IDを指定できます。最後に知られているカーソルの位置が返されます。これは、現在のウィンドウでない場合、バッファの現在の値に対して無効な可能性があります。{ウィンドウID}が無効な場合は、ゼロのリストが返されます。
これは、カーソルの位置を保存して復元するために使用できます。
let save_cursor = getcurpos()
MoveTheCursorAround
call setpos('.', save_cursor)
これはウィンドウ内でのみ機能することに注意してください。より多くの状態を復元するにはwinrestview()を参照してください。
パラメータ
{winid} (integer?)
戻り値
(any)
getcursorcharpos([{ウィンドウID}]) getcursorcharpos()
getcurpos()と同じですが、返されるリストの列番号はバイトインデックスではなく文字インデックスです。
例:「여보세요」というテキストの3行目の'보'にカーソルがある場合
getcursorcharpos()        " returns [0, 3, 2, 0, 3]
getcurpos()                " returns [0, 3, 4, 0, 3]
パラメータ
{winid} (integer?)
戻り値
(any)
getcwd([{ウィンドウ番号} [, {タブ番号}]]) getcwd()
引数がない場合、有効なカレントディレクトリの名前を返します。{ウィンドウ番号}または{タブ番号}を指定すると、そのスコープの作業ディレクトリが返され、'autochdir'は無視されます。タブとウィンドウはそれぞれの番号で識別され、0は現在のタブまたはウィンドウを意味します。タブ番号が欠落している場合は0を意味します。したがって、以下は同等です。
getcwd(0)
getcwd(0, 0)
{ウィンドウ番号}が-1の場合、無視され、タブのみが解決されます。{ウィンドウ番号}はウィンドウ番号またはwindow-IDを指定できます。{ウィンドウ番号}{タブ番号}の両方が-1の場合、グローバル作業ディレクトリが返されます。引数が無効な場合はエラーをスローします。E5000 E5001 E5002
パラメータ
{winnr} (integer?)
{tabnr} (integer?)
戻り値
(文字列)
getenv({名前}) getenv()
環境変数{名前}の値を返します。{名前}引数は、先頭に'$'がない文字列です。例
myHome = getenv('HOME')
変数が存在しない場合、v:nullが返されます。これは、空文字列に設定されている変数とは異なります。expr-envも参照してください。
パラメータ
{name} (文字列)
戻り値
(文字列)
getfontname([{name}]) getfontname()
引数を指定しないと、現在使用されている標準フォントの名前を返します。Normal ハイライトグループ hl-Normalで使用されているものと同じです。引数を指定すると、文字列{name}が有効なフォント名かどうかをチェックします。無効な場合は空文字列を返し、有効な場合は実際のフォント名を返します。GUIが実際のフォント名を取得できない場合は{name}を返します。GUIが実行されている場合のみ機能するため、vimrcまたはgvimrcファイル内では使用できません。GUIEnter オートコマンドを使用して、GUI起動直後にこの関数を使用してください。
パラメータ
{name} (string?)
戻り値
(文字列)
getfperm({fname}) getfperm()
指定されたファイル{fname}の読み取り、書き込み、実行権限を表す文字列を返します。{fname}が存在しない場合、またはそのディレクトリを読み取れない場合は、空文字列を返します。結果は"rwxrwxrwx"の形式で、各"rwx"のグループは、ファイルの所有者、ファイルが属するグループ、その他のユーザーの権限を表します。ユーザーに特定の権限がない場合は、そのフラグが"-"に置き換えられます。例
echo getfperm("/etc/passwd")
echo getfperm(expand("~/.config/nvim/init.vim"))
セキュリティの観点から、"rw-r--r--"または"rw-------"が表示されることを期待します。
権限の設定にはsetfperm()を使用します。
パラメータ
{fname} (string)
戻り値
(文字列)
getfsize({fname}) getfsize()
指定されたファイル{fname}のサイズ(バイト単位)を表す数値を返します。{fname}がディレクトリの場合は0を返し、ファイル{fname}が見つからない場合は-1を返します。{fname}のサイズが数値の範囲を超える場合は-2を返します。
パラメータ
{fname} (string)
戻り値
(integer)
getftime({fname}) getftime()
指定されたファイル{fname}の最終更新時刻を表す数値を返します。値は1970年1月1日からの秒数で測定され、strftime()に渡すことができます。localtime()およびstrftime()も参照してください。ファイル{fname}が見つからない場合は-1を返します。
パラメータ
{fname} (string)
戻り値
(integer)
getftype({fname}) getftype()
指定されたファイル{fname}の種類を表す文字列を返します。{fname}が存在しない場合は空文字列を返します。ファイルの種類とその結果の対応表を以下に示します。通常のファイル:"file"、ディレクトリ:"dir"、シンボリックリンク:"link"、ブロックデバイス:"bdev"、キャラクタデバイス:"cdev"、ソケット:"socket"、FIFO:"fifo"、その他:"other" 例
getftype("/home")
"link"などの種類は、それをサポートするシステムでのみ返されます。一部のシステムでは"dir"と"file"のみが返されます。
パラメータ
{fname} (string)
戻り値
('file'|'dir'|'link'|'bdev'|'cdev'|'socket'|'fifo'|'other')
getjumplist([{winnr} [, {tabnr}]]) getjumplist()
指定されたウィンドウのジャンプリストを返します。
引数を指定しないと、現在のウィンドウを使用します。{winnr}を指定すると、現在のタブページ内のそのウィンドウのみを使用します。{winnr}にはウィンドウIDも使用できます。{winnr}{tabnr}を指定すると、指定されたタブページ内のウィンドウを使用します。{winnr}または{tabnr}が無効な場合は、空のリストを返します。
返されるリストには、ジャンプ位置のリストと、リスト内で最後に使用されたジャンプ位置番号の2つのエントリが含まれています。ジャンプ位置リストの各エントリは、次のエントリを持つディクショナリです: bufnr バッファ番号、col カラム番号、coladd 'virtualedit'のためのカラムオフセット、filename ファイル名(存在する場合)、lnum 行番号
パラメータ
{winnr} (integer?)
{tabnr} (integer?)
戻り値
(vim.fn.getjumplist.ret)
getline({lnum} [, {end}]) getline()
{end}を指定しないと、現在のバッファの{lnum}行を表す文字列を返します。例
getline(1)
{lnum}が数字で始まらない文字列の場合、line()を呼び出して文字列を数値に変換します。カーソル下の行を取得するには
getline(".")
{lnum}が1より小さい数、またはバッファの行数より大きい数の場合は、空文字列を返します。
{end}を指定すると、{lnum}から{end}までの範囲の現在のバッファの各行({end}行を含む)を要素とするリストを返します。{end}{lnum}と同じ方法で使用されます。存在しない行は黙って省略されます。{end}{lnum}より前の場合は、空のリストを返します。例
let start = line('.')
let end = search("^$") - 1
let lines = getline(start, end)
他のバッファから行を取得するには、getbufline()およびgetbufoneline()を参照してください。
パラメータ
{lnum} (integer|string)
{end_} (nil|false?)
戻り値
(文字列)
getloclist({nr} [, {what}]) getloclist()
ウィンドウ{nr}の場所リストにあるすべてのエントリを含むリストを返します。{nr}には、ウィンドウ番号またはウィンドウIDを使用できます。{nr}が0の場合は、現在のウィンドウが使用されます。
場所リストウィンドウの場合、表示されている場所リストが返されます。無効なウィンドウ番号{nr}の場合は、空のリストを返します。それ以外の場合は、getqflist()と同じです。
オプションの{what}ディクショナリ引数を指定すると、{what}にリストされているアイテムをディクショナリとして返します。{what}でサポートされているアイテムについては、getqflist()を参照してください。
getqflist()でサポートされているアイテムに加えて、getloclist()では次のアイテムがサポートされています。
filewinid 場所リストからファイルを表示するために使用されるウィンドウのID。このフィールドは、場所リストウィンドウから呼び出された場合にのみ適用されます。詳細についてはlocation-list-file-windowを参照してください。
ウィンドウ{nr}に場所リストがない場合は、デフォルト値を持つディクショナリを返します。ウィンドウ{nr}が存在しない場合は、空のディクショナリを返します。
例(getqflist-examplesも参照)
echo getloclist(3, {'all': 0})
echo getloclist(5, {'filewinid': 0})
パラメータ
{nr} (integer)
{what} (table?)
戻り値
(any)
getmarklist([{buf}]) getmarklist()
{buf}引数を指定しないと、すべてのグローバルマークに関する情報を格納したリストを返します。mark
オプションの{buf}引数を指定すると、バッファ{buf}に定義されているローカルマークを返します。{buf}の使用方法については、bufname()を参照してください。{buf}が無効な場合は、空のリストを返します。
返されるリストの各項目は、次の項目を持つディクショナリです。mark マークの名前( "'" が接頭辞として付加されます)、pos マークの位置を含むリスト:[bufnum, lnum, col, off] 詳細についてはgetpos()を参照してください。file ファイル名
特定のマークに関する情報を取得するにはgetpos()を参照してください。
パラメータ
{buf} (integer??)
戻り値
(vim.fn.getmarklist.ret.item[])
getmatches([{win}]) getmatches()
matchadd():matchコマンドによって以前に現在のウィンドウに定義されたすべてのマッチを含むリストを返します。getmatches()setmatches()と組み合わせて使用すると便利です。なぜならsetmatches()getmatches()によって保存されたマッチのリストを復元できるからです。{win}を指定すると、現在のウィンドウの代わりにこの番号またはウィンドウIDを持つウィンドウを使用します。{win}が無効な場合は、空のリストを返します。例
echo getmatches()
[{"group": "MyGroup1", "pattern": "TODO",
"priority": 10, "id": 1}, {"group": "MyGroup2",
"pattern": "FIXME", "priority": 10, "id": 2}]
let m = getmatches()
call clearmatches()
echo getmatches()
[]
call setmatches(m)
echo getmatches()
[{"group": "MyGroup1", "pattern": "TODO",
"priority": 10, "id": 1}, {"group": "MyGroup2",
"pattern": "FIXME", "priority": 10, "id": 2}]
unlet m
パラメータ
{win} (integer?)
戻り値
(any)
getmousepos() getmousepos()
最後に知られているマウスの位置を含むディクショナリを返します。これは、マウスクリックのマッピングで使用できます。項目は以下のとおりです。screenrow 画面行、screencol 画面列、winid クリックのウィンドウID、winrow "winid"内の行、wincol "winid"内の列、line "winid"内のテキスト行、column "winid"内のテキスト列、coladd クリックされた文字の先頭からのオフセット(画面列単位)。すべての数値は1ベースです。
ウィンドウ上ではない場合(コマンドラインなど)、"screenrow"と"screencol"のみが有効で、他のものは0になります。
ウィンドウの下のステータスラインまたはウィンドウの右側の垂直線区切り文字の上にいる場合、"line"と"column"の値は0になります。
位置がテキストの後にある場合、"column"はテキストの長さ(バイト単位)プラス1になります。
フォーカス可能なフローティングウィンドウの上にマウスがある場合、そのウィンドウが使用されます。
getchar()を使用する場合、Vim変数v:mouse_lnumv:mouse_colv:mouse_winidもこれらの値を提供します。
戻り値
(vim.fn.getmousepos.ret)
getpid() getpid()
VimプロセスのプロセスIDを表す数値を返します。これは、Vimが終了するまで一意の数値です。
戻り値
(integer)
getpos({expr}) getpos()
文字列{expr}の位置を取得します。{expr}で受け入れられる値は次のとおりです。. カーソル位置、$ 現在のバッファの最終行、'x マークxの位置(マークが設定されていない場合は、すべての値に対して0が返されます)。w0 現在のウィンドウで表示されている最初の行(ディスプレイが更新されていない場合、たとえばサイレントExモードでは1)。w$ 現在のウィンドウで表示されている最後の行(行が表示されていない場合は"w0"より1少ない)。v Visualモードでない場合は、カーソル位置を返します。Visualモードの場合は、Visual領域のもう一方の端を返します。これは、Visualモードで"v"と"."が互いに補完するものであると考えるのが良い方法です。"."がカーソル位置を参照するのに対し、"v"はv_oがカーソルを移動する場所を参照します。その結果、文字単位のVisualモードで選択全体を操作するために"v"と"."を一緒に使用できます。カーソルが文字単位のVisual領域の最後にある場合、"v"は同じVisual領域の先頭を参照します。そして、カーソルが文字単位のVisual領域の先頭にある場合、"v"は同じVisual領域の最後を参照します。"v"は'<'>とは異なり、すぐに更新されます。別のファイルのマークを使用できることに注意してください。行番号は、別のバッファに適用されます。
結果は、4つの数値[bufnum, lnum, col, off]を含むリストです。"bufnum"は、'0や'Aのようなマークが使用されていない限りゼロです。マークが使用されている場合は、マークの属するバッファ番号になります。"lnum"と"col"はバッファ内の位置を示します。最初の列は1です。"off"は、'virtualedit'が使用されていない限りゼロです。使用されている場合は、文字の先頭からのスクリーン列のオフセットを示します。例えば、<Tab>内または最後の文字の後の位置などです。
カーソル位置を取得するには、getcurpos()を参照してください。返されるリスト内の列番号は、行内のバイト位置です。行内の文字位置を取得するには、getcharpos()を使用してください。
'<'と'>'については、Visualモードが重要です。「V」(ビジュアルラインモード)の場合、'<'の列はゼロになり、'>'の列はv:maxcolに等しい大きな数値になります。v:maxcolに等しい非常に大きな列番号が返される場合、それは「行末の後」を意味します。{expr}が無効な場合は、すべてがゼロのリストを返します。
これは、マークの位置を保存および復元するために使用できます。
let save_a_mark = getpos("'a")
" ...
call setpos("'a", save_a_mark)
getcharpos()getcurpos()、およびsetpos()も参照してください。
パラメータ
{expr} (string)
戻り値
(整数配列)
getqflist([{what}]) getqflist()
現在のクイックフィックスエラーをすべて含むリストを返します。各リスト項目は、次のエントリを含む辞書です。bufnr ファイル名を持つバッファの数、名前を取得するにはbufname()を使用します。module モジュール名 lnum バッファ内の行番号(最初の行は1) end_lnum 項目が複数行の場合の行末番号 col 列番号(最初の列は1) end_col 項目に範囲がある場合の列末番号 vcol TRUE:「col」はビジュアル列 FALSE:「col」はバイトインデックス nr エラー番号 pattern エラーを見つけるために使用された検索パターン text エラーの説明 type エラーの種類、'E'、'1'など valid TRUE:認識されたエラーメッセージ user_data 項目に関連付けられたカスタムデータ、任意の型。
エラーリストがないか空の場合、空のリストが返されます。存在しないバッファ番号を持つクイックフィックスリストのエントリは、「bufnr」がゼロに設定されて返されます(**注:** 一部の関数は代替バッファにバッファ番号ゼロを受け入れます。ゼロかどうかを明示的に確認する必要がある場合があります)。
便利なアプリケーション:複数のファイルでパターンの一致を見つけ、それらに対して何かを実行します。
vimgrep /theword/jg *.c
for d in getqflist()
   echo bufname(d.bufnr) ':' d.lnum '=' d.text
endfor
オプションの{what}辞書引数が指定されている場合、{what}にリストされている項目のみを辞書として返します。{what}では、次の文字列項目がサポートされています。changedtick リストに加えられた変更の総数 quickfix-changedtick context quickfix-contextを取得します efm "lines"を解析する際に使用するerrorformat。存在しない場合は、'errorformat'オプション値が使用されます。id quickfix-IDを使用してクイックフィックスリストに関する情報を取得します。ゼロは、現在のリストまたは「nr」で指定されたリストのIDを意味します idx 「id」または「nr」で指定されたリストのこのインデックスにあるクイックフィックスエントリの情報を取得します。ゼロに設定されている場合、現在のエントリを使用します。quickfix-indexを参照してください items クイックフィックスリストエントリ lines 'efm'を使用して行のリストを解析し、結果のエントリを返します。リスト型のみが受け入れられます。現在のクイックフィックスリストは変更されません。quickfix-parseを参照してください。nr このクイックフィックスリストに関する情報を取得します。ゼロは現在のクイックフィックスリストを、"$"は最後のクイックフィックスリストを意味します qfbufnr クイックフィックスウィンドウに表示されるバッファの数。クイックフィックスバッファが存在しない場合は0を返します。quickfix-bufferを参照してください。size クイックフィックスリストのエントリ数 title リストタイトルを取得します quickfix-title winid クイックフィックスwindow-IDを取得します all 上記のすべてのクイックフィックスプロパティ {what}の文字列以外の項目は無視されます。特定の項目の値を取得するには、それをゼロに設定します。「nr」が存在しない場合、現在のクイックフィックスリストが使用されます。「nr」とゼロ以外の「id」の両方が指定されている場合、「id」で指定されたリストが使用されます。クイックフィックススタックのリストの数を取得するには、{what}で「nr」を「$」に設定します。返される辞書内の「nr」値には、クイックフィックススタックサイズが含まれます。「lines」が指定されている場合、「efm」以外の他のすべての項目は無視されます。返される辞書には、「items」エントリにエントリのリストが含まれます。
返される辞書には、次のエントリが含まれます。changedtick リストに加えられた変更の総数 quickfix-changedtick context クイックフィックスリストコンテキスト。quickfix-contextを参照してください。存在しない場合は""に設定されます。id クイックフィックスリストID quickfix-ID。存在しない場合は0に設定されます。idx リスト内のクイックフィックスエントリのインデックス。存在しない場合は0に設定されます。items クイックフィックスリストエントリ。存在しない場合は空のリストに設定されます。nr クイックフィックスリスト番号。存在しない場合は0に設定されます qfbufnr クイックフィックスウィンドウに表示されるバッファの数。存在しない場合は0に設定されます。size クイックフィックスリストのエントリ数。存在しない場合は0に設定されます。title クイックフィックスリストのタイトルテキスト。存在しない場合は""に設定されます。winid クイックフィックスwindow-ID。存在しない場合は0に設定されます。
例(getqflist-examplesも参照)
echo getqflist({'all': 1})
echo getqflist({'nr': 2, 'title': 1})
echo getqflist({'lines' : ["F1:10:L10"]})
パラメータ
{what} (table?)
戻り値
(any)
getreg([{regname} [, 1 [, {list}]]]) getreg()
結果は、レジスタ{regname}の内容である文字列です。例
let cliptext = getreg('*')
レジスタ{regname}が設定されていない場合、結果は空の文字列です。{regname}引数は文字列である必要があります。
getreg('=')は、式レジスタの最後に評価された値を返します。(マップで使用します)。getreg('=')は式自体を返し、setreg()で復元できます。他のレジスタでは追加の引数は無視されるため、常に指定できます。
{list}が存在し、TRUEの場合、結果の型はリストに変更されます。各リスト項目は1つのテキスト行です。レジスタ内に存在する可能性のあるゼロバイトを気にする場合に使用します。第3引数がない場合、NLとゼロバイトの両方がNLとして表されます(NL-used-for-Nulを参照)。レジスタが設定されていない場合、空のリストが返されます。
{regname}が指定されていない場合、v:registerが使用されます。
パラメータ
{regname} (string?)
{list} (nil|false?)
戻り値
(文字列)
getreginfo([{regname}]) getreginfo()
レジスタ{regname}に関する詳細情報を、次のエントリを含む辞書として返します。regcontents getreg({regname}, 1, 1)のように、レジスタ{regname}に含まれる行のリスト。regtype getregtype()のように、レジスタ{regname}の型。isunnamed ブールフラグ、このレジスタが現在名前のないレジスタによって指されている場合、v:true。points_to 名前なしレジスタの場合、現在指されているレジスタの単一文字の名前を返します(quotequoteを参照)。たとえば、ddで行を削除した後、このフィールドは削除されたテキストを取得したレジスタである「1」になります。
{regname}引数は文字列です。{regname}が無効であるか設定されていない場合、空の辞書が返されます。{regname}が指定されていない場合、v:registerが使用されます。返される辞書はsetreg()に渡すことができます。
パラメータ
{regname} (string?)
戻り値
(table)
getregion({pos1}, {pos2} [, {opts}]) getregion()
バッファから{pos1}から{pos2}までの文字列のリストを返します。
{pos1}{pos2}はどちらも、4つの数値を含むリストである必要があります。getpos()でリストの形式を参照してください。異なるバッファの位置を指定することはできますが、getregion-notesの制限に注意してください。
オプションの引数{opts}は辞書であり、次の項目をサポートします。
type リージョンの選択の種類を指定します。幅を省略できること、空の文字列を使用できないことを除いて、可能な値についてはgetregtype()を参照してください。(デフォルト:「v」)
exclusive TRUEの場合、終了位置に排他的な選択を使用します。(デフォルト:'selection'に従う)
visualmode()で最後の選択の種類を取得できます。Visualモードがアクティブな場合、mode()を使用してVisualモードを取得します(例::vmap内)。この関数は、charwise-visual選択など、異なる列で開始および終了するテキストを取得するのに役立ちます。
getregion-notes
注記:
{pos1}{pos2}の順序は関係ありません。常に左上の位置から右下の位置までのコンテンツを返します。
'virtualedit'が有効になっており、リージョンが行末を超えている場合、結果の行はスペースで埋められます。
リージョンがブロック単位であり、複数セル文字の中央で開始または終了する場合、含まれませんが、選択された部分はスペースに置き換えられます。
{pos1}{pos2}が同じバッファにない場合、空のリストが返されます。
{pos1}{pos2}は、bufloaded()バッファに属している必要があります。
現在のウィンドウコンテキストで評価されます。これは、バッファが異なる'virtualedit'または'list'値を持つウィンドウに表示されている場合に違いが生じます。
xnoremap <CR>
\ <Cmd>echom getregion(
\ getpos('v'), getpos('.'), #{ type: mode() })<CR>
パラメータ
{pos1} (table)
{pos2} (table)
{opts} (table?)
戻り値
(文字列配列)
getregionpos({pos1}, {pos2} [, {opts}]) getregionpos()
getregion()と同じですが、{pos1}{pos2}によってバインドされたバッファテキストセグメントを記述する位置のリストを返します。セグメントは、各行の2つの位置のペアです。
[[{start_pos}, {end_pos}], ...]
位置は、4つの数値を含むリストです:[bufnum, lnum, col, off] "bufnum"はバッファ番号です。"lnum"と"col"はバッファ内の位置です。最初の列は1です。開始位置の"off"番号がゼロ以外の場合、文字の先頭からのスクリーン列のオフセットです。たとえば、<Tab>内または最後の文字の後の位置などです。終了位置の"off"番号がゼロ以外の場合、選択に含まれない文字の最初のセルのオフセットです。それ以外の場合は、すべてのセルが含まれます。
getregion()でサポートされているオプションに加えて、{opts}は次のものもサポートします。
eol TRUEの場合、「col」値が行の長さより1大きい値を使用して、行末を超える位置を示します。FALSEの場合、位置は行内に制限され、行が空であるか、選択が完全にその行の末尾を超えている場合、両方の位置の「col」値は0になります。(デフォルト:FALSE
パラメータ
{pos1} (table)
{pos2} (table)
{opts} (table?)
戻り値
(integer[][][])
getregtype([{regname}]) getregtype()
結果は、レジスタ{regname}の型の文字列です。値は以下のいずれかになります。「v」は文字単位のテキスト、「V」は行単位のテキスト、「<CTRL-V>{width}」はブロック単位の視覚選択のテキスト、「」は空または不明なレジスタです。<CTRL-V>は値が0x16の1文字です。{regname}引数は文字列です。{regname}が指定されていない場合、v:registerが使用されます。
パラメータ
{regname} (string?)
戻り値
(文字列)
getscriptinfo([{opts}]) getscriptinfo()
ソースされたVimスクリプトに関する情報を、ソースされた順にリスト(List)で返します。:scriptnamesコマンドが表示するものと同じです。
オプションの辞書引数{opts}は、以下のオプション項目をサポートします: name スクリプト名のマッチパターン。指定した場合、"sid"が指定されていない場合は、名前にパターン"name"が一致するスクリプトの情報が返されます。 sid スクリプトID <SID>。指定した場合、ID "sid"のスクリプトの情報のみが返され、"name"は無視されます。
返されるリスト内の各項目は、以下の項目を含む辞書(Dict)です: autoload 常にFALSEに設定されます。 functions スクリプトで定義されたスクリプトローカルな関数名のリスト。{opts}の"sid"項目を使用して特定のスクリプトが指定されている場合のみ表示されます。 name Vimスクリプトファイル名。 sid スクリプトID <SID>。 variables スクリプトローカル変数の辞書。{opts}の"sid"項目を使用して特定のスクリプトが指定されている場合のみ表示されます。これはコピーであることに注意してください。この辞書を使用してスクリプトローカル変数の値を変更することはできません。 version Vimスクリプトバージョン、常に1
echo getscriptinfo({'name': 'myscript'})
echo getscriptinfo({'sid': 15})[0].variables
パラメータ
{opts} (table?)
戻り値
(vim.fn.getscriptinfo.ret[])
gettabinfo([{tabnr}]) gettabinfo()
{tabnr}が指定されていない場合、すべてのタブページに関する情報がリスト(List)として返されます。各リスト項目は辞書(Dictionary)です。それ以外の場合は、{tabnr}がタブページ番号を指定し、そのタブページに関する情報が返されます。タブページが存在しない場合、空のリストが返されます。
各リスト項目は、以下のエントリを含む辞書(Dictionary)です: tabnr タブページ番号。 variables タブページローカル変数を含む辞書への参照。 windows タブページ内のウィンドウIDのリスト。
パラメータ
{tabnr} (integer?)
戻り値
(any)
gettabvar({tabnr}, {varname} [, {def}]) gettabvar()
タブページ{tabnr}のタブローカル変数{varname}の値を取得します。t:var タブは1から番号付けされます。{varname}引数は文字列です。{varname}が空の場合、すべてのタブローカル変数を含む辞書が返されます。「t:」を除いた名前を使用する必要があることに注意してください。タブまたは変数が存在しない場合、{def}または空の文字列が返され、エラーメッセージは表示されません。
パラメータ
{tabnr} (整数)
{varname} (文字列)
{def} (任意?)
戻り値
(any)
gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) gettabwinvar()
タブページ{tabnr}のウィンドウ{winnr}内のウィンドウローカル変数{varname}の値を取得します。{varname}引数は文字列です。{varname}が空の場合、すべてのウィンドウローカル変数を含む辞書が返されます。{varname}が「&」の場合、すべてのウィンドウローカルオプションの値を辞書(Dictionary)で取得します。それ以外の場合、{varname}が「&」で始まる場合、ウィンドウローカルオプションの値を取得します。「w:」を除いた名前を{varname}として使用する必要があることに注意してください。タブは1から番号付けされます。現在のタブページにはgetwinvar()を使用します。{winnr}はウィンドウ番号またはウィンドウIDにすることができます。{winnr}が0の場合、現在のウィンドウが使用されます。これはグローバルオプション、バッファローカルオプション、ウィンドウローカルオプションにも機能しますが、グローバル変数またはバッファローカル変数には機能しません。タブ、ウィンドウ、または変数が存在しない場合、{def}または空の文字列が返され、エラーメッセージは表示されません。例
let list_is_on = gettabwinvar(1, 2, '&list')
echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
すべてのウィンドウローカル変数を取得するには
gettabwinvar({tabnr}, {winnr}, '&')
パラメータ
{tabnr} (整数)
{winnr} (整数)
{varname} (文字列)
{def} (任意?)
戻り値
(any)
gettagstack([{winnr}]) gettagstack()
結果は、ウィンドウ{winnr}のタグスタックである辞書(Dict)です。{winnr}はウィンドウ番号またはウィンドウIDにすることができます。{winnr}が指定されていない場合、現在のウィンドウが使用されます。ウィンドウ{winnr}が存在しない場合、空の辞書が返されます。
返される辞書には、以下のエントリが含まれています: curidx スタック内の現在のインデックス。スタックの一番上にある場合、(長さ + 1)に設定されます。スタックの一番下のインデックスは1です。 items スタック内の項目のリスト。各項目は、以下に説明するエントリを含む辞書です。 length スタック内のエントリ数。
スタック内の各項目は、以下のエントリを含む辞書です: bufnr タグジャンプ前のカーソル位置からの現在のジャンプのバッファ番号。getpos()を参照して、返されるリストの形式を確認してください。 matchnr 現在のマッチしたタグ番号。名前に対して複数のマッチしたタグが見つかった場合に使用されます。 tagname タグの名前
タグスタックの詳細については、tagstackを参照してください。
パラメータ
{winnr} (integer?)
戻り値
(any)
gettext({text}) gettext()
可能な場合、文字列{text}を翻訳します。これは主に、配布されているVimスクリプトで使用されます。メッセージの翻訳を生成する場合、{text}はxgettextによって抽出され、翻訳者は.poファイルに翻訳されたメッセージを追加し、gettext()が呼び出されたときにVimが翻訳を検索します。{text}には、二重引用符で囲まれた文字列が推奨されます。xgettextは、単一引用符で囲まれた文字列のエスケープを理解しないためです。
パラメータ
{text} (string)
戻り値
(any)
getwininfo([{winid}]) getwininfo()
ウィンドウに関する情報を、辞書を含むリスト(List)として返します。
{winid}が指定されている場合、そのIDを持つウィンドウに関する情報が、1つの項目を含むリスト(List)として返されます。ウィンドウが存在しない場合、結果は空のリストです。
{winid}が指定されていない場合、すべてのタブページ内のすべてのウィンドウに関する情報が返されます。
各リスト項目は、以下のエントリを含む辞書(Dictionary)です: botline 最後に表示されたバッファの完全な行。 bufnr ウィンドウ内のバッファの番号。 height ウィンドウの高さ(winbarを除く)。 loclist 位置リストを表示している場合1。 quickfix クイックフィックスまたは位置リストウィンドウの場合1。 terminal ターミナルウィンドウの場合1。 tabnr タブページ番号。 topline 最初に表示されたバッファの行。 variables ウィンドウローカル変数を含む辞書への参照。 width ウィンドウの幅。 winbar ウィンドウにツールバーがある場合1、そうでない場合0。 wincol ウィンドウの左端の画面列。「col」はwin_screenpos()を参照。 textoff テキストの前にある任意の'foldcolumn''signcolumn'、行番号によって占有されている列の数。 winid ウィンドウID。 winnr ウィンドウ番号。 winrow ウィンドウの一番上の画面行。「row」はwin_screenpos()を参照。
パラメータ
{winid} (integer?)
戻り値
(vim.fn.getwininfo.ret.item[])
getwinpos([{timeout}]) getwinpos()
結果は、getwinposx()getwinposy()の結果を組み合わせた2つの数値を含むリスト(Listです: [x座標, y座標] {timeout}を使用して、ターミナルからの応答を待つ時間をミリ秒単位で指定できます。省略された場合、100ミリ秒が使用されます。
リモートターミナルにはより長い時間を使用してください。10未満の値を使用し、その時間内に応答がない場合、以前に報告された位置が使用可能な場合は返されます。これは、位置をポーリングし、その間に作業を行うために使用できます。
while 1
  let res = getwinpos(1)
  if res[0] >= 0
    break
  endif
  " Do some work here
endwhile
パラメータ
{timeout} (整数?)
戻り値
(any)
getwinposx() getwinposx()
結果は、GUI Vimウィンドウの左側のX座標(ピクセル単位)の数値です。情報が利用できない場合は-1が返されます。この値は:winposで使用できます。
戻り値
(integer)
getwinposy() getwinposy()
結果は、GUI Vimウィンドウの上部のY座標(ピクセル単位)の数値です。情報が利用できない場合は-1が返されます。この値は:winposで使用できます。
戻り値
(integer)
getwinvar({winnr}, {varname} [, {def}]) getwinvar()
gettabwinvar()と同様ですが、現在のタブページ用です。例
        let list_is_on = getwinvar(2, '&list')
        echo "myvar = " .. getwinvar(1, 'myvar')
Parameters: ~
  • {winnr} (`integer`)
  • {varname} (`string`)
  • {def} (`any?`)
Return: ~
  (`any`)
glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) glob()
{expr}内のファイルワイルドカードを展開します。特殊文字の使用についてはワイルドカードを参照してください。
オプションの{nosuf}引数が指定され、TRUEでない限り、'suffixes'オプションと'wildignore'オプションが適用されます。'wildignore'のパターンのいずれかに一致する名前はスキップされ、'suffixes'は一致する名前の順序に影響を与えます。'wildignorecase'は常に適用されます。
{list}が存在し、TRUEの場合、結果は一致するすべてのファイルを含むリスト(List)になります。リストを使用する利点は、改行を含むファイル名も正しく取得できることです。それ以外の場合は、結果は文字列であり、複数のマッチがある場合は、<NL>文字で区切られます。
展開に失敗した場合、結果は空の文字列またはリストになります。
一致の数を制限するなど、複雑な処理を行う必要がある場合は、readdir()を使用することもできます。
存在しないファイルの名前は含まれません。シンボリックリンクは、既存のファイルを参照している場合にのみ含まれます。ただし、{alllinks}引数が存在し、TRUEの場合、すべてのシンボリックリンクが含まれます。
ほとんどのシステムでは、バッククォートを使用して、任意の外部コマンドからファイル名を取得できます。例
let tagfiles = glob("`find . -name tags -print`")
let &tags = substitute(tagfiles, "\n", ",", "g")
バッククォート内のプログラムの結果は、行ごとに1つの項目である必要があります。項目内のスペースは許可されます。
特別なVim変数の展開については、expand()を参照してください。外部コマンドの生の出力を取得するには、system()を参照してください。
パラメータ
{expr} (string)
{nosuf} (boolean?)
{list} (boolean?)
{alllinks} (boolean?)
戻り値
(any)
glob2regpat({string}) glob2regpat()
glob()で使用されるファイルパターンを検索パターンに変換します。結果は、ファイル名である文字列と照合するために使用できます。例:
if filename =~ glob2regpat('Make*.mak')
  " ...
endif
これは次のものと同等です。
if filename =~ '^Make.*\.mak$'
  " ...
endif
{string}が空文字列の場合、結果は"^$"となり、空文字列と一致します。結果はシステムに依存することに注意してください。MS-Windowsでは、バックスラッシュは通常パスセパレータを意味します。
パラメータ
{string} (string)
戻り値
(any)
globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]]) globpath() {path}内のすべてのディレクトリで文字列{expr}に対してglob()を実行し、結果を連結します。例
echo globpath(&rtp, "syntax/c.vim")
{path}は、コンマで区切られたディレクトリ名のリストです。各ディレクトリ名は{expr}の前に追加され、glob()と同様に展開されます。必要に応じてパスセパレータが挿入されます。ディレクトリ名の中にコンマを追加するには、バックスラッシュでエスケープします。MS-Windowsでは、ディレクトリに末尾のバックスラッシュが付いている場合がありますが、コンマを後に付ける場合は削除してください。いずれかのディレクトリの展開に失敗した場合でも、エラーメッセージは表示されません。
オプションの{nosuf}引数が指定されておらず、TRUEでない限り、'suffixes'オプションと'wildignore'オプションが適用されます。'wildignore'のパターンと一致する名前はスキップされ、'suffixes'は一致の順序に影響します。
{list}が存在し、TRUEの場合、結果はすべてのマッチするファイルを含むListになります。Listを使用する利点は、改行を含むファイル名も正しく取得できることです。それ以外の場合は、結果はStringになり、複数のマッチがある場合は<NL>文字で区切られます。例
echo globpath(&rtp, "syntax/c.vim", 0, 1)
{alllinks}glob()と同様に使用されます。
"**"項目を使用してディレクトリツリー内で検索できます。たとえば、'runtimepath'以下のディレクトリにあるすべての"README.txt"ファイルを見つけるには
echo globpath(&rtp, "**/README.txt")
上方向の検索と"**"の深さの制限はサポートされていないため、'path'を使用しても常に正しく動作するとは限りません。
パラメータ
{path} (string)
{expr} (string)
{nosuf} (boolean?)
{list} (boolean?)
{allinks} (boolean?)
戻り値
(any)
has({feature}) has()
{feature}がサポートされている場合は1を、そうでない場合は0を返します。{feature}引数は"nvim-0.2.1"や"win32"などの機能名です。以下を参照してください。exists()も参照してください。
システム名を取得するには、Luaでvim.uv.os_uname()を使用します。
print(vim.uv.os_uname().sysname)
コードに構文エラーがある場合、Vimscriptは行の残りをスキップすることがあります。構文エラーを回避するために、:if:endifを別々の行に配置してください。
if has('feature')
  let x = this_breaks_without_the_feature()
endif
Nvimは常にすべての可能な機能を備えてコンパイルされるため、Vimのコンパイル時の機能名("+"で始まる)は認識されません。feature-compile
機能名は次のとおりです。1. Nvimのバージョン。たとえば、"nvim-0.2.1"機能は、Nvimがバージョン0.2.1以降であることを意味します。
if has("nvim-0.2.1")
  " ...
endif
2. 実行時条件またはその他の擬似機能。たとえば、"win32"機能は、現在のシステムがWindowsかどうかをチェックします。
if has("win32")
  " ...
endif
feature-list
サポートされている擬似機能名のリスト:acl ACLサポート。bsd BSDシステム(macOSではない、macOSの場合は"mac"を使用)。clipboard クリップボードプロバイダが利用可能。fname_case ファイル名の大文字と小文字が区別される(DarwinとMS-Windowsでは存在しない)。gui_running NvimにGUIがある。iconv 変換にiconv()を使用できる。linux Linuxシステム。mac MacOSシステム。nvim これはNvimです。python3 従来のVim python3インターフェース。has-python pythonx 従来のVim python_xインターフェース。has-pythonx sun SunOSシステム。ttyin 入力がターミナル(tty)である。ttyout 出力がターミナル(tty)である。unix Unixシステム。vim_starting 起動時にTrue。win32 Windowsシステム(32ビットまたは64ビット)。win64 Windowsシステム(64ビット)。wsl WSL(Windows Subsystem for Linux)システム。
has-patch
3. Vimパッチ。たとえば、"patch123"機能は、現在のv:versionでVimパッチ123が含まれていることを意味します。
if v:version > 602 || v:version == 602 && has("patch148")
  " ...
endif
4. Vimのバージョン。たとえば、"patch-7.4.237"機能は、Nvimがバージョン7.4.237以降と互換性のあるVimであることを意味します。
if has("patch-7.4.237")
  " ...
endif
パラメータ
{feature} (string)
戻り値
(0|1)
has_key({dict}, {key}) has_key()
結果はNumberで、Dictionary {dict}にキー{key}のエントリがある場合はTRUE、そうでない場合はFALSEになります。{key}引数は文字列です。
パラメータ
{dict} (table)
{key} (string)
戻り値
(0|1)
haslocaldir([{winnr} [, {tabnr}]]) haslocaldir()
結果はNumberで、ウィンドウが:lcdを介してローカルパスを設定している場合、または{winnr}が-1でタブページが:tcdを介してローカルパスを設定している場合は1、それ以外の場合は0になります。
タブとウィンドウはそれぞれの番号で識別され、0は現在のタブまたはウィンドウを意味します。引数が不足している場合は0が暗黙的に使用されます。したがって、以下は同等です。
echo haslocaldir()
echo haslocaldir(0)
echo haslocaldir(0, 0)
{winnr}を使用すると、現在のタブページのウィンドウが使用されます。{winnr}{tabnr}を使用すると、そのタブページのウィンドウが使用されます。{winnr}はウィンドウ番号またはwindow-IDにすることができます。{winnr}が-1の場合、無視され、タブのみが解決されます。引数が無効な場合はエラーをスローします。E5000 E5001 E5002
パラメータ
{winnr} (integer?)
{tabnr} (integer?)
戻り値
(0|1)
hasmapto({what} [, {mode} [, {abbr}]]) hasmapto()
結果はNumberで、rhs(マッピング先)のどこかに{what}が含まれるマッピングがあり、そのマッピングが{mode}で示されたモードのいずれかに存在する場合はTRUEになります。{what}{mode}引数は文字列です。{abbr}が存在し、TRUEの場合は、マッピングではなく省略形を使用します。挿入モードと/またはコマンドラインモードを指定することを忘れないでください。グローバルマッピングと現在のバッファにローカルなマッピングの両方が一致についてチェックされます。一致するマッピングが見つからない場合はFALSEが返されます。{mode}では、次の文字が認識されます。n 通常モード v VisualおよびSelectモード x Visualモード s Selectモード o オペレータ保留モード i 挿入モード l 言語引数("r"、"f"、"t"など) c コマンドラインモード {mode}が省略された場合、"nvo"が使用されます。
この関数は、Vimスクリプト内の関数にマッピングが既に存在するかどうかを確認するのに役立ちます。例
if !hasmapto('\ABCdoit')
   map <Leader>d \ABCdoit
endif
これは、"\ABCdoit"へのマッピングがまだ存在しない場合にのみ、"\ABCdoit"へのマッピングをインストールします。
パラメータ
{what} (any)
{mode}string?
{abbr} (boolean?)
戻り値
(0|1)
histadd({history}, {item}) histadd()
文字列{item}を履歴{history}に追加します。履歴は次のいずれかになります。hist-names
"cmd"または":"コマンドライン履歴 "search"または"/"検索パターン履歴 "expr"または"="入力式履歴 "input"または"@"入力行履歴 "debug"または">"デバッグコマンド履歴 空の場合は、現在使用されているか、最後に使用された履歴をクリアします。{history}文字列は、完全な名前である必要はなく、1文字で十分です。{item}が既に履歴に存在する場合は、最新のエントリになるようにシフトされます。結果はNumberで、操作が成功した場合はTRUE、そうでない場合はFALSEが返されます。
call histadd("input", strftime("%Y %b %d"))
let date=input("Enter date: ")
この関数はサンドボックスでは使用できません。
パラメータ
{history} (string)
{item} (any)
戻り値
(0|1)
histdel({history} [, {item}]) histdel()
{history}をクリアする、つまりすべてエントリを削除します。hist-namesで、{history}の可能な値を参照してください。
パラメータ{item}がStringとして評価される場合、正規表現として使用されます。その式と一致するすべてのエントリが履歴から削除されます(存在する場合)。大文字と小文字は一致する必要があります("\c"を使用しない限り/\c)。{item}がNumberとして評価される場合、インデックスとして解釈されます。:history-indexingを参照してください。該当するエントリは、存在する場合は削除されます。
操作が成功した場合はTRUE、そうでない場合はFALSEが返されます。
例:式レジスタの履歴をクリアします。
call histdel("expr")
検索履歴から"*"で始まるすべてのエントリを削除します。
call histdel("/", '^\*')
次の3つは同等です。
call histdel("search", histnr("search"))
call histdel("search", -1)
call histdel("search", '^' .. histget("search", -1) .. '$')
最後の検索パターンを削除し、"n"コマンドと'hlsearch'に最後から2番目の検索パターンを使用するには
call histdel("search", -1)
let @/ = histget("search", -1)
パラメータ
{history} (string)
{item} (any?)
戻り値
(0|1)
histget({history} [, {index}]) histget()
結果はStringで、{history}からNumber {index}のエントリです。hist-namesで、{history}の可能な値を参照し、:history-indexing{index}を参照してください。そのようなエントリがない場合は、空のStringが返されます。{index}が省略された場合、履歴の最新項目が使用されます。
例:履歴から最後から2番目の検索をやり直します。
execute '/' .. histget("search", -2)
:historyの出力の{num}番目のエントリの再実行をサポートするExコマンド":H {num}"を定義します。
command -nargs=1 H execute histget("cmd", 0+<args>)
パラメータ
{history} (string)
{index} (integer|string?)
戻り値
(文字列)
histnr({history}) histnr()
結果は、{history}の現在のエントリのNumberです。hist-namesで、{history}の可能な値を参照してください。エラーが発生した場合は-1が返されます。
let inp_index = histnr("expr")
パラメータ
{history} (string)
戻り値
(integer)
hlID({name}) hlID()
結果は数値で、{name}という名前のハイライトグループのIDです。ハイライトグループが存在しない場合は、ゼロが返されます。これは、ハイライトグループに関する情報を取得するために使用できます。たとえば、「Comment」グループの背景色を取得するには
echo synIDattr(synIDtrans(hlID("Comment")), "bg")
パラメータ
{name} (文字列)
戻り値
(integer)
hlexists({name}) hlexists()
結果は数値で、{name}という名前のハイライトグループが存在する場合はTRUEです。これは、グループが何らかの方法で定義されている場合です。必ずしもハイライトが定義されている場合とは限りません。構文アイテムにも使用されている可能性があります。
パラメータ
{name} (文字列)
戻り値
(0|1)
hostname() hostname()
結果は文字列で、現在Vimが実行されているマシンの名前です。256文字を超えるマシン名は切り捨てられます。
戻り値
(文字列)
iconv({string}, {from}, {to}) iconv()
結果は文字列で、エンコーディング{from}からエンコーディング{to}に変換されたテキスト{string}です。変換に完全に失敗した場合は空文字列が返されます。一部の文字を変換できなかった場合は「?」に置き換えられます。エンコーディング名は、iconv()ライブラリ関数が受け入れることができるものすべてです。":!man 3 iconv"を参照してください。VimはすべてのUnicodeエンコーディングにUTF-8を使用することに注意してください。UCS-2との間の変換は、自動的にUTF-8を使用するように変更されます。NULバイトがあるため、文字列内でUCS-2を使用することはできません。
パラメータ
{string} (string)
{from}string
{to}string
戻り値
(any)
id({expr}) id()
コンテナ型(ListDictBlobPartial)の一意の識別子であるStringを返します。上記の型について、id(v1) ==# id(v2)は、type(v1) == type(v2) && v1 is v2が真である場合にのみ真を返します。v:_null_stringv:_null_listv:_null_dictv:_null_blobは、内部的にNULLポインタとして表現されているため、異なる型で同じid()を持ちます。id()は、コンテナへのポインタの16進数表現(つまり、0x994a40のように)を返しますが、返値の正確な形式に依存することはお勧めしません。
id(no_longer_existing_container)が他のid()と等しくないとは限りません。新しいコンテナは、ガベージコレクションされたコンテナの識別子を再利用する場合があります。
パラメータ
{expr} (any)
戻り値
(any)
indent({lnum}) indent()
結果は数値で、現在のバッファの行{lnum}のインデントです。インデントはスペースでカウントされ、'tabstop'の値が関係します。{lnum}getline()と同じように使用されます。{lnum}が無効な場合は-1が返されます。
パラメータ
{lnum} (integer|string)
戻り値
(integer)
index({object}, {expr} [, {start} [, {ic}]]) index()
{object}内で{expr}を検索し、そのインデックスを返します。ラムダを使用してアイテムを選択する方法については、indexof()を参照してください。
{object}Listの場合、アイテムの値が{expr}と等しい最小のインデックスを返します。自動変換はありません。そのため、文字列 "4" は数値 4 と異なり、数値 4 は浮動小数点数 4.0 と異なります。'ignorecase'の値はここで使用されません。{ic}引数によって示されるように、大文字と小文字が区別されます。
{object}Blobの場合、バイト値が{expr}と等しい最小のインデックスを返します。
{start}が指定されている場合、インデックス{start}のアイテムから検索を開始します(末尾からの相対的なアイテムの場合は負の数も使用できます)。
{ic}が指定されていてTRUEの場合、大文字と小文字を区別しません。それ以外の場合は、大文字と小文字が一致する必要があります。
{expr}{object}に見つからない場合は-1が返されます。例
let idx = index(words, "the")
if index(numbers, 123) >= 0
  " ...
endif
パラメータ
{object} (any)
{expr} (any)
{start} (integer?)
{ic} (boolean?)
戻り値
(any)
indexof({object}, {expr} [, {opts}]) indexof()
{expr}がv:trueである{object}内のアイテムのインデックスを返します。{object}ListまたはBlobである必要があります。
{object}Listの場合、式がv:trueになるまでListの各アイテムに対して{expr}を評価し、このアイテムのインデックスを返します。
{object}Blobの場合、式がv:trueになるまでBlobの各バイトに対して{expr}を評価し、このバイトのインデックスを返します。
{expr}stringまたはFuncrefである必要があります。
{expr}stringの場合:{object}Listの場合、{expr}内ではv:keyが現在のListアイテムのインデックスを持ち、v:valがアイテムの値を持ちます。{object}Blobの場合、{expr}内ではv:keyが現在のバイトのインデックスを持ち、v:valがバイト値を持ちます。
{expr}Funcrefの場合、2つの引数(1. 現在のアイテムのキーまたはインデックス、2. 現在のアイテムの値)を取ります。関数は、アイテムが見つかり、検索を停止する必要がある場合はTRUEを返す必要があります。
オプションの引数{opts}はDictであり、次の項目をサポートします:startidx このインデックスのアイテムから{expr}の評価を開始します。末尾からの相対的なアイテムの場合は負の数も使用できます。すべてのアイテムで{expr}がv:falseを返す場合は-1を返します。例
let l = [#{n: 10}, #{n: 20}, #{n: 30}]
echo indexof(l, "v:val.n == 20")
echo indexof(l, {i, v -> v.n == 30})
echo indexof(l, "v:val.n == 20", #{startidx: 1})
パラメータ
{object} (any)
{expr} (any)
{opts} (table?)
戻り値
(any)
input({prompt} [, {text} [, {completion}]]) input()
パラメータ
{prompt} (string)
{text} (string?)
{completion} (string?)
戻り値
(any)
input({opts}) 結果は文字列で、ユーザーがコマンドラインに入力したものです。{prompt}引数は、プロンプト文字列か、空文字列(プロンプトなし)のいずれかです。プロンプトに'\n'を使用すると、新しい行を開始できます。
2番目の形式では、次のキーを持つ単一の辞書を受け付けます。いずれのキーも省略できます。
キー デフォルト 説明
prompt "" 1番目の形式の{prompt}と同じです。default "" 1番目の形式の{text}と同じです。completion nothing 1番目の形式の{completion}と同じです。cancelreturn "" ダイアログがキャンセルされたときに返される値です。highlight nothing ハイライトハンドラ:Funcref.
:echohlで設定されたハイライトは、プロンプトに使用されます。入力はコマンドラインと同様に、同じ編集コマンドとマッピングを使用して入力されます。input()に入力された行には、個別の履歴があります。例
if input("Coffee or beer? ") == "beer"
  echo "Cheers!"
endif
オプションの{text}引数が存在し、空でない場合、これはユーザーが入力したかのように、デフォルトの返信に使用されます。例
let color = input("Color? ", "white")
オプションの{completion}引数は、入力でサポートされる補完の種類を指定します。これがなければ、補完は実行されません。サポートされる補完の種類は、 "-complete="引数を使用してユーザー定義のコマンドに提供できるものと同じです。詳細については、:command-completionを参照してください。例
let fname = input("File: ", "", "file")
input()-highlight E5400 E5402 オプションのhighlightキーを使用すると、ユーザー入力のハイライトに使用される関数を指定できます。この関数は、ユーザー入力を唯一の引数として受け取り、[hl_start_col, hl_end_col + 1, hl_group]の3つのタプルのリストを返す必要があります。ここで、hl_start_colは最初のハイライトされた列、hl_end_colは最後のハイライトされた列(+ 1!)であり、hl_groupはハイライトに使用される:hiグループです。E5403 E5404 E5405 E5406 hl_start_colとhl_end_col + 1は両方ともマルチバイト文字の先頭を指す必要があり(ハイライトはマルチバイト文字を分割できません)、hl_end_col + 1は入力の長さと等しくてもかまいません。開始列は[0, len(input))の範囲内、終了列は(hl_start_col, len(input)]の範囲内にある必要があり、セクションは、次のhl_start_colが前のhl_end_col以上になるように順序付けられている必要があります。
例(括弧を含む入力を入力してみてください)
highlight RBP1 guibg=Red ctermbg=red
highlight RBP2 guibg=Yellow ctermbg=yellow
highlight RBP3 guibg=Green ctermbg=green
highlight RBP4 guibg=Blue ctermbg=blue
let g:rainbow_levels = 4
function! RainbowParens(cmdline)
  let ret = []
  let i = 0
  let lvl = 0
  while i < len(a:cmdline)
    if a:cmdline[i] is# '('
      call add(ret, [i, i + 1, 'RBP' .. ((lvl % g:rainbow_levels) + 1)])
      let lvl += 1
    elseif a:cmdline[i] is# ')'
      let lvl -= 1
      call add(ret, [i, i + 1, 'RBP' .. ((lvl % g:rainbow_levels) + 1)])
    endif
    let i += 1
  endwhile
  return ret
endfunction
call input({'prompt':'>','highlight':'RainbowParens'})
ハイライト関数は、コマンドラインが再描画される前に、新しい表示入力文字列ごとに少なくとも1回呼び出されます。この関数は、1回のinput()呼び出しの間はピュアであること、つまり同じ入力に対して同じ出力を生成することが期待されているため、出力はメモ化される可能性があります。関数は:silent修飾子のように実行されます。関数がエラーを引き起こすと、現在のinput()呼び出しの間はスキップされます。
コマンドラインにアラビア文字が含まれている場合、ハイライトは無効になります。
注意:この関数は、GUIモードのみで実行されるバージョン(例:Win32 GUI)では、スタートアップファイルで使用しないでください。 注意:input()がマッピング内から呼び出されると、マッピングは文字が入力されたように扱われるため、そのマッピングからの残りの文字が消費されます。これを回避するには、input()の前にinputsave()を使用し、input()の後にinputrestore()を使用します。別の解決策は、:executeまたは:normalを使用するなど、マッピングでさらに文字が続くのを回避することです。
マッピングを使用した例
nmap \x :call GetFoo()<CR>:exe "/" .. Foo<CR>
function GetFoo()
  call inputsave()
  let g:Foo = input("enter search pattern: ")
  call inputrestore()
endfunction
パラメータ
{opts} (table)
戻り値
(any)
inputlist({textlist}) inputlist()
{textlist} は、文字列の リスト でなければなりません。この リスト は、1行につき1つの文字列が表示されます。ユーザーは数値を入力するように求められ、その数値が返されます。コマンドラインでマウスが有効になっている場合('mouse' が "a" または "c" を含む場合)、ユーザーはマウスで項目をクリックして選択することもできます。最初の文字列の場合、0が返されます。最初の項目の上をクリックすると、負の数が返されます。プロンプトをクリックすると、{textlist}の長さより1つ多い数値が返されます。{textlist}のエントリ数が'lines'より少ないことを確認してください。そうでない場合、機能しません。文字列の先頭にエントリ番号を付けることをお勧めします。そして、最初の項目にプロンプトを入れてください。例
        let color = inputlist(['Select color:', '1. red',
                \ '2. green', '3. blue'])
Parameters: ~
  • {textlist} (`string[]`)
Return: ~
  (`any`)
inputrestore() inputrestore()
以前のinputsave()で保存されたタイプアヘッドを復元します。inputsave()が呼び出された回数と同じ回数呼び出す必要があります。ただし、それ以上の回数呼び出しても無害です。復元するものが何もない場合はTRUEを、それ以外の場合はFALSEを返します。
戻り値
(any)
inputsave() inputsave()
タイプアヘッド(マッピングからのものも)を保存し、クリアします。これにより、後続のプロンプトでユーザーからの入力が得られます。プロンプトの後には、対応するinputrestore()を呼び出す必要があります。複数回使用できますが、その場合、inputrestore()の呼び出しも同数必要です。メモリ不足の場合はTRUEを、それ以外の場合はFALSEを返します。
戻り値
(any)
inputsecret({prompt} [, {text}]) inputsecret()
この関数は、input()関数とほぼ同じように機能しますが、2つの例外があります。a) ユーザーの応答はアスタリスク(" * ")のシーケンスとして表示され、エントリが非公開になります。b) ユーザーの応答は入力履歴スタックに記録されません。結果は、ユーザーが発行されたプロンプトに応答してコマンドラインに入力した文字列です。**注意:** コマンドライン補完はサポートされていません。
パラメータ
{prompt} (string)
{text} (string?)
戻り値
(any)
insert({object}, {item} [, {idx}]) insert()
{object}リストまたはBlobの場合、その先頭に{item}を挿入します。
{idx}が指定されている場合、インデックス{idx}を持つ項目の前に{item}を挿入します。{idx}が0の場合、最初の項目の前に挿入されます。これは、{idx}を省略した場合と同じです。負の{idx}も可能です。list-indexを参照してください。-1は最後の項目の直前に挿入します。
結果のリストまたはBlobを返します。例
let mylist = insert([2, 3, 5], 1)
call insert(mylist, 4, -1)
call insert(mylist, 6, len(mylist))
最後の例は、add()でより簡単に実行できます。{item}リストの場合、単一の項目として挿入されることに注意してください。リストを連結するにはextend()を使用します。
パラメータ
{object} (any)
{item} (any)
{idx} (integer?)
戻り値
(any)
interrupt() interrupt()
スクリプトの実行を中断します。ユーザーがCTRL-Cを入力した場合とほぼ同じように機能し、ほとんどのコマンドは実行されず、制御はユーザーに戻ります。これは、たとえばautocommandなど、下位レベルから実行を中止する場合に役立ちます。例
function s:check_typoname(file)
   if fnamemodify(a:file, ':t') == '['
       echomsg 'Maybe typo'
       call interrupt()
   endif
endfunction
au BufWritePre * call s:check_typoname(expand('<amatch>'))
戻り値
(any)
invert({expr}) invert()
ビットごとの反転。引数は数値に変換されます。リスト、辞書、または浮動小数点数の引数はエラーになります。例
let bits = invert(bits)
パラメータ
{expr} (number)
戻り値
(any)
isabsolutepath({path}) isabsolutepath()
結果は、{path}が絶対パスである場合にTRUEである数値です。Unixでは、パスは'/'で始まる場合に絶対パスとみなされます。MS-Windowsでは、オプションのドライブプレフィックスで始まり、'\'または'/'が続く場合に絶対パスとみなされます。UNCパスは常に絶対パスです。例
echo isabsolutepath('/usr/share/')        " 1
echo isabsolutepath('./foobar')                " 0
echo isabsolutepath('C:\Windows')        " 1
echo isabsolutepath('foobar')                " 0
echo isabsolutepath('\\remote\file')        " 1
パラメータ
{path} (string)
戻り値
(0|1)
isdirectory({directory}) isdirectory()
結果は、名前が{directory}であるディレクトリが存在する場合にTRUEである数値です。{directory}が存在しない場合、またはディレクトリでない場合、結果はFALSEです。{directory}は、文字列として使用される任意の式です。
パラメータ
{directory} (string)
戻り値
(0|1)
isinf({expr}) isinf()
{expr}が正の無限大の場合は1、負の無限大の場合は-1、それ以外の場合は0を返します。
echo isinf(1.0 / 0.0)
1
echo isinf(-1.0 / 0.0)
-1
パラメータ
{expr} (number)
戻り値
(1|0|-1)
islocked({expr}) islocked() E786 結果は、{expr}がロックされた変数の名前である場合にTRUEである数値です。文字列引数{expr}は、変数自体ではなく、変数、リスト項目、または辞書エントリの名前でなければなりません!例
let alist = [0, ['a', 'b'], 2, 3]
lockvar 1 alist
echo islocked('alist')                " 1
echo islocked('alist[1]')        " 0
{expr}が存在しない変数の場合は、エラーメッセージが表示されます。存在を確認するにはexists()を使用してください。
パラメータ
{expr} (any)
戻り値
(0|1)
isnan({expr}) isnan()
{expr}が値がNaNの浮動小数点数の場合、TRUEを返します。
echo isnan(0.0 / 0.0)
1
パラメータ
{expr} (number)
戻り値
(0|1)
items({dict}) items()
{dict}のすべてのキーと値のペアを含むリストを返します。各リスト項目は、2つの項目({dict}エントリのキーとこのエントリの値)を含むリストです。リストの順序は任意です。keys()values()も参照してください。例
for [key, value] in items(mydict)
   echo key .. ': ' .. value
endfor
リストまたは文字列の引数もサポートされています。これらの場合、items()はインデックスとそのインデックスの値を含むリストを返します。
パラメータ
{dict} (any)
戻り値
(any)
jobpid({job}) jobpid()
ジョブID{job}のPID(プロセスID)を返します。
パラメータ
{job} (integer)
戻り値
(integer)
jobresize({job}, {width}, {height}) jobresize()
ジョブID{job}の擬似端末ウィンドウを{width}列と{height}行にサイズ変更します。ジョブが"pty":v:trueで開始されていない場合は失敗します。
パラメータ
{job} (integer)
{width} (integer)
{height} (integer)
戻り値
(any)
jobstart({cmd} [, {opts}]) jobstart()
**注:** Luaでは(ptyオプションを使用しない限り)、vim.system()を優先してください。
ジョブとして{cmd}を生成します。{cmd}がリストの場合、直接実行されます('shell'は使用されません)。{cmd}が文字列の場合、次のように'shell'で実行されます。
call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])
(詳細はシェル引用符の解除を参照してください。)
call jobstart('nvim -h', {'on_stdout':{j,d,e->append(line('.'),d)}})
成功した場合はジョブIDを、引数が無効な場合(またはジョブテーブルがいっぱいである場合)は0を、{cmd}[0]または'shell'が実行可能でない場合は-1を返します。返されたジョブIDは、ジョブのstdioストリームを表す有効なチャネルIDです。chansend()(または"rpc"が有効になっている場合はrpcnotify()rpcrequest())を使用してstdinにデータを送信し、chanclose()を使用してジョブを停止せずにストリームを閉じます。
ジョブ制御RPCを参照してください。
**注意:** Windowsでは、{cmd}がリストの場合
cmd[0]は実行可能ファイル(「ビルトイン」ではない)でなければなりません。$PATHにある場合は、拡張子なしで名前で呼び出すことができます。
call jobstart(['ping', 'neovim.io'])
完全パスまたは部分パスである場合、拡張子が必須です。
call jobstart(['System32\ping.exe', 'neovim.io'])
cmd[0]が何らかの形式の"cmd.exe"でない限り、{cmd}はCommandLineToArgvW https://msdn.microsoft.com/bb776391で想定される引用符付き引数の文字列に折り畳まれます。
jobstart-env
ジョブ環境は次のように初期化されます。$NVIMは親Nvimのv:servernameに設定されます。$NVIM_LISTEN_ADDRESSは設定解除されます。$NVIM_LOG_FILEは設定解除されます。$VIMは設定解除されます。$VIMRUNTIMEは設定解除されます。これらはenvオプションで設定できます。
jobstart-options
{opts}は、次のキーを持つ辞書です。clear_env: (boolean) envは、現在の環境をマージする代わりに、ジョブ環境を正確に定義します。cwd: (string, default=|current-directory|) ジョブの作業ディレクトリ。detach: (boolean) ジョブプロセスをデタッチします。Nvimが終了してもキルされません。Nvimの前にプロセスが終了すると、on_exitが呼び出されます。env: (dict) 現在の環境を拡張する(または"clear_env"で置き換える)環境変数名と値のペアのマップ。jobstart-env height: (number) pty端末の高さ。on_exit: (function) ジョブが終了したときに呼び出されるコールバック。on_stdout: (function) ジョブがstdoutデータを出力したときに呼び出されるコールバック。on_stderr: (function) ジョブがstderrデータを出力したときに呼び出されるコールバック。overlapped: (boolean) 子プロセスに渡されるstdioに対してFILE_FLAG_OVERLAPPEDを設定します。MS-Windowsでのみ使用され、他のプラットフォームでは無視されます。pty: (boolean) ジョブを新しい擬似端末に接続し、そのストリームをマスターファイル記述子に接続します。on_stdoutはすべての出力を受信し、on_stderrは無視されます。terminal-start rpc: (boolean) stdioを介してジョブと通信するためにmsgpack-rpcを使用します。その場合、on_stdoutは無視されますが、on_stderrは引き続き使用できます。stderr_buffered: (boolean) on_stderrを呼び出す前に、EOF(ストリームのクローズ)までデータを収集します。channel-buffered stdout_buffered: (boolean) on_stdoutを呼び出す前に、EOF(ストリームのクローズ)までデータを収集します。channel-buffered stdin: (string) ジョブのstdinをチャネルに接続する場合は"pipe"(デフォルト)、stdinを切断する場合は"null"。width: (number) pty端末の幅。
{opts}は、コールバックにself辞書として渡されます。呼び出し側は、アプリケーション固有のデータを渡すために他のキーを設定できます。
返り値
成功した場合はチャネルID
引数が無効な場合は0
{cmd}[0]が実行可能でない場合は-1。 ジョブ制御チャネルmsgpack-rpcも参照してください。
パラメータ
{cmd} (string|string[])
{opts} (table?)
戻り値
(any)
jobstop({id}) jobstop()
ジョブプロセスにSIGTERMを送信してジョブID{id}を停止します。タイムアウト後もプロセスが終了しない場合は、SIGKILLが送信されます。ジョブが終了すると、そのon_exitハンドラー(存在する場合)が呼び出されます。ジョブ制御を参照してください。
有効なジョブIDの場合は1、無効なID(終了または停止したジョブを含む)の場合は0を返します。
パラメータ
{id} (integer)
戻り値
(any)
jobwait({jobs} [, {timeout}]) jobwait()
ジョブとそのon_exitハンドラーが完了するまで待機します。
{jobs} は、待機するジョブIDのリストです。{timeout} は、ミリ秒単位の最大待機時間です。省略された場合、または -1 の場合は、無期限に待ちます。
0 のタイムアウトは、ジョブの状態を確認するために使用できます。
let running = jobwait([{job-id}], 0)[0] == -1
jobwait() の間、{jobs} リストにないジョブのコールバックが呼び出される場合があります。コールバックによって:redraw が呼び出されない限り、画面は再描画されません。
{jobs} と同じ長さの整数のリストを返します。各整数は対応するジョブの状態を表します。ジョブが終了した場合: 終了コード、タイムアウトを超えた場合: -1、ジョブが中断された場合 ( CTRL-C によって): -2、ジョブIDが無効な場合: -3
パラメータ
{jobs} (integer[])
{timeout} (整数?)
戻り値
(any)
join({list} [, {sep}]) join()
{list} 内の項目を1つの文字列に結合します。{sep} が指定されている場合は、項目間に挿入されます。{sep} が省略された場合は、スペース1つが使用されます。{sep} は末尾には追加されません。必要に応じて末尾にも追加してください。
let lines = join(mylist, "\n") .. "\n"
文字列の項目はそのまま使用されます。リスト辞書は、string() と同様に文字列に変換されます。逆関数はsplit()です。
パラメータ
{list}any[]
{sep} (string?)
戻り値
(any)
json_decode({expr}) json_decode()
{expr} をJSONオブジェクトから変換します。readfile() スタイルのリストと通常の文字列の両方を入力として受け入れます。任意のVim値を出力できます。次の場合、msgpack-special-dictを出力します。1. 辞書に重複したキーが含まれる場合。2. 文字列にNULバイトが含まれる場合。NULバイトを含む文字列が辞書のキーだった場合、辞書と文字列の2つの特別な辞書が出力されます。
注記: この関数は、入力を常にUTF-8として扱います。JSON標準では、少数のエンコーディングしか許可されておらず、その中でUTF-8は推奨され、サポートが必須の唯一のエンコーディングです。UTF-8以外の文字はエラーになります。
パラメータ
{expr} (any)
戻り値
(any)
json_encode({expr}) json_encode()
{expr} をJSON文字列に変換します。msgpack-special-dict を入力として受け入れます。Funcref、非文字列キーを持つマッピング(msgpack-special-dictとして作成できます)、自己参照コンテナを持つ値、UTF-8以外の文字を含む文字列、サロゲートペア用に予約されているコードポイントを含む擬似UTF-8文字列(このような文字列は無効なUTF-8文字列です)は変換しません。印刷できない文字は "\u1234" エスケープまたは "\t" のような特殊エスケープに変換され、それ以外はそのままダンプされます。Blobは個々のバイトの配列に変換されます。
パラメータ
{expr} (any)
戻り値
(any)
keys({dict}) keys()
{dict} のすべてのキーを含むリストを返します。リストの順序は任意です。items()values() も参照してください。
パラメータ
{dict} (table)
戻り値
(any)
keytrans({string}) keytrans()
:mapで使用できる形式にキーの内部バイト表現を変換します。例:
let xx = "\<C-Home>"
echo keytrans(xx)
<C-Home>
パラメータ
{string} (string)
戻り値
(any)
len({expr}) len() E701 結果は数値で、引数の長さを表します。{expr} が文字列または数値の場合、strlen() と同様にバイト単位の長さが使用されます。{expr}リストの場合、リスト内の項目数が返されます。{expr}Blobの場合、バイト数が返されます。{expr}辞書の場合、辞書のエントリ数が返されます。それ以外の場合はエラーが発生し、0が返されます。
パラメータ
{expr} (any)
戻り値
(any)
libcall({libname}, {funcname}, {argument}) libcall() E364 E368 シングル引数{argument}を使用して、ランタイムライブラリ{libname}内の関数{funcname}を呼び出します。これは、Vimで使用するために特別に作成したライブラリ内の関数を呼び出すのに役立ちます。引数は1つしか使用できないため、標準ライブラリ関数の呼び出しは非常に制限されます。結果は、関数によって返される文字列です。関数がNULLを返す場合、Vimには空の文字列 "" として表示されます。関数が数値を返す場合は、libcallnr() を使用してください!{argument} が数値の場合、intとして関数に渡されます。{argument} が文字列の場合、ヌルターミネイトされた文字列として渡されます。
libcall() を使用すると、プログラムを再コンパイルせずに、独自の「プラグイン」拡張機能をVimに記述できます。システム関数を呼び出す手段ではありません!そうしようとすると、Vimがクラッシュする可能性が非常に高くなります。
Win32の場合、記述する関数はDLLに配置し、通常のC呼び出し規約(WindowsシステムDLLで使用されるPascalではなく)を使用する必要があります。関数は、文字ポインタまたは長い整数のいずれかを正確に1つのパラメータとして受け入れ、文字ポインタまたはNULLを返す必要があります。返される文字ポインタは、関数が返された後も有効なままになるメモリを指している必要があります(例:DLL内の静的データ)。割り当てられたメモリを指している場合、そのメモリはリークします。関数内の静的バッファを使用すると動作するはずです。DLLがアンロードされるときに解放されます。
警告: 関数が無効なポインタを返す場合、Vimがクラッシュする可能性があります!関数が数値を返す場合も同様です。Vimはそれをポインタと考えているためです。Win32システムの場合、{libname} は ".DLL" サフィックスを除いたDLLのファイル名である必要があります。DLLが通常の場所になければ、完全パスが必要です。Unixの場合: 独自のプラグインをコンパイルする場合は、オブジェクトコードを位置非依存(「PIC」)としてコンパイルする必要があることに注意してください。例
        echo libcall("libc.so", "getenv", "HOME")
Parameters: ~
  • {libname} (`string`)
  • {funcname} (`string`)
  • {argument} (`any`)
Return: ~
  (`any`)
libcallnr({libname}, {funcname}, {argument}) libcallnr()
libcall() と同様ですが、文字列ではなくintを返す関数に使用されます。例
echo libcallnr("/usr/lib/libc.so", "getpid", "")
call libcallnr("libc.so", "printf", "Hello World!\n")
call libcallnr("libc.so", "sleep", 10)
パラメータ
{libname} (string)
{funcname} (string)
{argument} (any)
戻り値
(any)
line({expr} [, {winid}]) line()
受け入れられる位置についてはgetpos()を参照してください。
列番号を取得するにはcol()を使用します。両方を取得するにはgetpos()を使用します。
オプションの{winid}引数を使用すると、現在のウィンドウの代わりにそのウィンドウの値が取得されます。
{expr}{winid} の値が無効な場合は0を返します。
echo line(".")                        " line number of the cursor
echo line(".", winid)                " idem, in window "winid"
echo line("'t")                        " line number of mark t
echo line("'" .. marker)        " line number of mark marker
ファイルをオープンするときに最後に知られている位置にジャンプするにはlast-position-jumpを参照してください。
パラメータ
{expr} (string|integer[])
{winid} (integer?)
戻り値
(integer)
line2byte({lnum}) line2byte()
{lnum}のバッファの先頭からのバイト数を返します。現在のバッファの'fileformat'オプションに応じて、行末文字が含まれます。最初の行は1を返します。UTF-8エンコーディングが使用され、'fileencoding'は無視されます。これは、最後の行のすぐ下の行のバイト数も取得するために使用できます。
echo line2byte(line("$") + 1)
これはバッファサイズプラス1です。'fileencoding'が空の場合、ファイルサイズプラス1です。{lnum}getline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。byte2line()go:gotoも参照してください。
パラメータ
{lnum} (integer)
戻り値
(integer)
lispindent({lnum}) lispindent()
'lisp'と同様に、lispインデントルールに従って行{lnum}のインデント量を取得します。インデントはスペースでカウントされ、'tabstop'の値が関連します。{lnum}getline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。
パラメータ
{lnum} (integer)
戻り値
(any)
list2blob({list}) list2blob()
{list}内のすべての数値を連結したBlobを返します。例
echo list2blob([1, 2, 3, 4])        " returns 0z01020304
echo list2blob([])                " returns 0z
エラーが発生した場合は空のBlobを返します。数値のいずれかが負の数または255を超える場合、エラーE1239が発生します。
blob2list()は逆の処理を行います。
パラメータ
{list}any[]
戻り値
(any)
list2str({list} [, {utf8}]) list2str()
{list}内の各数値を文字列に変換し、すべて連結します。例
echo list2str([32])                " returns " "
echo list2str([65, 66, 67])        " returns "ABC"
同じことは(ゆっくりと)次のように行うことができます。
echo join(map(list, {nr, val -> nr2char(val)}), '')
str2list()は逆の処理を行います。
UTF-8エンコーディングは常に使用され、{utf8}オプションは効果がなく、後方互換性のためだけに存在します。UTF-8を使用すると、合成文字は期待通りに機能します。
echo list2str([97, 769])        " returns "á"
エラーが発生した場合は空の文字列を返します。
パラメータ
{list}any[]
{utf8} (boolean?)
戻り値
(any)
localtime() localtime()
1970年1月1日からの秒数として測定した現在時刻を返します。strftime()strptime()getftime()も参照してください。
戻り値
(any)
log({expr}) log()
Floatとして{expr}の自然対数(底e)を返します。{expr}は、(0, inf]の範囲内のFloatまたはNumberとして評価する必要があります。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo log(10)
2.302585
echo log(exp(5))
5.0
パラメータ
{expr} (number)
戻り値
(any)
log10({expr}) log10()
Float {expr}の底10の対数をFloatとして返します。{expr}FloatまたはNumberとして評価する必要があります。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo log10(1000)
3.0
echo log10(0.01)
-2.0
パラメータ
{expr} (number)
戻り値
(any)
luaeval({expr} [, {expr}]) luaeval()
Lua式{expr}を評価し、Vimデータ構造に変換された結果を返します。詳細については、lua-evalを参照してください。
パラメータ
{expr} (string)
{expr1} (any[]?)
戻り値
(any)
map({expr1}, {expr2}) map()
{expr1} は、ListStringBlob、またはDictionary でなければなりません。{expr1}List または Dictionary の場合、{expr1} 内の各アイテムは、{expr2} の評価結果で置き換えられます。Blob の場合、各バイトが置き換えられます。String の場合、合成文字を含む各文字が置き換えられます。アイテムの型が変更される場合は、mapnew() を使用して新しい List または Dictionary を作成することを検討してください。
{expr2} は、String または Funcref でなければなりません。
{expr2}String の場合、{expr2} 内の v:val には、現在のアイテムの値が格納されます。Dictionary の場合、v:key には現在のアイテムのキーが、List の場合、v:key には現在のアイテムのインデックスが格納されます。Blob の場合、v:key には現在のバイトのインデックスが、String の場合、v:key には現在の文字のインデックスが格納されます。例
call map(mylist, '"> " .. v:val .. " <"')
これは "mylist" の各アイテムの前に "> " を、後ろに " <" を追加します。
{expr2} は式の結果であり、その後再び式として使用されることに注意してください。バックスラッシュを二重にする必要がないように、リテラル文字列 を使用するのが良い場合が多いです。ただし、二重引用符は二重にする必要があります。
{expr2}Funcref の場合、2 つの引数(1. 現在のアイテムのキーまたはインデックス、2. 現在のアイテムの値)で呼び出されます。関数はアイテムの新しい値を返す必要があります。「key-value」で各値を変更する例
func KeyValue(key, val)
  return a:key .. '-' .. a:val
endfunc
call map(myDict, function('KeyValue'))
ラムダ式を使用する方が短くなります。
call map(myDict, {key, val -> key .. '-' .. val})
"val"を使用しない場合は、省略できます。
call map(myDict, {key -> 'item: ' .. key})
"key" を使用しない場合は、短い名前を使用できます。
call map(myDict, {_, val -> 'item: ' .. val})
ListDictionary の操作はインプレースで行われます。変更されないようにしたい場合は、最初にコピーを作成してください。
let tlist = map(copy(mylist), ' v:val .. "\t"')
フィルタリングされたリストまたは辞書である{expr1}、または新しいBLOBまたは文字列を返します。{expr2}の評価中にエラーが発生した場合、{expr1}のそれ以降の要素は処理されません。{expr2}が関数参照の場合、関数の内部エラーは無視されます。"abort"フラグで定義されていない限り。
パラメータ
{expr1} (string|table|any[])
{expr2}string|function
戻り値
(any)
maparg({name} [, {mode} [, {abbr} [, {dict}]]]) maparg()
{dict} が省略されているか 0 の場合: モード {mode} でのマッピング {name} の右辺を返します。返される String は、":map" コマンド一覧の出力を含む特殊文字が変換されています。{dict} が TRUE の場合、辞書が返されます(下記参照)。すべてマッピングのリストを取得するには、maplist() を参照してください。
{name} にマッピングがない場合、{dict} が FALSE の場合は空の String が、それ以外の場合は空の Dict が返されます。{name} のマッピングが空の場合、"" が返されます。
{name} には、":map" コマンドのように特殊なキー名を含めることができます。
{mode} は、次のいずれかの文字列になります。"n" 通常 "v" Visual(Select を含む)"o" オペレータ保留 "i" Insert "c" コマンドライン "s" Select "x" Visual "l" langmap language-mapping "t" ターミナル "" 通常、Visual、およびオペレータ保留。{mode} が省略された場合、"" のモードが使用されます。
{abbr} が存在し、TRUE の場合、マッピングではなく省略形を使用します。
{dict} が存在し、TRUE の場合、マッピングのすべての情報を次の項目を含む辞書を返します。mapping-dict
"lhs" 入力されるマッピングの {lhs} "lhsraw" 生バイトとしてのマッピングの {lhs} "lhsrawalt" 生バイトとしてのマッピングの {lhs}(代替形式)"lhsraw" と異なる場合にのみ存在する "rhs" 入力されたマッピングの {rhs} "callback" RHS がこのように定義されている場合の Lua 関数 "silent" :map-silent マッピングの場合は 1、それ以外の場合は 0 "noremap" マッピングの {rhs} が再マッピングできない場合 1 "script" <script> でマッピングが定義されている場合 1 "expr" 式マッピングの場合 1 (:map-<expr>) "buffer" バッファローカルマッピングの場合 1 (:map-local) "mode" マッピングが定義されているモード。上記のモードに加えて、次の文字が使用されます。" " 通常、Visual、およびオペレータ保留 "!" Insert とコマンドラインモード (mapmode-ic) "sid" <sid> マッピングに使用されるスクリプトローカルID (<SID>)。特殊なコンテキストの場合は負の数 "scriptversion" スクリプトのバージョン、常に 1 "lnum" "sid" の行番号、不明な場合は 0 "nowait" より長く、他のマッピングを待たない (:map-<nowait>) "abbr" これが省略形である場合 True "mode_bits" Nvim の内部的な "mode" のバイナリ表現。mapset() はこれを無視します。"mode" のみが使用されます。maplist() を参照して使用方法の例を確認してください。値は src/nvim/state_defs.h から取得され、将来変更される可能性があります。
この辞書を使用して、mapset() でマッピングを復元できます。
現在のバッファにローカルなマッピングが最初にチェックされ、次にグローバルマッピングがチェックされます。この関数は、キーが既にマッピングされている場合でもキーをマッピングし、元のマッピングも実行できるようにするために使用できます。スケッチ
exe 'nnoremap <Tab> ==' .. maparg('<Tab>', 'n')
パラメータ
{name} (文字列)
{mode}string?
{abbr} (boolean?)
{dict} (false?)
戻り値
(文字列)
mapcheck({name} [, {mode} [, {abbr}]]) mapcheck()
モード {mode}{name} と一致するマッピングが存在するかどうかをチェックします。maparg() を参照して、{mode}{name} の特殊な名前を確認してください。{abbr} が存在し、0 以外の場合、マッピングではなく省略形を使用します。一致は、{name} で始まるマッピングと、{name} の先頭と等しいマッピングで行われます。
マッピング "a" "ab" "abc" に一致
mapcheck("a") yes yes yes mapcheck("abc") yes yes yes mapcheck("ax") yes no no mapcheck("b") no no no
maparg() との違いは、mapcheck() は {name} と一致するマッピングを見つけますが、maparg() は {name} と完全に一致するマッピングのみを見つけることです。{name} で始まるマッピングがない場合、空の String が返されます。1 つ存在する場合は、そのマッピングの RHS が返されます。{name} で始まるマッピングが複数ある場合、それらのいずれかの RHS が返されます。RHS が空の場合は、"" になります。現在のバッファにローカルなマッピングが最初にチェックされ、次にグローバルマッピングがチェックされます。この関数は、曖昧になることなくマッピングを追加できるかどうかを確認するために使用できます。例
if mapcheck("_vv") == ""
   map _vv :set guifont=7x13<CR>
endif
これは、"_v" または "_vvv" のマッピングが既に存在する場合に "_vv" マッピングの追加を回避します。
パラメータ
{name} (文字列)
{mode}string?
{abbr} (boolean?)
戻り値
(any)
maplist([{abbr}]) maplist()
すべてマッピングの List を返します。各 List アイテムは maparg() で返されるものと同じ Dict です。mapping-dict を参照してください。{abbr} が存在し、TRUE の場合、マッピングではなく省略形を使用します。
"MultiMatch" を rhs に持つすべてマッピングを表示する例
echo maplist()->filter({_, m ->
        \ match(get(m, 'rhs', ''), 'MultiMatch') >= 0
        \ })
特定の :map-modes のマッピングを見つけるのは難しい場合があります。mapping-dict の "mode_bits" はこれを簡素化できます。たとえば、通常、挿入、またはコマンドラインモードの mode_bits は 0x19 です。これらのモードで使用可能なすべてマッピングを見つけるには、次の操作を実行できます。
let saved_maps = []
for m in maplist()
    if and(m.mode_bits, 0x19) != 0
        eval saved_maps->add(m)
    endif
endfor
echo saved_maps->mapnew({_, m -> m.lhs})
mode_bits の値は Nvim の src/nvim/state_defs.h ファイルで定義されており、:map-commands と "maplist()" を使用して実行時に検出できます。例
omap xyzzy <Nop>
let op_bit = maplist()->filter(
    \ {_, m -> m.lhs == 'xyzzy'})[0].mode_bits
ounmap xyzzy
echo printf("Operator-pending mode bit: 0x%x", op_bit)
パラメータ
{abbr} (0|1?)
戻り値
(table[])
mapnew({expr1}, {expr2}) mapnew()
map() と似ていますが、{expr1} のアイテムを置き換える代わりに、新しい List または Dictionary が作成され、返されます。{expr1} は変更されません。アイテムは {expr2} で変更できますが、変更したくない場合は、最初に deepcopy() を使用してください。
パラメータ
{expr1} (any)
{expr2} (any)
戻り値
(any)
mapset({mode}, {abbr}, {dict}) mapset()
mapset({dict}) maparg() または maplist() で返された可能性のある辞書からマッピングを復元します。dict.buffer が true の場合のバッファマッピングは、現在バッファに設定されます。呼び出し元は、目的のバッファが現在バッファであることを確認する必要があります。この機能により、マッピングをあるバッファから別のバッファにコピーできます。dict.mode の値は、'!'、' '、"nox"、または 'v' のモード値のように、複数のモードをカバーする単一のマッピングを復元する可能性があります。E1276
最初の形式では、{mode}{abbr}maparg() の呼び出しと同じである必要があります。E460 {mode} は、{dict} の "mode" エントリではなく、マッピングが設定されるモードを定義するために使用されます。マッピングの保存と復元の例
let save_map = maparg('K', 'n', 0, 1)
nnoremap K somethingelse
" ...
call mapset('n', 0, save_map)
:map! などで複数のモードのマッピングを置き換える場合は、異なる可能性がある場合、すべてモードのマッピングを保存/復元する必要があることに注意してください。
2 番目の形式では、{dict} を唯一の引数として、mode と abbr は dict から取得されます。例
let save_maps = maplist()->filter(
                        \ {_, m -> m.lhs == 'K'})
nnoremap K somethingelse
cnoremap K somethingelse2
" ...
unmap K
for d in save_maps
    call mapset(d)
endfor
パラメータ
{dict} (boolean)
戻り値
(any)
match({expr}, {pat} [, {start} [, {count}]]) match()
{expr}List の場合、{pat} が一致する最初のアイテムのインデックスを返します。各アイテムは String として使用され、ListsDictionaries はエコーされたものとして使用されます。
それ以外の場合は、{expr} は String として使用されます。結果は、{pat} が一致する {expr} 内のインデックス(バイトオフセット)を示す数値です。
最初の文字または List アイテムでの一致は 0 を返します。一致がない場合は -1 を返します。
部分一致を取得するには、matchlist() を参照してください。例
echo match("testing", "ing")        " results in 4
echo match([1, 'x'], '\a')        " results in 1
{pat} の使用方法については、string-match を参照してください。strpbrk()
Vim には strpbrk() 関数はありません。ただし、次のように実行できます。
let sepidx = match(line, '[.,;: \t]')
strcasestr()
Vim には strcasestr() 関数はありません。ただし、大文字と小文字を区別しないようにパターンに "\c" を追加できます。
let idx = match(haystack, '\cneedle')
{start} が指定されている場合、String のバイトインデックス {start} または List のアイテム {start} から検索が開始されます。ただし、結果は最初の文字/アイテムから数えたインデックスです。例
echo match("testing", "ing", 2)
結果は再び "4" です。
echo match("testing", "ing", 4)
結果は再び "4" です。
echo match("testing", "t", 2)
結果は "3" です。String の場合、{start} > 0 の場合、文字列は {start} バイト後に開始されるようになります。そのため、"^" は {start} で一致します。{count} が指定されている場合を除きます。その場合、{start} バイトより前のマッチは無視されます(これは後方互換性を維持するためにやや複雑です)。String の場合、{start} < 0 の場合、0 に設定されます。リストの場合、インデックスは末尾から数えられます。{start} が範囲外の場合(String の場合 {start} > strlen({expr})、List の場合 {start} > len({expr}))、-1 が返されます。
{count} が指定されている場合、{count} 番目のマッチを使用します。文字列内でマッチが見つかった場合、次のマッチの検索は1文字先から開始されます。そのため、この例では1になります。
echo match("testing", "..", 0, 2)
リストでは、検索は次の項目で継続されます。{count} が追加されると {start} の動作が変わることに注意してください(上記参照)。
マッチパターン
パターンで許容されるパターンについては、そちらを参照してください。'ignorecase' オプションを使用して、パターンの大文字と小文字の区別を設定します。'smartcase' は使用されません。マッチングは常に、'magic' が設定され、'cpoptions' が空であるかのように実行されます。先頭でのマッチが優先されるため、パターンで "*" (任意の数のマッチ)を使用している場合、テキストのさらに下にある複数のマッチではなく、先頭でゼロマッチが見つかる傾向があります。
パラメータ
{expr} (string|any[])
{パターン} (文字列)
{start} (integer?)
{count}integer?
戻り値
(any)
matchadd() E798 E799 E801 E957 matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]]) 現在のウィンドウ(「マッチ」)で強調表示するパターンを定義します。{group} で強調表示されます。matchdelete() を使用してマッチを削除するために使用できる識別番号(ID)を返します。ID はウィンドウにバインドされます。大文字と小文字の区別、およびマジックは、{pattern} で大文字と小文字の区別またはマジックが明示的に上書きされない限り、有効です。'magic''smartcase''ignorecase' オプションは使用されません。「Conceal」値は特殊で、マッチが隠蔽されるようになります。
オプションの {priority} 引数は、マッチに優先順位を割り当てます。優先順位の高いマッチは、優先順位の低いマッチの強調表示を上書きします。優先順位は整数で指定します(負の数も例外ではありません)。{priority} 引数が指定されていない場合、デフォルトの優先順位は10です。'hlsearch' の優先順位はゼロであるため、優先順位がゼロより大きいすべてのマッチはそれを上書きします。構文強調表示('syntax'を参照)は別々のメカニズムであり、選択した優先順位に関係なく、マッチは常に構文強調表示を上書きします。
オプションの {id} 引数を使用すると、特定のマッチIDを要求できます。指定したIDが既に使用されている場合、エラーメッセージが表示され、マッチは追加されません。IDは正の整数で指定します(ゼロは除く)。ID 1、2、3は、それぞれ:match:2match:3matchのために予約されています。3はmatchparenプラグインで使用するために予約されています。{id}引数が指定されていないか-1の場合、matchadd()は自動的に空きID(少なくとも1000)を選択します。
オプションの {dict} 引数を使用すると、さらにカスタム値を指定できます。現在、これはhl-Concealで強調表示されたマッチに対して表示されるマッチ固有の隠蔽文字を指定するために使用されます。辞書には次のメンバーを含めることができます。
conceal マッチの代わりに表示する特殊文字(hl-Concealで強調表示されたマッチのみ、:syn-ccharを参照) window 現在のウィンドウの代わりに、この番号またはウィンドウIDのウィンドウを使用します。
:matchコマンドの場合とは異なり、マッチの数は制限されません。
エラーの場合は-1を返します。
highlight MyGroup ctermbg=green guibg=green
let m = matchadd("MyGroup", "TODO")
パターンの削除
call matchdelete(m)
matchadd():matchで定義されたマッチのリストは、getmatches()から取得できます。すべてのマッチは、clearmatches()によって1つの操作で削除できます。
パラメータ
{group} (integer|string)
{pattern} (文字列)
{priority} (integer?)
{id} (integer?)
{dict} (string?)
戻り値
(any)
matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]]) matchaddpos() matchadd() と同じですが、パターンではなく位置のリスト {pos} を必要とします。このコマンドは、正規表現を処理せず、画面の再描画にバッファの行境界を設定するため、matchadd() より高速です。これは、例えばマッチする括弧を強調表示するために、高速なマッチの追加と削除が必要な場合に使用することを目的としています。E5030 E5031 {pos} は位置のリストです。各位置は次のいずれかになります。
数値。この行全体が強調表示されます。最初の行の番号は1です。
1つの数値を含むリスト(例:[23])。この番号の行全体が強調表示されます。
2つの数値を含むリスト(例:[23, 11])。最初の数値は行番号、2番目の数値は列番号です(最初の列は1、値はcol()が返すバイトインデックスに対応する必要があります)。この位置の文字が強調表示されます。
3つの数値を含むリスト(例:[23, 11, 3])。上記と同じですが、3番目の数値は強調表示の長さをバイト単位で示します。
行番号がゼロまたは負の数値のエントリ、列番号と長さが負の数値のエントリは、静かに無視されます。
エラーの場合は-1を返します。
highlight MyGroup ctermbg=green guibg=green
let m = matchaddpos("MyGroup", [[23, 24], 34])
パターンの削除
call matchdelete(m)
matchaddpos()で追加されたマッチは、getmatches()によって返されます。
パラメータ
{group} (integer|string)
{pos} (any[])
{priority} (integer?)
{id} (integer?)
{dict} (string?)
戻り値
(any)
matcharg({nr}) matcharg()
:match:2match、または:3matchコマンドで設定された{nr}マッチ項目を選択します。2つの要素を含むリストを返します。使用される強調表示グループの名前、使用されるパターン。{nr}が1、2、または3でない場合、空のリストを返します。マッチ項目が設定されていない場合は['', '']を返します。これは:matchを保存して復元するのに役立ちます。:matchコマンドを使用した強調表示マッチは、3つのマッチに制限されています。matchadd()にはこの制限はありません。
パラメータ
{nr} (integer)
戻り値
(any)
matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}]) matchbufline()
バッファ{buf}{lnum}から{end}までの行で{pat}が一致するマッチのリストを返します。
{lnum}{end}は、行番号、または{buf}の最後の行を参照する文字列"$"のいずれかになります。
{dict}引数は、次の項目をサポートします。submatches サブマッチ情報を含める(/\()
各マッチについて、次の項目を含むDictが返されます。byteidx マッチの開始バイトインデックス lnum マッチがある行番号 text 一致した文字列 1つの行に複数のマッチが存在する可能性があることに注意してください。
この関数は、ロード済みのバッファでのみ機能します。必要に応じて、最初にbufload()を呼び出してください。
いくつかのオプション設定がパターンに及ぼす影響については、マッチパターンを参照してください。
{buf}が有効なバッファではない場合、バッファがロードされていない場合、または{lnum}または{end}が無効な場合、エラーが発生し、空のリストが返されます。
" Assuming line 3 in buffer 5 contains "a"
echo matchbufline(5, '\<\k\+\>', 3, 3)
[{'lnum': 3, 'byteidx': 0, 'text': 'a'}]
" Assuming line 4 in buffer 10 contains "tik tok"
echo matchbufline(10, '\<\k\+\>', 1, 4)
[{'lnum': 4, 'byteidx': 0, 'text': 'tik'}, {'lnum': 4, 'byteidx': 4, 'text': 'tok'}]
{submatch}が存在し、v:trueの場合、"\1"、"\2"などのサブマッチも返されます。例
" Assuming line 2 in buffer 2 contains "acd"
echo matchbufline(2, '\(a\)\?\(b\)\?\(c\)\?\(.*\)', 2, 2
                            \ {'submatches': v:true})
[{'lnum': 2, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}] "submatches"リストは常に9つの項目を含みます。サブマッチが見つからない場合、そのサブマッチには空の文字列が返されます。
パラメータ
{buf} (string|integer)
{パターン} (文字列)
{lnum} (string|integer)
{end_} (string|integer)
{dict} (table?)
戻り値
(any)
matchdelete({id} [, {win}]) matchdelete() E802 E803 matchadd()または:matchコマンドのいずれかで以前に定義されたID{id}のマッチを削除します。成功した場合は0、それ以外の場合は-1を返します。matchadd()の例を参照してください。すべてのマッチは、clearmatches()によって1つの操作で削除できます。{win}が指定されている場合、現在のウィンドウの代わりに、この番号またはウィンドウIDのウィンドウを使用します。
パラメータ
{id} (integer)
{win} (integer?)
戻り値
(any)
matchend({expr}, {pat} [, {start} [, {count}]]) matchend()
match()と同じですが、マッチの後の最初の文字のインデックスを返します。例
echo matchend("testing", "ing")
"7"になります。strspn() strcspn() Vimにはstrspn()またはstrcspn()関数はありませんが、matchend()で実行できます。
let span = matchend(line, '[a-zA-Z]')
let span = matchend(line, '[^a-zA-Z]')
マッチがない場合は-1が返されます。
指定された場合、{start}match()の場合と同じ意味を持ちます。
echo matchend("testing", "ing", 2)
"7"になります。
echo matchend("testing", "ing", 5)
結果は"-1"です。{expr}リストの場合、結果はmatch()と等しくなります。
パラメータ
{expr} (any)
{パターン} (文字列)
{start} (integer?)
{count}integer?
戻り値
(any)
matchfuzzy({list}, {str} [, {dict}]) matchfuzzy()
{list}が文字列のリストの場合、{str}とあいまい一致する{list}内のすべての文字列を含むリストを返します。返されたリスト内の文字列は、一致スコアに基づいてソートされます。
オプションの{dict}引数は、常に次の項目をサポートします。matchseq この項目が存在する場合、指定された順序で{str}内の文字を含むマッチのみを返します。limit 返される{list}内のマッチの最大数。ゼロは制限なしを意味します。
{list}が辞書型のリストである場合、オプションの{dict}引数は以下の追加項目をサポートします。key {str}に対してファジーマッチを行う項目のキー。この項目の値は文字列である必要があります。text_cb {list}内の各項目に対してファジーマッチを行うテキストを取得するために呼び出されるFuncref。辞書型の項目を引数として受け取り、その項目のファジーマッチに使用するテキストを返す必要があります。
{str}はリテラル文字列として扱われ、正規表現マッチはサポートされません。サポートされる{str}の最大長は256です。
{str}に空白で区切られた複数の単語が含まれる場合、すべての単語を含む文字列のリストが返されます。
一致する文字列がない場合、またはエラーが発生した場合、空のリストが返されます。{str}の長さが256を超える場合も、空のリストが返されます。
{limit}が指定されている場合、matchfuzzy()は{list}内で最大この数のマッチを見つけ、ソートされた順序で返します。
ファジーマッチングを参照して、ファジーマッチング文字列の詳細を確認してください。
echo matchfuzzy(["clay", "crow"], "cay")
結果は["clay"]となります。
echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
結果は"ndl"にファジーマッチするバッファ名のリストとなります。
echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
結果は"ndl"にファジーマッチするバッファ名のバッファ情報辞書のリストとなります。
echo getbufinfo()->matchfuzzy("spl",
                             \ {'text_cb' : {v -> v.name}})
結果は"spl"にファジーマッチするバッファ名のバッファ情報辞書のリストとなります。
echo v:oldfiles->matchfuzzy("test")
結果は"test"にファジーマッチするファイル名のリストとなります。
let l = readfile("buffer.c")->matchfuzzy("str")
結果は"buffer.c"内の"str"にファジーマッチする行のリストとなります。
echo ['one two', 'two one']->matchfuzzy('two one')
結果は['two one', 'one two']となります。
echo ['one two', 'two one']->matchfuzzy('two one',
                             \ {'matchseq': 1})
結果は['two one']となります。
パラメータ
{list}any[]
{str} (string)
{dict} (string?)
戻り値
(any)
matchfuzzypos({list}, {str} [, {dict}]) matchfuzzypos()
matchfuzzy()と同じですが、マッチした文字列のリスト、{str}内の文字がマッチする文字位置のリスト、およびマッチングスコアのリストを返します。byteidx()を使用して、文字位置をバイト位置に変換できます。
{str}が文字列内で複数回マッチする場合、最良のマッチの位置のみが返されます。
一致する文字列がない場合、またはエラーが発生した場合、空のリストを3つ含むリストが返されます。
echo matchfuzzypos(['testing'], 'tsg')
結果は[["testing"], [[0, 2, 6]], [99]]となります。
echo matchfuzzypos(['clay', 'lacy'], 'la')
結果は[["lacy", "clay"], [[0, 1], [1, 2]], [153, 133]]となります。
echo [{'text': 'hello', 'id' : 10}]
        \ ->matchfuzzypos('ll', {'key' : 'text'})
結果は[[{"id": 10, "text": "hello"}], [[2, 3]], [127]]となります。
パラメータ
{list}any[]
{str} (string)
{dict} (string?)
戻り値
(any)
matchlist({expr}, {pat} [, {start} [, {count}]]) matchlist()
match()と同じですが、Listを返します。リストの最初の項目はマッチした文字列で、matchstr()が返すものと同じです。以降の項目はサブマッチで、:substituteの"\1"、"\2"などと同じです。オプションのサブマッチがマッチしなかった場合は、空文字列が使用されます。例
echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
結果は: ['acd', 'a', '', 'c', 'd', '', '', '', '', ''] マッチがない場合は空のリストが返されます。
Listを渡すこともできますが、あまり役に立ちません。
パラメータ
{expr} (any)
{パターン} (文字列)
{start} (integer?)
{count}integer?
戻り値
(any)
matchstr({expr}, {pat} [, {start} [, {count}]]) matchstr()
match()と同じですが、マッチした文字列を返します。例
echo matchstr("testing", "ing")
結果は"ing"です。マッチがない場合は""が返されます。{start}は、指定されている場合、match()と同じ意味を持ちます。
echo matchstr("testing", "ing", 2)
結果は"ing"です。
echo matchstr("testing", "ing", 5)
結果は""です。{expr}Listの場合、マッチした項目が返されます。型は変更されず、必ずしもStringではありません。
パラメータ
{expr} (any)
{パターン} (文字列)
{start} (integer?)
{count}integer?
戻り値
(any)
matchstrlist({list}, {pat} [, {dict}]) matchstrlist()
{list}内で{pat}がマッチするマッチのListを返します。{list}は文字列のListです。{pat}{list}内の各文字列に対してマッチされます。
{dict}引数は、次の項目をサポートします。submatches サブマッチ情報を含める(/\()
各マッチに対して、以下の項目を含むDictが返されます。byteidx マッチの開始バイトインデックス。idx マッチの{list}内のインデックス。text マッチした文字列。submatches サブマッチのList。"submatches"が{dict}内でv:trueに設定されている場合のみ存在します。
いくつかのオプション設定がパターンに及ぼす影響については、マッチパターンを参照してください。
echo matchstrlist(['tik tok'], '\<\k\+\>')
[{'idx': 0, 'byteidx': 0, 'text': 'tik'}, {'idx': 0, 'byteidx': 4, 'text': 'tok'}]
echo matchstrlist(['a', 'b'], '\<\k\+\>')
[{'idx': 0, 'byteidx': 0, 'text': 'a'}, {'idx': 1, 'byteidx': 0, 'text': 'b'}]
"submatches"が存在し、v:trueである場合、"\1"、"\2"などのサブマッチも返されます。例
echo matchstrlist(['acd'], '\(a\)\?\(b\)\?\(c\)\?\(.*\)',
                            \ #{submatches: v:true})
[{'idx': 0, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}] "submatches" Listは常に9つの項目を含みます。サブマッチが見つからない場合は、そのサブマッチに対して空文字列が返されます。
パラメータ
{list} (string[])
{パターン} (文字列)
{dict} (table?)
戻り値
(any)
matchstrpos({expr}, {pat} [, {start} [, {count}]]) matchstrpos()
matchstr()と同じですが、マッチした文字列、マッチの開始位置、および終了位置を返します。例
echo matchstrpos("testing", "ing")
結果は["ing", 4, 7]です。マッチがない場合は ["", -1, -1]が返されます。{start}は、指定されている場合、match()と同じ意味を持ちます。
echo matchstrpos("testing", "ing", 2)
結果は["ing", 4, 7]です。
echo matchstrpos("testing", "ing", 5)
結果は ["", -1, -1]です。{expr}Listの場合、マッチした項目、{pat}がマッチした最初の項目のインデックス、マッチの開始位置、および終了位置が返されます。
echo matchstrpos([1, '__x'], '\a')
結果は["x", 1, 2, 3]です。型は変更されず、必ずしもStringではありません。
パラメータ
{expr} (any)
{パターン} (文字列)
{start} (integer?)
{count}integer?
戻り値
(any)
max({expr}) max()
{expr}内のすべての項目の最大値を返します。例
echo max([apples, pears, oranges])
{expr}ListまたはDictionaryにすることができます。Dictionaryの場合、Dictionary内のすべての値の最大値を返します。{expr}がListでもDictionaryでもない場合、または{expr}内の項目のいずれかを数値として使用できない場合、エラーになります。空のListまたはDictionaryの場合はゼロになります。
パラメータ
{expr} (any)
戻り値
(any)
menu_get({path} [, {modes}]) menu_get()
メニュー:menu:amenuなどで定義)を記述するDictionariesListを返します。非表示メニューを含みます。
{path}は名前でメニューにマッチするか、{path}が空文字列の場合はすべてのメニューにマッチします。例
echo menu_get('File','')
echo menu_get('')
{modes}は0個以上のモードの文字列です(maparg()またはメニューの作成でモードの一覧を参照してください)。"a"は"all"を意味します。
nnoremenu &Test.Test inormal
inoremenu Test.Test insert
vnoremenu Test.Test x
echo menu_get("")
次のようなものを返します。
[ {
  "hidden": 0,
  "name": "Test",
  "priority": 500,
  "shortcut": 84,
  "submenus": [ {
    "hidden": 0,
    "mappings": {
      i": {
        "enabled": 1,
        "noremap": 1,
        "rhs": "insert",
        "sid": 1,
        "silent": 0
      },
      n": { ... },
      s": { ... },
      v": { ... }
    },
    "name": "Test",
    "priority": 500,
    "shortcut": 0
  } ]
} ]
パラメータ
{path} (string)
{modes} (string?)
戻り値
(any)
menu_info({name} [, {mode}]) menu_info()
モード{mode}で指定されたメニュー{name}に関する情報を返します。メニュー名は、ショートカット文字('&')なしで指定する必要があります。{name}が""の場合、トップレベルのメニュー名が返されます。
{mode}は次の文字列のいずれかです。"n" 通常 "v" Visual(Selectを含む) "o" オペレータ待機中 "i" Insert "c" コマンドライン "s" Select "x" Visual "t" ターミナルジョブ "" 通常、Visual、およびオペレータ待機中 "!" Insertおよびコマンドライン {mode}が省略された場合、""のモードが使用されます。
Dictionaryを返し、以下の項目が含まれます。accel メニュー項目アクセラレータ。text メニューテキスト表示名('&'なしの名前)。enabled このメニュー項目が有効な場合はv:true。:menu-enableを参照。icon アイコンファイルの名前(ツールバー用)。ツールバーアイコン。iconidx 組み込みアイコンのインデックス。modes メニューが定義されているモード。上記のモードに加えて、これらの文字が使用されます。" " 通常、Visual、およびオペレータ待機中。name メニュー項目名。noremenu メニュー項目の{rhs}が再マップできない場合はv:true、それ以外の場合はv:false。priority メニューの優先順位。メニュー優先順位。rhs メニュー項目の右辺。返された文字列は、":menu"コマンド一覧の出力量のように特殊文字が変換されています。メニュー項目の{rhs}が空の場合、"<Nop>"が返されます。script {rhs}のスクリプトローカル再マッピングが許可されている場合はv:true、それ以外の場合はv:false。:menu-scriptを参照。shortcut ショートカットキー(メニュー名内の'&'の後の文字)。メニューショートカット。silent メニュー項目が<silent>引数で作成された場合はv:true。:menu-silentを参照。submenus すべてのサブメニューの名前を含むList。メニュー項目にサブメニューがある場合のみ存在します。
メニュー項目が見つからない場合は、空の辞書を返します。
echo menu_info('Edit.Cut')
echo menu_info('File.Save', 'n')
" Display the entire menu hierarchy in a buffer
func ShowMenu(name, pfx)
  let m = menu_info(a:name)
  call append(line('$'), a:pfx .. m.display)
  for child in m->get('submenus', [])
    call ShowMenu(a:name .. '.' .. escape(child, '.'),
                                \ a:pfx .. '    ')
  endfor
endfunc
new
for topmenu in menu_info('').submenus
  call ShowMenu(topmenu, '')
endfor
パラメータ
{name} (文字列)
{mode}string?
戻り値
(any)
min({expr}) min()
{expr}内のすべての項目の最小値を返します。例
echo min([apples, pears, oranges])
{expr}ListまたはDictionaryにすることができます。Dictionaryの場合、Dictionary内のすべての値の最小値を返します。{expr}がListでもDictionaryでもない場合、または{expr}内の項目のいずれかを数値として使用できない場合、エラーになります。空のListまたはDictionaryの場合はゼロになります。
パラメータ
{expr} (any)
戻り値
(any)
mkdir({name} [, {flags} [, {prot}]]) mkdir() E739 ディレクトリ{name}を作成します。
{flags}が存在する場合、文字列である必要があります。空文字列は影響しません。
{flags}には、次の文字フラグを含めることができます。"p" 必要に応じて中間ディレクトリが作成されます。"D" {name}は現在の関数の最後に削除されますが、再帰的には削除されません。:defer"R" {name}は現在の関数の最後に再帰的に削除されます。:defer
{name}に複数の部分があり"p"が使用されている場合、一部のディレクトリは既に存在する可能性があることに注意してください。作成された最初のものとその内容のみが削除されるようにスケジュールされます。例えば、
call mkdir('subdir/tmp/autoload', 'pR')
を使用し、"subdir"が既に存在する場合、"subdir/tmp"は、
defer delete('subdir/tmp', 'rf')
のように削除されるようにスケジュールされます。{prot}が指定されている場合、新しいディレクトリの保護ビットを設定するために使用されます。デフォルトは0o755(rwxr-xr-x:ユーザーに対するr/w、その他に対する読み取り可能)です。その他に対して読み取り不可能にするには、0o700を使用します。
{prot}{name}のすべての部分に適用されます。したがって、/tmp/foo/barを作成する場合、/tmp/fooは0o700で作成されます。例
call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700)
この関数はサンドボックスでは使用できません。
{flags}が"p"に設定されている既存のディレクトリを作成しようとすると、mkdir()はサイレントに終了します。
関数の結果は数値で、呼び出しが成功した場合はTRUE、ディレクトリの作成に失敗した場合または部分的に失敗した場合はFALSEになります。
パラメータ
{name} (文字列)
{flags} (string?)
{prot} (string?)
戻り値
(any)
mode([{expr}]) mode()
現在のモードを示す文字列を返します。{expr}が指定され、それが0以外の数値または空でない文字列に評価された場合(non-zero-arg)、完全なモードが返されます。そうでない場合は、最初の文字のみが返されます。state()も参照してください。
n 通常モード no オペレータ保留なし nov オペレータ保留(強制文字単位 o_v) noV オペレータ保留(強制行単位 o_V) noCTRL-V オペレータ保留(強制ブロック単位 o_CTRL-VCTRL-V は1文字 niI i_CTRL-O を使用した挿入モード(Insert-mode) 内の通常モード niR i_CTRL-O を使用した置換モード(Replace-mode) 内の通常モード niV i_CTRL-O を使用した仮想置換モード(Virtual-Replace-mode) 内の通常モード nt ターミナルエミュレータ 内の通常モード(挿入はターミナルモードに移行) ntT t_CTRL-\_CTRL-O を使用したターミナルモード 内の通常モード v 文字単位のビジュアルモード vs v_CTRL-O を選択モードで使用した文字単位のビジュアルモード V 行単位のビジュアルモード Vs v_CTRL-O を選択モードで使用した行単位のビジュアルモード CTRL-V ブロック単位のビジュアルモード CTRL-Vs v_CTRL-O を選択モードで使用したブロック単位のビジュアルモード s 文字単位の選択モード S 行単位の選択モード CTRL-S ブロック単位の選択モード i 挿入モード ic 挿入モード補完 compl-generic ix 挿入モード i_CTRL-X 補完 R 置換モード R Rc 置換モード補完 compl-generic Rx 置換モード i_CTRL-X 補完 Rv 仮想置換モード gR Rvc 仮想置換モード補完 compl-generic Rvx 仮想置換モード i_CTRL-X 補完 c コマンドライン編集 cr コマンドライン編集オーバライトモード c_<Insert> cv Vim Ex モード gQ cvr オーバライトモード中のVim Exモード c_<Insert> r Enterキー押下プロンプト rm -- more -- プロンプト r? 何らかの:confirmクエリ ! シェルまたは外部コマンドの実行中 t ターミナルモード:キーはジョブに送られる
これは、'statusline' オプションまたはRPC呼び出しで役立ちます。ほとんどの他の場所では常に "c" または "n" を返します。将来、より多くのモードやより具体的なモードが追加される可能性があることに注意してください。文字列全体を比較するのではなく、先頭の文字だけを比較する方が良いでしょう。visualmode()も参照してください。
パラメータ
{expr} (任意?)
戻り値
(any)
msgpackdump({list} [, {type}]) msgpackdump()
Vimscriptオブジェクトのリストをmsgpackに変換します。戻り値はreadfile()スタイルのリストです。{type}に"B"が含まれている場合、Blobが代わりに返されます。例
call writefile(msgpackdump([{}]), 'fname.mpack', 'b')
または、Blobを使用する場合
call writefile(msgpackdump([{}], 'B'), 'fname.mpack')
これにより、単一の0x80バイトがfname.mpackファイルに書き込まれます(アイテムが0個の辞書は、messagepackでは0x80バイトで表されます)。
制限事項: E5004 E5005 1. Funcrefはダンプできません。 2. 自身を参照するコンテナはダンプできません。 3. 辞書のキーは常にSTR文字列としてダンプされます。 4. その他の文字列とBlobは常にBIN文字列としてダンプされます。 5. 3.と4.はmsgpack-special-dictには適用されません。
パラメータ
{list} (任意)
{type} (任意?)
戻り値
(any)
msgpackparse({data}) msgpackparse()
readfile()スタイルのリストまたはBlobをVimscriptオブジェクトのリストに変換します。例
let fname = expand('~/.config/nvim/shada/main.shada')
let mpack = readfile(fname, 'b')
let shada_objects = msgpackparse(mpack)
これにより、shada_objectsリストに~/.config/nvim/shada/main.shadaファイルが読み込まれます。
制限事項: 1. messagepackマッピングが汎用マッピング(msgpack-special-map)を使用してダンプされない限り、マッピングの順序は保持されません。 2. パーサーはすべてのデータを変更せずに保持することを目指しているため(1.を除く)、一部の文字列は使いにくいmsgpack-special-dict形式に解析されます。msgpack-special-dict
一部のmessagepack文字列は特別な辞書に解析される場合があります。特別な辞書とは、
1. 正確に2つのキー(_TYPE_VAL)を含む辞書です。 2. _TYPEキーはv:msgpack_types変数にある型の1つです。 3. _VALの値は次の形式です(キー列にはv:msgpack_typesのキーの名前が含まれています)。
キー 値
nil 0、ダンプ時に無視されます。v:nullが導入されたため、msgpackparse()では返されません。 boolean 1または0。ダンプ時には、値がNumberであることのみが確認されます。v:truev:falseが導入されたため、msgpackparse()では返されません。 integer 4つの数値を含むList:符号(-1または1)、上位2ビット、62ビット目から31ビット目までの数値、下位31ビット。つまり、実際の数値を取得するには、次のようなコードを使用する必要があります。
_VAL[0] * ((_VAL[1] << 62)
           & (_VAL[2] << 31)
           & _VAL[3])
この型の特別な辞書は、次の状況のいずれかでmsgpackparse()の出力に表示されます。 1. Numberが32ビットで、値がINT32_MAXより大きい場合、またはINT32_MINより小さい場合。 2. Numberが64ビットで、値がINT64_MAXより大きい場合。msgpack Cパーサーはこのような値をサポートしていないため、INT64_MINより小さいことはあり得ません。 float Float。この値はmsgpackparse()の出力には表示されません。 string String、またはバイナリ文字列にゼロバイトが含まれている場合のBlob。blobが導入されたため、この値はmsgpackparse()の出力には表示されません。 array List。この値はmsgpackparse()の出力には表示されません。msgpack-special-map
map 各2つの項目(キーと値)を持つListList。解析されたマッピングに次のキーのいずれか含まれている場合、この値はmsgpackparse()の出力に表示されます。 1. 文字列ではないキー(バイナリ文字列であるキーを含む)。 2. 内部でNULバイトを含む文字列。 3. 重複キー。 ext 2つの値を持つList:最初の値は拡張タイプを表す符号付き整数です。2番目の値は文字列のreadfile()スタイルのリストです。
パラメータ
{data} (任意)
戻り値
(any)
nextnonblank({lnum}) nextnonblank()
{lnum}以上の最初の空でない行の行番号を返します。例
if getline(nextnonblank(1)) =~ "Java" | endif
{lnum}が無効であるか、{lnum}以上の空でない行がない場合、0が返されます。{lnum}getline()と同様に使用されます。prevnonblank()も参照してください。
パラメータ
{lnum} (integer)
戻り値
(any)
nr2char({expr} [, {utf8}]) nr2char()
数値が{expr}である単一の文字を含む文字列を返します。例
echo nr2char(64)                " returns '@'
echo nr2char(32)                " returns ' '
"utf-8"の例
echo nr2char(300)                " returns I with bow character
UTF-8エンコーディングは常に使用され、{utf8}オプションは効果がなく、後方互換性のためにのみ存在します。ファイル内のNUL文字はnr2char(10)で指定されていることに注意してください。これは、NULが改行文字で表されるためです。nr2char(0)は実際のNULであり、文字列を終了するため、空の文字列になります。
パラメータ
{expr} (整数)
{utf8} (boolean?)
戻り値
(any)
nvim_...({...}) nvim_...() E5555 eval-api nvim api 関数を呼び出します。引数の型チェックは、他のほとんどの組み込み関数よりも厳格になります。たとえば、Integerが期待されている場合、Numberを渡す必要があります。Stringは自動変換されません。bufnr()によって返されるバッファ番号は、nvim_buf_...関数の最初の引数として使用できます。オブジェクト(バッファ、ウィンドウ、またはタブページ)を期待するすべての関数は、現在の(フォーカスされた)オブジェクトを示す数値0も受け入れることができます。
パラメータ
{...} (任意)
戻り値
(any)
or({expr}, {expr}) or()
2つの引数に対してビット単位のOR演算を実行します。引数は数値に変換されます。List、Dict、またはFloat引数はエラーを引き起こします。and()およびxor()も参照してください。例
let bits = or(bits, 0x80)
理由:これが関数であり、多くの言語のように「|」文字を使用していない理由は、Viが常に「|」をコマンドの区切り文字として使用してきたためです。多くの場合、「|」が演算子かコマンド区切り文字かを明確にすることができません。
パラメータ
{expr} (number)
{expr1} (number)
戻り値
(any)
pathshorten({path} [, {len}]) pathshorten()
パス{path}内のディレクトリ名を短縮し、結果を返します。末尾のファイル名はそのまま保持されます。パス内の他のコンポーネントは、長さが{len}文字に短縮されます。{len}が省略されているか1より小さい場合、1が使用されます(1文字)。先頭の「~」と「.」の文字は保持されます。例
echo pathshorten('~/.config/nvim/autoload/file1.vim')
~/.c/n/a/file1.vim
echo pathshorten('~/.config/nvim/autoload/file2.vim', 2)
~/.co/nv/au/file2.vim
パスが存在するかどうかは関係ありません。エラーの場合は空の文字列を返します。
パラメータ
{path} (string)
{len} (整数?)
戻り値
(any)
perleval({expr}) perleval()
perl{expr}を評価し、Vimデータ構造に変換された結果を返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされます)。リストはVim List型として表されます。辞書はVim Dictionary型として表されます。文字列以外のキーはエラーになります。
注意:配列またはハッシュが必要な場合は、{expr}はそれへの参照を返す必要があります。例
echo perleval('[1 .. 4]')
[1, 2, 3, 4]
パラメータ
{expr} (any)
戻り値
(any)
pow({x}, {y}) pow()
Floatとして、指数{y}に対する{x}のべき乗を返します。{x}{y}FloatまたはNumberに評価する必要があります。{x}または{y}FloatまたはNumberでない場合、0.0を返します。例
echo pow(3, 3)
27.0
echo pow(2, 16)
65536.0
echo pow(32, 0.20)
2.0
パラメータ
{x} (数値)
{y} (数値)
戻り値
(any)
prevnonblank({lnum}) prevnonblank()
{lnum}以上の最初の空でない行の行番号を返します。例
let ind = indent(prevnonblank(v:lnum - 1))
{lnum}が無効であるか、{lnum}以上の空でない行がない場合、0が返されます。{lnum}getline()と同様に使用されます。nextnonblank()も参照してください。
パラメータ
{lnum} (integer)
戻り値
(any)
printf({fmt}, {expr1} ...) printf()
「%」項目がそれぞれの引数のフォーマットされた形式に置き換えられた{fmt}を含むStringを返します。例
echo printf("%4d: E%d %.30s", lnum, errno, msg)
次の結果になる可能性があります。
" 99: E42 asdfasdfasdfasdfasdfasdfas"
methodとして使用される場合、基底が2番目の引数として渡されます。
Compute()->printf("result: %d")
call() を使用して、項目をリストとして渡すことができます。
頻繁に使用される項目は次のとおりです。%s 文字列 %6S 文字列(右寄せ、6文字幅) %6s 文字列(右寄せ、6バイト) %.9s 文字列(9バイトに切り詰め) %c 1バイト文字 %d 10進数 %5d 10進数(スペースで左詰め、5文字幅) %b 2進数 %08b 2進数(ゼロで左詰め、8文字以上) %B 2進数(大文字) %x 16進数 %04x 16進数(ゼロで左詰め、4文字以上) %X 16進数(大文字) %o 8進数 %f 浮動小数点数(12.23、inf、-inf、nan の形式) %F 浮動小数点数(12.23、INF、-INF、NAN の形式) %e 浮動小数点数(1.23e3、inf、-inf、nan の形式) %E 浮動小数点数(1.23E3、INF、-INF、NAN の形式) %g 浮動小数点数(値に応じて %f または %e) %G 浮動小数点数(値に応じて %F または %E) %% % 文字自身 %p コンテナへのポインタの表現
変換指定子は「%」で始まり、変換タイプで終わります。その他の文字は、変更せずに結果にコピーされます。
「%」は変換指定子の開始を示します。次の引数は順番に表示されます。
% [位置引数] [フラグ] [フィールド幅] [.精度] タイプ
位置引数 最大1つの位置引数指定子。これらは{n$}という形式で、n は 1 以上です。
フラグ 次のフラグをゼロ個以上使用できます。
# 値を「代替形式」に変換する必要があります。c、d、s 変換では、このオプションは効果がありません。o 変換では、出力文字列の最初の文字をゼロにするために数値の精度が向上します(ゼロ値がゼロの明示的な精度で出力される場合を除く)。x と X 変換では、ゼロ以外の結果には文字列「0x」(または X 変換の場合は「0X」)が前に付加されます。
0(ゼロ) ゼロパディング。すべての変換において、変換された値は空白ではなくゼロで左詰めされます。数値変換(d、o、x、X)で精度が指定されている場合、0 フラグは無視されます。
- 負のフィールド幅フラグ。変換された値はフィールド境界で左寄せされます。変換された値は、空白またはゼロで左詰めするのではなく、空白で右詰めされます。- は、両方が指定されている場合、0 を上書きします。
' '(スペース) 符号付き変換(d)によって生成された正数の前に空白を挿入します。
+ 符号付き変換によって生成された数の前に常に符号を付ける必要があります。+ は、両方が使用されている場合、スペースを上書きします。
フィールド幅 最小フィールド幅を指定するオプションの10進数字列。変換された値のバイト数がフィールド幅よりも少ない場合、フィールド幅を埋めるために左側にスペース(左寄せフラグが指定されている場合は右側にスペース)でパディングされます。S 変換の場合、カウントはセル単位です。
.精度 ピリオド「.」の後にオプションの数字列が続く形式のオプションの精度。数字列を省略すると、精度はゼロと見なされます。これは、d、o、x、X 変換で表示される最小桁数、s 変換で文字列から出力される最大バイト数、または S 変換で文字列から出力される最大セル数を指定します。浮動小数点の場合は、小数点以下の桁数です。
タイプ 適用する変換のタイプを指定する文字。下記参照。
フィールド幅または精度、あるいはその両方を、数字列の代わりにアスタリスク「*」で指定できます。この場合、数値引数がフィールド幅または精度を供給します。負のフィールド幅は、左寄せフラグと正のフィールド幅として扱われます。負の精度は、存在しないものとして扱われます。例
echo printf("%d: %.*s", nr, width, line)
これにより、「line」から「width」バイトまで使用されるテキストの長さが制限されます。
フォーマットされる引数が位置引数指定子を使用して指定され、「*」を使用して数値引数が幅または精度を指定するために使用されることを示す場合、使用される引数も{n$}位置引数指定子を使用して指定する必要があります。printf-$を参照してください。
変換指定子とその意味は次のとおりです。
printf-d printf-b printf-B printf-o printf-x printf-X dbBoxX 数値引数は、符号付き10進数(d)、符号なし2進数(bとB)、符号なし8進数(o)、または符号なし16進数(xとX)表記に変換されます。「abcdef」はx変換に使用され、「ABCDEF」はX変換に使用されます。精度は、存在する場合、表示する必要がある最小桁数を指定します。変換された値に必要な桁数が少ない場合、左側にゼロで埋められます。数値フィールドの切り捨ては、フィールド幅が存在しない場合や小さい場合でも発生しません。変換の結果がフィールド幅よりも大きい場合、フィールドは変換結果を含むように拡張されます。「h」修飾子は、引数が16ビットであることを示します。「l」修飾子は、引数が長整数であることを示します。サイズは、プラットフォームに応じて32ビットまたは64ビットになります。「ll」修飾子は、引数が64ビットであることを示します。bとB変換指定子は、幅修飾子を取らず、引数が常に64ビット整数であると仮定します。一般的に、これらの修飾子は役に立ちません。タイプが引数から判明している場合は無視されます。
i は d のエイリアス、D は ld のエイリアス、U は lu のエイリアス、O は lo のエイリアスです。
printf-c
c 数値引数はバイトに変換され、結果の文字が出力されます。
printf-s
s 文字列引数のテキストが使用されます。精度が指定されている場合、指定された数を超えるバイトは使用されません。引数が文字列タイプでない場合、":echo"と同じ形式で自動的にテキストに変換されます。printf-S
S 文字列引数のテキストが使用されます。精度が指定されている場合、指定された数を超える表示セルは使用されません。
printf-f E807 f F 浮動小数点引数は、123.456という形式の文字列に変換されます。精度は、小数点以下の桁数を指定します。精度がゼロの場合、小数点は省略されます。精度が指定されていない場合、6が使用されます。非常に大きな数(範囲外またはゼロ除算)は、%fの場合は「inf」または「-inf」(%Fの場合は「INF」または「-INF」)、"0.0 / 0.0"は%fの場合は「nan」(%Fの場合は「NAN」)になります。例
echo printf("%.2f", 12.115)
12.12 丸めはシステムライブラリに依存することに注意してください。不明な場合は、round()を使用してください。
printf-e printf-E e E 浮動小数点引数は、'e'を使用する場合は1.234e+03、'E'を使用する場合は1.234E+03という形式の文字列に変換されます。精度は、'f'と同様に小数点以下の桁数を指定します。
printf-g printf-G g G 浮動小数点引数は、値が0.001(を含む)から10000000.0(含まない)の間にある場合、'f'のように変換されます。それ以外の場合は、'g'には'e'、'G'には'E'が使用されます。精度が指定されていない場合、余分なゼロと「+」記号は、小数点の直後のゼロを除いて削除されます。したがって、10000000.0は1.0e7になります。
printf-%
% 「%」が出力されます。引数は変換されません。完全な変換指定子は「%%」です。
数値引数が期待されている場合、文字列引数も受け入れられ、自動的に変換されます。浮動小数点または文字列引数が期待されている場合、数値引数も受け入れられ、自動的に変換されます。その他の引数タイプは、エラーメッセージになります。
E766 E767 {exprN}引数の数は、「%」項目の数と正確に一致する必要があります。引数が不足しているか多すぎる場合、エラーが発生します。最大18個の引数を使用できます。
printf-$
特定の言語では、単語の順序が英語の対応するメッセージとは異なる場合、エラーメッセージと情報メッセージはより読みやすくなります。単語順序が異なる翻訳に対応するために、位置引数を使用してこれを示すことができます。例えば
#, c-format
msgid "%s returning %s"
msgstr "waarde %2$s komt terug van %1$s"
この例では、文の2つの文字列引数が出力で反転されています。
echo printf(
    "In The Netherlands, vim's creator's name is: %1$s %2$s",
    "Bram", "Moolenaar")
オランダでは、vimの作成者の名前は:Bram Moolenaar
echo printf(
    "In Belgium, vim's creator's name is: %2$s %1$s",
    "Bram", "Moolenaar")
ベルギーでは、vimの作成者の名前は:Moolenaar Bram
幅(および精度)は、「*」指定子を使用して指定できます。この場合、引数リスト内のフィールド幅の位置を指定する必要があります。
echo printf("%1$*2$.*3$d", 1, 2, 3)
001
echo printf("%2$*3$.*1$d", 1, 2, 3)
2
echo printf("%3$*1$.*2$d", 1, 2, 3)
03
echo printf("%1$*2$.*3$g", 1.4142, 2, 3)
1.414
幅と/または精度を直接指定する方法と、位置引数を使用して指定する方法を混在させることができます。
echo printf("%1$4.*2$f", 1.4142135, 6)
1.414214
echo printf("%1$*2$.4f", 1.4142135, 6)
1.4142
echo printf("%1$*2$.*3$f", 1.4142135, 6, 2)
1.41
フィールド幅または精度が6400文字を超える文字列になる場合、オーバーフローエラーE1510が発生します。
E1500
位置引数と非位置引数を混在させることはできません。
echo printf("%s%1$s", "One", "Two")
E1500: 位置引数と非位置引数を混在させることはできません: %s%1$s
E1501
フォーマット文字列で位置引数をスキップすることはできません。
echo printf("%3$s%1$s", "One", "Two", "Three")
E1501: フォーマット引数2は$-スタイルのフォーマットでは使用されていません: %3$s%1$s
E1502
[フィールド幅](または[精度])引数を再利用できます。
echo printf("%1$d at width %2$d is: %01$*2$d", 1, 2)
幅2の1は:01
ただし、異なるタイプとして使用することはできません。
echo printf("%1$d at width %2$ld is: %01$*2$d", 1, 2)
E1502: 位置引数2はフィールド幅として使用され、異なるタイプ(long int/int)として再利用されました。
E1503
位置引数が使用されているが、正しい数の引数が与えられていない場合、エラーが発生します。
echo printf("%1$d at width %2$d is: %01$*2$.*3$d", 1, 2)
E1503: 位置引数3が範囲外です: %1$d at width %2$d is: %01$*2$.*3$d
最初のエラーのみが報告されます。
echo printf("%01$*2$.*3$d %4$d", 1, 2)
E1503: 位置引数3が範囲外です: %01$*2$.*3$d %4$d
E1504
位置引数を複数回使用できます。
echo printf("%1$s %2$s %1$s", "One", "Two")
One Two One
ただし、2回目に異なるタイプを使用することはできません。
echo printf("%1$s %2$s %1$d", "One", "Two")
E1504: 位置引数1のタイプが矛盾して使用されています: int/string
E1505
フォーマット文字列が誤ってフォーマットされる原因となるその他のさまざまなエラーは、次のようになります。
echo printf("%1$d at width %2$d is: %01$*2$.3$d", 1, 2)
E1505: 無効なフォーマット指定子: %1$d at width %2$d is: %01$*2$.3$d
E1507
この内部エラーは、位置フォーマット引数を解析するロジックが、それ以外では報告できない問題に遭遇したことを示しています。この問題が発生した場合は、使用された正確なフォーマット文字列とパラメータをコピーして、Vimのバグを報告してください。
パラメータ
{fmt}文字列
{expr1}any?
戻り値
(文字列)
prompt_getprompt({buf}) prompt_getprompt()
バッファ{buf}の有効なプロンプトテキストを返します。{buf}は、バッファ名または番号です。prompt-bufferを参照してください。
バッファが存在しないか、プロンプトバッファでない場合、空文字列が返されます。
パラメータ
{buf} (integer|string)
戻り値
(any)
prompt_setcallback({buf}, {expr}) prompt_setcallback()
バッファ{buf}のプロンプトコールバックを{expr}に設定します。{expr}が空文字列の場合、コールバックは削除されます。これは、{buf}'buftype'が"prompt"に設定されている場合にのみ効果があります。
Enterキーを押すとコールバックが呼び出されます。現在のバッファは常にプロンプトバッファになります。コールバックを呼び出す前に、プロンプトの新しい行が追加されるため、コールバックが呼び出されたプロンプトは、最後から2番目の行に存在します。コールバックがバッファにテキストを追加する場合は、現在のプロンプトが存在する場所である最後の行の上に挿入する必要があります。これは非同期で行うこともできます。コールバックは1つの引数で呼び出され、その引数はプロンプトに入力されたテキストです。ユーザーがEnterキーのみを入力した場合、これは空文字列になる可能性があります。例
   func s:TextEntered(text)
     if a:text == 'exit' || a:text == 'quit'
       stopinsert
       " Reset 'modified' to allow the buffer to be closed.
       " We assume there is nothing useful to be saved.
       set nomodified
       close
     else
       " Do something useful with "a:text".  In this example
       " we just repeat it.
       call append(line('$') - 1, 'Entered: "' .. a:text .. '"')
     endif
   endfunc
   call prompt_setcallback(bufnr(), function('s:TextEntered'))
Parameters: ~
  • {buf} (`integer|string`)
  • {expr} (`string|function`)
Return: ~
  (`any`)
prompt_setinterrupt({buf}, {expr}) prompt_setinterrupt()
バッファ{buf}のコールバックを{expr}に設定します。{expr}が空文字列の場合、コールバックは削除されます。これは、{buf}'buftype'が"prompt"に設定されている場合にのみ有効です。
このコールバックは、挿入モードでCTRL-Cを押したときに呼び出されます。コールバックを設定しないと、他のバッファと同様に、Vimは挿入モードを終了します。
パラメータ
{buf} (integer|string)
{expr} (文字列|関数)
戻り値
(any)
prompt_setprompt({buf}, {text}) prompt_setprompt()
バッファ{buf}のプロンプトを{text}に設定します。おそらく、{text}はスペースで終わらせる必要があります。結果は、{buf}'buftype'が"prompt"に設定されている場合にのみ表示されます。例
call prompt_setprompt(bufnr(''), 'command: ')
パラメータ
{buf} (integer|string)
{text} (string)
戻り値
(any)
pum_getpos() pum_getpos()
ポップアップメニュー(ins-completion-menuを参照)が表示されていない場合は、空のDictionaryを返し、表示されている場合は、次のキーを持つDictionaryを返します。高さ 可視項目の数 幅 画面セル 行 上部の画面行(0は最初の行) 列 左端の画面列(0は最初の列) サイズ 項目の総数 スクロールバー TRUE(スクロールバーが表示されている場合)
これらの値は、CompleteChanged中にv:eventにあるものと同じです。
戻り値
(any)
pumvisible() pumvisible()
ポップアップメニューが表示されている場合は0以外の値を、表示されていない場合は0を返します。ins-completion-menuを参照してください。これは、ポップアップメニューを削除する可能性のあるいくつかの処理を回避するために使用できます。
戻り値
(any)
py3eval({expr}) py3eval()
Python式{expr}を評価し、その結果をVimのデータ構造に変換して返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされ、Unicode文字列はさらにUTF-8に変換されます)。リストはVimのList型として表されます。辞書は、キーが文字列に変換されたVimのDictionary型として表されます。
パラメータ
{expr} (any)
戻り値
(any)
pyeval({expr}) pyeval() E858 E859 Python式{expr}を評価し、その結果をVimのデータ構造に変換して返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされます)。リストはVimのList型として表されます。辞書はVimのDictionary型として表されます。文字列以外のキーはエラーになります。
パラメータ
{expr} (any)
戻り値
(any)
pyxeval({expr}) pyxeval()
Python式{expr}を評価し、その結果をVimのデータ構造に変換して返します。python_x'pyxversion'を参照して、Python 2または3を使用します。参考:pyeval()py3eval()
パラメータ
{expr} (any)
戻り値
(any)
rand([{expr}]) rand()
シード{expr}を使用してxoshiro128**アルゴリズムで生成された擬似乱数を返します。返される数値は、64ビットシステムでも一貫性を保つために32ビットです。{expr}srand()で初期化でき、rand()によって更新されます。{expr}が省略された場合、内部シード値が使用され、更新されます。{expr}が無効な場合は-1を返します。
echo rand()
let seed = srand()
echo rand(seed)
echo rand(seed) % 16  " random number 0 - 15
パラメータ
{expr} (数値?)
戻り値
(any)
range({expr} [, {max} [, {stride}]]) range() E726 E727 数値を含むListを返します。
{expr}のみが指定されている場合:[0, 1, ..., {expr} - 1]
{max}が指定されている場合:[{expr}, {expr} + 1, ..., {max}]
{stride}が指定されている場合:[{expr}, {expr} + {stride}, ..., {max}]({expr}を毎回{stride}増やし、{max}を超える値は生成しません)。最大値が開始値より1つ少ない場合は、結果は空のリストになります。最大値が開始値より1つ以上少ない場合は、エラーになります。例
echo range(4)                " [0, 1, 2, 3]
echo range(2, 4)        " [2, 3, 4]
echo range(2, 9, 3)        " [2, 5, 8]
echo range(2, -2, -1)        " [2, 1, 0, -1, -2]
echo range(0)                " []
echo range(2, 0)        " error!
パラメータ
{expr} (any)
{max} (整数?)
{stride} (整数?)
戻り値
(any)
readblob({fname} [, {offset} [, {size}]]) readblob()
ファイルをバイナリモードで読み込み、Blobを返します。{offset}が指定されている場合、指定されたオフセットからファイルを読み込みます。負の値の場合、ファイルの末尾からのオフセットとして使用されます。例:最後の12バイトを読み込むには
echo readblob('file.bin', -12)
{size}が指定されている場合、指定されたサイズのみが読み込まれます。例:ファイルの先頭100バイトを読み込むには
echo readblob('file.bin', 0, 100)
{size}が-1または省略されている場合、{offset}から始まる全データが読み込まれます。これは、{size}が明示的に設定されている場合、Unix上の文字デバイスからデータを読み込むためにも使用できます。デバイスがシークをサポートしている場合のみ、{offset}を使用できます。そうでない場合は0にする必要があります。例:シリアルコンソールから10バイトを読み込むには
echo readblob('/dev/ttyS0', 0, 10)
ファイルを開くことができない場合、エラーメッセージが表示され、結果は空のBlobになります。オフセットがファイルの末尾を超えている場合、結果は空のblobになります。使用可能なバイト数よりも多くのバイトを読み込もうとすると、結果は切り捨てられます。readfile()writefile()も参照してください。
パラメータ
{fname} (string)
{offset} (整数?)
{size} (整数?)
戻り値
(any)
readdir({directory} [, {expr}]) readdir()
{directory}内のファイル名とディレクトリ名のリストを返します。複雑な処理(一致の数の制限など)を行う必要がない場合は、glob()を使用することもできます。
{expr}が省略されている場合、すべてのエントリが含まれます。{expr}が指定されている場合、実行して実行する処理を確認します。{expr}の結果が-1の場合、それ以上のエントリは処理されません。{expr}の結果が0の場合、このエントリはリストに追加されません。{expr}の結果が1の場合、このエントリはリストに追加されます。{expr}が実行されるたびに、v:valにエントリ名が設定されます。{expr}が関数の場合、名前が引数として渡されます。たとえば、".txt"で終わるファイルのリストを取得するには
echo readdir(dirname, {n -> n =~ '.txt$'})
隠しファイルとバックアップファイルをスキップするには
echo readdir(dirname, {n -> n !~ '^\.\|\~$'})
ディレクトリツリーを取得する場合は
function! s:tree(dir)
    return {a:dir : map(readdir(a:dir),
    \ {_, x -> isdirectory(x) ?
    \          {x : s:tree(a:dir .. '/' .. x)} : x})}
endfunction
echo s:tree(".")
エラーが発生した場合は空のリストを返します。
パラメータ
{directory} (string)
{expr} (整数?)
戻り値
(any)
readfile({fname} [, {type} [, {max}]]) readfile()
ファイル{fname}を読み込み、ファイルの各行をアイテムとするListを返します。行はNL文字で区切られます。CRで区切られたMacintoshファイルは(どこかにNLが表示されない限り)1つの長い行になります。すべてのNUL文字はNL文字に置き換えられます。{type}に"b"が含まれている場合は、バイナリモードが使用されます。
最後の行がNLで終わる場合、余分な空のリストアイテムが追加されます。
CR文字は削除されません。それ以外の場合
NLの前に表示されるCR文字は削除されます。
最後の行がNLで終わるかどうかに関係ありません。
UTF-8バイトオーダーマークはテキストから削除されます。{max}が指定されている場合、読み込む行の最大数を指定します。ファイルの先頭10行だけを確認する場合に役立ちます。
for line in readfile(fname, '', 10)
  if line =~ 'Date' | echo line | endif
endfor
{max}が負の場合、ファイルの末尾から-{max}行が返されます(または、存在する行数)。{max}が0の場合、結果は空のリストになります。{max}がない場合、ファイル全体がメモリに読み込まれることに注意してください。また、エンコーディングの認識がないことにも注意してください。バッファにファイルを読み込む必要がある場合は、ファイルを読み込んでください。非推奨(代わりにreadblob()を使用してください):{type}に"B"が含まれている場合、変更されていないファイルのバイナリデータを含むBlobが返されます。ファイルを開くことができない場合、エラーメッセージが表示され、結果は空のリストになります。writefile()も参照してください。
パラメータ
{fname} (string)
{type} (string?)
{max} (整数?)
戻り値
(any)
reduce({object}, {func} [, {initial}]) reduce() E998 {func}は、StringList、またはBlobである可能性のある{object}のすべてのアイテムに対して呼び出されます。{func}は、これまでの結果と現在のアイテムという2つの引数で呼び出されます。すべてのアイテムを処理した後、結果が返されます。
{initial}は初期の結果です。省略された場合、{object}の最初のアイテムが使用され、{func}は最初に2番目のアイテムに対して呼び出されます。{initial}が指定されておらず、{object}が空の場合、結果は計算できず、E998エラーが発生します。
echo reduce([1, 3, 5], { acc, val -> acc + val })
echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
echo reduce(0z1122, { acc, val -> 2 * acc + val })
echo reduce('xyz', { acc, val -> acc .. ',' .. val })
パラメータ
{object} (any)
{func} (function)
{initial} (任意?)
戻り値
(any)
reg_executing() reg_executing()
実行中のレジスタの1文字の名前を返します。レジスタが実行されていない場合は空文字列を返します。@を参照してください。
戻り値
(any)
reg_recorded() reg_recorded()
最後に記録されたレジスタの1文字の名前を返します。まだ何も記録されていない場合は空文字列を返します。qQを参照してください。
戻り値
(any)
reg_recording() reg_recording()
記録中のレジスタの1文字の名前を返します。記録していない場合は空文字列を返します。qを参照してください。
戻り値
(any)
reltime() reltime()
reltime({start}) reltime({start}, {end}) 時間値を表すアイテムを返します。このアイテムは、システムに依存するアイテムを含むリストです。このアイテムは、reltimestr() に渡して文字列に変換したり、reltimefloat() に渡して浮動小数点数に変換したりできます。
引数なしで呼び出すと、現在の「相対時間」を返します。これは実装定義の値であり、reltime()reltimestr()reltimefloat()の引数として使用する場合にのみ意味を持ちます。
1つの引数で呼び出すと、引数で指定された時間からの経過時間を返します。2つの引数で呼び出すと、{start}{end}の間の経過時間を返します。
{start}{end}引数は、reltime()によって返された値でなければなりません。エラーの場合は0を返します。
注: localtime() は現在の(相対ではない)時間を返します。
パラメータ
{start} (any?)
{end_} (any?)
戻り値
(any)
reltimefloat({time}) reltimefloat()
{time}の時間の値を表す浮動小数点数を返します。時間の単位は秒です。例: let start = reltime() call MyFunction() let seconds = reltimefloat(reltime(start)) reltimestr()のオーバーヘッドに関する注記を参照してください。プロファイリングも参照してください。エラーが発生した場合は空文字列が返されます。
パラメータ
{time} (any)
戻り値
(any)
reltimestr({time}) reltimestr()
{time}の時間の値を表す文字列を返します。これは、秒数、ドット、マイクロ秒数です。例
let start = reltime()
call MyFunction()
echo reltimestr(reltime(start))
コマンドのオーバーヘッドが時間に加算されることに注意してください。先頭のスペースは、文字列を整列させるために使用されます。split()を使用して削除できます。
echo split(reltimestr(reltime(start)))[0]
プロファイリングも参照してください。エラーが発生した場合は空文字列が返されます。
パラメータ
{time} (any)
戻り値
(any)
remove({list}, {idx}) remove()
remove({list}, {idx}, {end}) {end}なし: List {list}から{idx}の位置にあるアイテムを削除し、そのアイテムを返します。{end}あり: {idx}から{end}まで({end}を含む)のアイテムを削除し、これらのアイテムを含むListを返します。{idx}{end}が同じアイテムを指している場合、1つのアイテムを含むリストが返されます。{end}{idx}の前にあるアイテムを指している場合はエラーです。list-indexで、{idx}{end}の可能な値を確認してください。エラーの場合は0を返します。例
echo "last item: " .. remove(mylist, -1)
call remove(mylist, 0, 9)
ファイルを削除するには、delete()を使用してください。
パラメータ
{list}any[]
{idx} (integer)
{end_} (integer?)
戻り値
(any)
remove({blob}, {idx}) remove({blob}, {idx}, {end}) {end}なし: Blob {blob}から{idx}の位置にあるバイトを削除し、そのバイトを返します。{end}あり: {idx}から{end}まで({end}を含む)のバイトを削除し、これらのバイトを含むBlobを返します。{idx}{end}が同じバイトを指している場合、1つのバイトを含むBlobが返されます。{end}{idx}の前にあるバイトを指している場合はエラーです。エラーの場合は0を返します。例
echo "last byte: " .. remove(myblob, -1)
call remove(mylist, 0, 9)
パラメータ
{blob} (任意)
{idx} (integer)
{end_} (integer?)
戻り値
(any)
remove({dict}, {key}) {dict}からキー{key}のエントリを削除し、それを返します。例
echo "removed " .. remove(dict, "one")
{dict}{key}がない場合はエラーです。エラーの場合は0を返します。
パラメータ
{dict} (any)
{key} (string)
戻り値
(any)
rename({from}, {to}) rename()
名前{from}のファイルを名前{to}に名前変更します。ファイルシステム間でファイルを移動するためにも機能します。結果は数値で、ファイルの名前変更が成功した場合は0、名前変更が失敗した場合は0以外になります。注: {to}が存在する場合は、警告なしで上書きされます。この関数はsandboxでは使用できません。
パラメータ
{from}string
{to}string
戻り値
(any)
repeat({expr}, {count}) repeat()
{expr}{count}回繰り返し、連結された結果を返します。例
let separator = repeat('-', 80)
{count}が0または負の場合、結果は空になります。{expr}ListまたはBlobの場合、結果は{expr}{count}回連結されたものになります。例
let longlist = repeat(['a', 'b'], 3)
結果は['a', 'b', 'a', 'b', 'a', 'b']になります。
パラメータ
{expr} (any)
{count} (integer)
戻り値
(any)
resolve({filename}) resolve() E655 MS-Windowsでは、{filename}がショートカット(.lnkファイル)の場合、ショートカットが指すパスを簡略化された形式で返します。Unixでは、{filename}のすべてのパスコンポーネント内のシンボリックリンクを繰り返し解決し、簡略化された結果を返します。リンクサイクルに対処するために、シンボリックリンクの解決は100回の反復後に停止します。その他のシステムでは、簡略化された{filename}を返します。簡略化ステップはsimplify()と同じように行われます。resolve()は、現在のディレクトリを指定する先頭のパスコンポーネント(結果が依然として相対パス名である場合)と、末尾のパスセパレータを保持します。
パラメータ
{filename} (string)
戻り値
(any)
reverse({object}) reverse()
{object}内のアイテムの順序を逆にします。{object}ListBlob、またはStringにすることができます。ListとBlobの場合、アイテムはインプレースで反転され、{object}が返されます。Stringの場合、新しいStringが返されます。{object}がList、Blob、Stringでない場合は0を返します。ListまたはBlobを未変更のままにする場合は、最初にコピーを作成してください。
let revlist = reverse(copy(mylist))
パラメータ
{object} (any)
戻り値
(any)
round({expr}) round()
{expr}を最も近い整数値に丸めて、Floatとして返します。{expr}が2つの整数値のちょうど中間にある場合、より大きい方(0から遠い方)を使用します。{expr}FloatまたはNumberでなければなりません。FloatまたはNumberでない場合は0.0を返します。例
echo round(0.456)
0.0
echo round(4.5)
5.0
echo round(-4.5)
-5.0
パラメータ
{expr} (number)
戻り値
(any)
rpcnotify({channel}, {event} [, {args}...]) rpcnotify()
RPCを介して{event}{channel}に送信し、すぐに返ります。{channel}が0の場合、イベントはすべてのチャネルにブロードキャストされます。例
au VimLeave call rpcnotify(0, "leaving")
パラメータ
{channel} (integer)
{event} (string)
{args} (any?)
戻り値
(any)
rpcrequest({channel}, {method} [, {args}...]) rpcrequest()
RPCを介して{method}を呼び出すためのリクエストを{channel}に送信し、応答を受信するまでブロックします。例
let result = rpcrequest(rpc_chan, "func", 1, 2, 3)
パラメータ
{channel} (integer)
{method} (string)
{args} (any?)
戻り値
(any)
rubyeval({expr}) rubyeval()
Ruby式{expr}を評価し、Vimデータ構造に変換された結果を返します。数値、浮動小数点数、文字列はそのまま返されます(ただし、文字列はコピーされます)。配列はVimのList型として表されます。ハッシュはVimのDictionary型として表されます。その他のオブジェクトは、それらの「Object#to_s」メソッドの結果である文字列として表されます。
パラメータ
{expr} (any)
戻り値
(any)
screenattr({row}, {col}) screenattr()
screenchar()に似ていますが、属性を返します。これはかなり任意の数値であり、他の位置の属性と比較する場合にのみ使用できます。行または列が範囲外の場合は-1を返します。
パラメータ
{row} (integer)
{col} (integer)
戻り値
(any)
screenchar({row}, {col}) screenchar()
結果は数値で、画面上の位置[row, col]にある文字です。これは、ステータスライン、ウィンドウセパレータ、コマンドラインなど、すべての可能な画面位置で機能します。左上の位置は行1、列1です。文字には合成文字は含まれません。ダブルバイトエンコーディングの場合、最初のバイトのみの場合があります。これは主にテストに使用されます。行または列が範囲外の場合は-1を返します。
パラメータ
{row} (integer)
{col} (integer)
戻り値
(any)
screenchars({row}, {col}) screenchars()
結果は数値のListです。最初の数値はscreenchar()が返すものと同じです。さらに、基本文字の上に合成文字が追加されます。これは主にテストに使用されます。行または列が範囲外の場合は空のListを返します。
パラメータ
{row} (integer)
{col} (integer)
戻り値
(any)
screencol() screencol()
結果は数値で、カーソルの現在の画面列です。左端の列の番号は1です。この関数は主にテストに使用されます。
注: 常に現在の画面列を返すため、コマンド(例:「:echo screencol()」)で使用すると、コマンドライン内の列(コマンドが実行されると1)が返されます。ファイル内のカーソル位置を取得するには、次のマッピングのいずれかを使用します。
nnoremap <expr> GG ":echom " .. screencol() .. "\n"
nnoremap <silent> GG :echom screencol()<CR>
noremap GG <Cmd>echom screencol()<CR>
戻り値
(any)
screenpos({winid}, {lnum}, {col}) screenpos()
結果は、ウィンドウ{winid}のバッファ行{lnum}、列{col}にあるテキスト文字の画面位置を示す辞書です。{col}は1から始まるバイトインデックスです。この辞書には、以下のメンバーが含まれています:row(画面行)、col(最初の画面列)、endcol(最後の画面列)、curscol(カーソルの画面列)。指定した位置が表示されていない場合、すべての値は0になります。文字が複数の画面セルを占める場合、「endcol」の値は「col」とは異なります。たとえば、タブの場合、「col」は1、「endcol」は8になる可能性があります。「curscol」の値は、カーソルが配置される場所です。タブの場合は「endcol」と同じになり、倍幅文字の場合は「col」と同じになります。conceal機能はここでは無視され、列番号は'conceallevel'が0であるかのように扱われます。カーソルを正しい位置に設定し、screencol()を使用してconcealを考慮した値を取得できます。位置が閉じられた折りたたみ内にある場合、最初の文字の画面位置が返され、{col}は使用されません。{winid}が無効な場合は、空の辞書を返します。
パラメータ
{winid}整数
{lnum} (integer)
{col} (integer)
戻り値
(any)
screenrow() screenrow()
結果は、カーソルの現在の画面行を示す数値です。一番上の行の番号は1です。この関数は主にテストに使用されます。代わりにwinline()を使用することもできます。
注記:screencol()と同じ制限があります。
戻り値
(any)
screenstring({row}, {col}) screenstring()
結果は、画面上の位置[row, col]にある基本文字とそれに続く合成文字を含む文字列です。これはscreenchars()に似ていますが、文字を含む文字列を返します。これは主にテストに使用されます。rowまたはcolが範囲外の場合、空の文字列を返します。
パラメータ
{row} (integer)
{col} (integer)
戻り値
(any)
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) search() 正規表現パターン{pattern}を検索します。検索はカーソル位置から開始されます(cursor()を使用して設定できます)。
一致が見つかった場合、その行番号が返されます。一致がない場合は0が返され、カーソルは移動しません。エラーメッセージは表示されません。一致した文字列を取得するには、matchbufline()を使用します。
{flags}は文字列であり、以下の文字フラグを含めることができます:'b'(前方ではなく後方検索)、'c'(カーソル位置での一致を受け入れる)、'e'(一致の末尾に移動)、'n'(カーソルを移動しない)、'p'(一致するサブパターンの数を返す(下記参照))、's'(カーソルの以前の位置に'マークを設定)、'w'(ファイルの末尾を折り返す)、'W'(ファイルの末尾を折り返さない)、'z'(0ではなくカーソル列から検索を開始)。'w'と'W'のどちらも指定されていない場合、'wrapscan'オプションが適用されます。
's'フラグが指定されている場合、カーソルが移動した場合のみ'マークが設定されます。's'フラグは'n'フラグと組み合わせることはできません。
'ignorecase''smartcase'、および'magic'が使用されます。
'z'フラグが指定されていない場合、前方検索は常に0列から開始され、カーソルより前のマッチはスキップされます。'cpo'に'c'フラグが存在する場合、次の検索はマッチの後から開始されます。'c'フラグがない場合、次の検索はマッチの開始から1列後から開始されます。これは、重複するマッチに影響します。cpo-cを参照してください。一致が終了する場所を変更するために"\ze"を挿入することもできます。/\zeを参照してください。
後方検索で'z'フラグが指定されている場合、検索は0列から開始されるため、現在の行内の一致は見つかりません(ファイルの末尾を折り返す場合を除く)。
{stopline}引数が指定されている場合、この行の検索後、検索は停止します。これは、検索を特定の行範囲に制限する場合に役立ちます。例
let match = search('(', 'b', line("w0"))
let end = search('END', '', line("w$"))
{stopline}が使用され、0でない場合、ファイルの末尾を折り返さないことも意味します。0の値は、引数を指定しないことと同じです。
{timeout}引数が指定されている場合、このミリ秒数を超えると検索は停止します。したがって、{timeout}が500の場合、検索は0.5秒後に停止します。値は負にすることはできません。0の値は、引数を指定しないことと同じです。
注記:タイムアウトは検索時にのみ考慮され、{skip}式の評価時には考慮されません。
{skip}式が指定されている場合、一致の開始位置にカーソルが配置された状態で評価されます。0以外の値を返す場合、この一致はスキップされます。これは、たとえば、コメントまたは文字列内のマッチをスキップする場合に使用できます。{skip}は、式として評価される文字列、関数参照、またはラムダ式にすることができます。{skip}が省略されているか空の場合、すべての一致が受け入れられます。{skip}の評価でエラーが発生すると、検索は中止され、-1が返されます。search()-sub-match
'p'フラグを使用すると、返される値は\(\)内の最初の一致よりも1大きくなります。一致したものが1つもないが、パターン全体が一致した場合は1になります。列番号も取得するには、searchpos()を使用します。
'n'フラグが使用されていない限り、カーソルは一致の位置に配置されます。
例(引数リスト内のすべてのファイルを参照します)
let n = 1
while n <= argc()            " loop over all files in arglist
  exe "argument " .. n
  " start at the last char in the file and wrap for the
  " first search to find match at start of file
  normal G$
  let flags = "w"
  while search("foo", flags) > 0
    s/foo/bar/g
    let flags = "W"
  endwhile
  update                    " write the file if modified
  let n = n + 1
endwhile
いくつかのフラグを使用する例
echo search('\<if\|\(else\)\|\(endif\)', 'ncpe')
これは、カーソル以下またはカーソル以降でキーワード「if」、「else」、「endif」を検索します。'p'フラグのため、見つかったキーワードに応じて1、2、または3を返し、検索に失敗した場合は0を返します。行の最初の単語にカーソルを置くと
if (foo == 0) | let foo = foo + 1 | endif
関数は1を返します。'c'フラグがない場合、関数は「endif」を見つけ、3を返します。カーソルが「if」の「f」にある場合、'e'フラグがなくても同じことが起こります。'n'フラグは、関数がカーソルを移動しないように指示します。
パラメータ
{pattern} (文字列)
{flags} (string?)
{stopline}整数?
{timeout} (整数?)
{skip}文字列|関数?
戻り値
(any)
searchcount([{options}]) searchcount()
'shortmess'で"S"フラグなしで表示されるものと同様に、最後の検索回数を取得または更新します。"S"フラグが'shortmess'に含まれている場合でも機能します。
これは辞書を返します。前のパターンが設定されておらず、「pattern」が指定されていない場合、辞書は空になります。
キー タイプ 意味
current 数値 マッチの現在の位置。カーソルの位置が最初の一致より前である場合0 exact_match ブール値 "current"が"pos"と一致する場合1、そうでない場合0 total 数値 見つかったマッチの合計数 incomplete 数値 0:検索は完全に完了しました 1:再計算がタイムアウトしました 2:最大カウントを超えました
{options}については、後述します。
nまたはNが押されたときの最後の検索回数を取得するには、recompute: 0でこの関数を呼び出します。これは、nおよびNの最大カウントが99であるため、間違った情報を返す場合があります。99を超えた場合、結果は最大カウント+1(100)になります。正しい情報を取得するには、recompute: 1を指定します。
" result == maxcount + 1 (100) when many matches
let result = searchcount(#{recompute: 0})
" Below returns correct result (recompute defaults
" to 1)
let result = searchcount()
この関数は、'statusline'にカウントを追加する場合に役立ちます。
function! LastSearchCount() abort
  let result = searchcount(#{recompute: 0})
  if empty(result)
    return ''
  endif
  if result.incomplete ==# 1     " timed out
    return printf(' /%s [?/??]', @/)
  elseif result.incomplete ==# 2 " max count exceeded
    if result.total > result.maxcount &&
    \  result.current > result.maxcount
      return printf(' /%s [>%d/>%d]', @/,
      \             result.current, result.total)
    elseif result.total > result.maxcount
      return printf(' /%s [%d/>%d]', @/,
      \             result.current, result.total)
    endif
  endif
  return printf(' /%s [%d/%d]', @/,
  \             result.current, result.total)
endfunction
let &statusline ..= '%{LastSearchCount()}'
" Or if you want to show the count only when
" 'hlsearch' was on
" let &statusline ..=
" \   '%{v:hlsearch ? LastSearchCount() : ""}'
CursorMovedまたはCursorMovedIオートコマンドで役立つ、検索カウントを更新することもできます。
autocmd CursorMoved,CursorMovedI *
  \ let s:searchcount_timer = timer_start(
  \   200, function('s:update_searchcount'))
function! s:update_searchcount(timer) abort
  if a:timer ==# s:searchcount_timer
    call searchcount(#{
    \ recompute: 1, maxcount: 0, timeout: 100})
    redrawstatus
  endif
endfunction
これは、「pattern」を使用して現在のバッファ内で指定されたパターンに一致するテキストをカウントするためにも使用できます。
" Count '\<foo\>' in this buffer
" (Note that it also updates search count)
let result = searchcount(#{pattern: '\<foo\>'})
" To restore old search count by old pattern,
" search again
call searchcount()
{options}辞書である必要があります。以下を含めることができます。
キー タイプ 意味
recompute ブール値 TRUEの場合、nまたはNが実行されたかのようにカウントを再計算します。そうでない場合は、最後に計算された結果を返します(nまたはNが使用され、"S"が'shortmess'に含まれていない場合、またはこの関数が呼び出された場合)。(デフォルト:TRUE) pattern 文字列 これが指定され、@/と異なる場合に再計算します。これは、この関数を呼び出す前に次のコマンドが実行されたのと同じように機能します。
let @/ = pattern
(デフォルト:@/) timeout 数値 0または負の数はタイムアウトなし。結果を再計算するためのタイムアウトミリ秒数(デフォルト:0) maxcount 数値 0または負の数は制限なし。結果を再計算する際に一致したテキストの最大数。検索が合計カウントを超えた場合、「total」の値はmaxcount + 1になります(デフォルト:0) pos リスト [lnum, col, off] 結果を再計算する場合の値。これにより、「current」の結果値が変わります。cursor()getpos()を参照してください(デフォルト:カーソルの位置)
パラメータ
{options} (table?)
戻り値
(any)
searchdecl({name} [, {global} [, {thisblock}]]) searchdecl()
{name}の宣言を検索します。
0以外の{global}引数を使用すると、gDのように、ファイル内の一致を最初に検索します。それ以外の場合は、gdのように、関数内の一致を最初に検索します。
0以外の{thisblock}引数を使用すると、カーソル位置より前に終わる{}ブロック内の一致は無視されます。別のスコープでのみ有効な変数宣言の検索を回避します。
見つかった一致にカーソルを移動します。成功の場合は0、失敗の場合は0以外の値を返します。例
if searchdecl('myvar') == 0
   echo getline('.')
endif
パラメータ
{name} (文字列)
{global}ブール値?
{thisblock}ブール値?
戻り値
(any)
searchpair()
searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) ネストされた開始-終了ペアの一致を検索します。これは、間に他のif/endifペアがある場合でも、「if」に一致する「endif」を見つけるために使用できます。検索はカーソルから開始されます。デフォルトでは前方検索ですが、{flags}に'b'を含めると後方検索になります。一致が見つかった場合、カーソルはその位置に配置され、行番号が返されます。一致が見つからない場合は、0または-1が返され、カーソルは移動しません。エラーメッセージは表示されません。
{start}{middle}、および{end}はパターンです。パターンを参照してください。\( \)ペアを含めることはできません。\%( \)の使用は許可されています。{middle}が空でない場合、どちらの方向から検索しても見つかりますが、ネストされた開始-終了ペア内にはありません。一般的な用途は
echo searchpair('\<if\>', '\<else\>', '\<endif\>')
{middle}を空のままにすると、「else」はスキップされます。
{flags} 'b'、'c'、'n'、's'、'w'、および'W'はsearch()と同様に使用されます。さらに、'r'(一致が見つからなくなるまで繰り返す。外部ペアが見つかることを意味する。'W'フラグが意味する)'m'(一致を含む行番号ではなく、一致の数値を返す。'r'が使用されている場合、> 1になる)。注記:ファイルの末尾を折り返すのを避けるために、'W'フラグを使用することをお勧めします。
{start}{middle}、または{end}の一致が見つかった場合、{skip}式は一致の開始位置にカーソルが配置された状態で評価されます。この一致をスキップする場合は、0以外の値を返す必要があります。たとえば、コメントまたは文字列内にある場合などです。{skip}が省略されているか空の場合、すべての一致が受け入れられます。{skip}の評価でエラーが発生すると、検索は中止され、-1が返されます。{skip}は文字列、ラムダ式、funcref、またはpartialにすることができます。その他の種類では、関数が失敗します。
{stopline}{timeout} については、search() を参照してください。
'ignorecase' の値が使用されます。'magic' は無視され、パターンは有効であるかのように使用されます。
検索はカーソル位置から正確に開始されます。検索方向の次の文字に {start}{middle}、または {end} が一致するものが最初に検出されます。例
if 1
  if 2
  endif 2
endif 1
"if 2" から開始し、カーソルが "i" の位置にある場合、前方検索では "endif 2" が検出されます。"if 2" の直前の文字から開始すると、"endif 1" が検出されます。これは "if 2" が最初に検出され、それが "if 2" から "endif 2" までのネストされた if/endif として扱われるためです。後方検索で {end} が複数文字の場合、カーソルが一致する end の中に存在する際に対応する start を見つけるために、パターンの最後に "\zs" を追加すると便利です。
例:Vim スクリプトで "endif" コマンドを見つける
echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
\ 'getline(".") =~ "^\\s*\""')
一致を見つけるべき "if" の位置、またはその後の位置にカーソルを置く必要があります。バックスラッシュを二重にする必要がないように、シングルクォート文字列が使用されていることに注意してください。skip 式は、行の先頭にあるコメントのみをキャッチし、コマンドの後にあるコメントはキャッチしません。また、行の途中に "en" または "if" という単語があると、一致とみなされます。別の例として、"}" に対応する "{" を検索します。
echo searchpair('{', '', '}', 'bW')
これは、一致を見つけるべき "}" の位置、またはその前の位置にカーソルがある場合に機能します。構文ハイライトで文字列として認識された一致を拒否するには
echo searchpair('{', '', '}', 'bW',
     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
パラメータ
{start} (string)
{middle} (string)
{end_} (string)
{flags} (string?)
{skip}文字列|関数?
{stopline}整数?
{timeout} (整数?)
戻り値
(integer)
searchpairpos()
searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) searchpair() と同じですが、一致の行番号と列位置を含む List を返します。List の最初の要素は行番号、2 番目の要素は一致の列位置のバイトインデックスです。一致が見つからない場合は [0, 0] を返します。
let [lnum,col] = searchpairpos('{', '', '}', 'n')
match-parens では、より大きく、より有用な例を参照できます。
パラメータ
{start} (string)
{middle} (string)
{end_} (string)
{flags} (string?)
{skip}文字列|関数?
{stopline}整数?
{timeout} (整数?)
戻り値
([integer, integer])
searchpos()
searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) search() と同じですが、一致の行番号と列位置を含む List を返します。List の最初の要素は行番号、2 番目の要素は一致の列位置のバイトインデックスです。一致が見つからない場合は [0, 0] を返します。例
let [lnum, col] = searchpos('mypattern', 'n')
'p' フラグが指定されている場合、サブパターン一致番号を含む追加の項目があります search()-sub-match。例
let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
この例では、小文字が見つかった場合 ("/\l") "submatch" は 2、大文字が見つかった場合 ("/\u") は 3 です。
パラメータ
{pattern} (文字列)
{flags} (string?)
{stopline}整数?
{timeout} (整数?)
{skip}文字列|関数?
戻り値
(any)
serverlist() serverlist()
サーバーアドレスのリストを返します。すべてのサーバーが停止している場合は空のリストを返します。serverstart() serverstop()
echo serverlist()
戻り値
(any)
serverstart([{address}]) serverstart()
{address} でソケットまたは名前付きパイプを開き、RPC メッセージをリッスンします。クライアントは、返されたアドレスに API コマンドを送信して Nvim を制御できます。
アドレス文字列を返します(これは {address} 引数とは異なる場合があります。下記参照)。
{address} にコロン (":") が含まれる場合、最後の ":" でホストとポートが区切られた TCP/IPv4/IPv6 アドレスです(空または 0 を指定すると、ランダムなポートが割り当てられます)。
それ以外の場合、{address} は名前付きパイプへのパスです(Windows を除く)。
{address} にスラッシュ ("/") が含まれない場合、次の形式で生成されたパスの "name" 部分として扱われます。
stdpath("run").."/{name}.{pid}.{counter}"
{address} が省略された場合、名前は "nvim" になります。
echo serverstart()
=> /tmp/nvim.bram/oknANW/nvim.15430.5
すべての Nvim サーバーをリストする bash コマンドの例
ls ${XDG_RUNTIME_DIR:-${TMPDIR}nvim.${USER}}/*/nvim.*.0
名前付きパイプの例
if has('win32')
  echo serverstart('\\.\pipe\nvim-pipe-1234')
else
  echo serverstart('nvim.sock')
endif
TCP/IP アドレスの例
echo serverstart('::1:12345')
パラメータ
{address} (string?)
戻り値
(any)
serverstop({address}) serverstop()
{address} のパイプまたはソケットを閉じます。{address} が有効な場合は TRUE、そうでない場合は FALSE を返します。v:servername が停止している場合は、serverlist() で次の利用可能なアドレスに設定されます。
パラメータ
{address} (string)
戻り値
(any)
setbufline({buf}, {lnum}, {text}) setbufline()
バッファ {buf}{lnum} 行目を {text} に設定します。これは、指定されたバッファに対する setline() と同様に機能します。
この関数は、ロード済みのバッファでのみ機能します。必要に応じて、最初にbufload()を呼び出してください。
行を挿入するには appendbufline() を使用してください。
{text} は、1 行を設定するための文字列、または複数行を設定するための文字列のリストにすることができます。リストが最後の行を超えている場合は、それらの行が追加されます。リストが空の場合、何も変更されず、0 が返されます。
{buf}の使用方法については、上記のbufname()を参照してください。
{lnum}setline() と同様に使用されます。"$" を使用して、バッファ {buf} の最後の行を参照します。{lnum} が最後の行のすぐ下にある場合、{text} は最後の行の下に追加されます。成功した場合は 0、失敗した場合は 1 が返されます。
{buf} が有効なバッファでないか、{lnum} が無効な場合、エラーメッセージが表示されます。
パラメータ
{buf} (integer|string)
{lnum} (integer)
{text} (string|string[])
戻り値
(any)
setbufvar({buf}, {varname}, {val}) setbufvar()
バッファ {buf} のオプションまたはローカル変数 {varname}{val} に設定します。これはグローバルまたはローカルウィンドウオプションにも機能しますが、グローバルまたはローカルウィンドウ変数には機能しません。ローカルウィンドウオプションの場合、グローバル値は変更されません。{buf} の使用方法については、上記の bufname() を参照してください。{varname} 引数は文字列です。"b:" を除いた変数名を使用する必要があることに注意してください。例
call setbufvar(1, "&mod", 1)
call setbufvar("todo", "myvar", "foobar")
この関数はサンドボックスでは使用できません。
パラメータ
{buf} (integer|string)
{varname} (文字列)
{val} (any)
戻り値
(any)
setcellwidths({list}) setcellwidths()
文字範囲のセル幅のオーバーライドを指定します。これは、ターミナルに表示される際の文字の幅を(画面セルで数えた)Vim に指示します。これらの値は 'ambiwidth' をオーバーライドします。例
call setcellwidths([
             \ [0x111, 0x111, 1],
             \ [0x2194, 0x2199, 2],
             \ ])
{list} 引数は、それぞれ3つの数値を含むリストのリストです:[{low}, {high}, {width}]。E1109 E1110 {low}{high} は同じにすることができ、その場合は1文字を指します。それ以外の場合は、{low} から {high} までの文字範囲(両端を含む)です。E1111 E1114 値が 0x80 以上の文字のみを使用できます。
{width} は、画面セルの文字幅を示す 1 または 2 のいずれかでなければなりません。E1112
引数が無効な場合、または範囲が他の範囲と重複する場合にもエラーが発生します。E1113
新しい値によって 'fillchars' または 'listchars' が無効になる場合は、拒否され、エラーが発生します。
オーバーライドをクリアするには、空の {list} を渡します。
call setcellwidths([])
既知の絵文字文字の効果を確認するには、スクリプト $VIMRUNTIME/scripts/emoji_list.lua を使用できます。テキスト内をカーソルで移動して、ターミナルのセル幅が、Vim が各絵文字について知っている幅と一致するかどうかを確認します。正しく表示されない場合は、{list} 引数を調整する必要があります。
パラメータ
{list}any[]
戻り値
(any)
setcharpos({expr}, {list}) setcharpos()
setpos() と同じですが、行内のバイトインデックスではなく、指定された列番号を文字インデックスとして使用します。
例:8行目に "여보세요" というテキストがある場合
call setcharpos('.', [0, 8, 4, 0])
4番目の文字 '요' にカーソルを置きます。
call setpos('.', [0, 8, 4, 0])
2番目の文字 '보' にカーソルを置きます。
パラメータ
{expr} (string)
{list} (integer[])
戻り値
(any)
setcharsearch({dict}) setcharsearch()
現在の文字検索情報を {dict} に設定します。これは、次のエントリの1つ以上を含みます。
後続の , または ; コマンドに使用される文字。空の文字列は、文字検索の前方方向をクリアします。前方検索の場合 1、後方検索の場合 0。文字種の検索の種類。 t または T 文字検索の場合は 1、f または F 文字検索の場合は 0
これは、スクリプトからユーザーの文字検索を保存/復元するのに役立ちます。
let prevsearch = getcharsearch()
" Perform a command which clobbers user's search
call setcharsearch(prevsearch)
getcharsearch() も参照してください。
パラメータ
{dict} (string)
戻り値
(any)
setcmdline({str} [, {pos}]) setcmdline()
コマンドラインを {str} に設定し、カーソル位置を {pos} に設定します。{pos} が省略された場合、カーソルはテキストの後に配置されます。成功した場合は 0、コマンドラインを編集していない場合は 1 を返します。
パラメータ
{str} (string)
{pos} (integer?)
戻り値
(any)
setcmdpos({pos}) setcmdpos()
コマンドラインのカーソル位置をバイト位置 {pos} に設定します。最初の位置は 1 です。getcmdpos() を使用して現在の位置を取得します。コマンドラインの編集中にのみ機能するため、c_CTRL-\_ec_CTRL-R_=、または c_CTRL-R_CTRL-R を '=' と共に使用する必要があります。c_CTRL-\_ec_CTRL-R_CTRL-R を '=' と共に使用した場合、コマンドラインが式に設定された後に位置が設定されます。c_CTRL-R_= の場合、式を評価した後、結果のテキストを挿入する前に設定されます。数値が大きすぎる場合、カーソルは行末に配置されます。1 より小さい数値は、結果が定義されていません。成功した場合は 0、コマンドラインを編集していない場合は 1 を返します。
パラメータ
{pos} (integer)
戻り値
(any)
setcursorcharpos({lnum}, {col} [, {off}]) setcursorcharpos()
setcursorcharpos({list}) cursor() と同じですが、行内のバイトインデックスではなく、指定された列番号を文字インデックスとして使用します。
例:4行目に "여보세요" というテキストがある場合
call setcursorcharpos(4, 3)
3番目の文字 '세' にカーソルを置きます。
call cursor(4, 3)
1番目の文字 '여' にカーソルを置きます。
パラメータ
{list} (integer[])
戻り値
(any)
setenv({name}, {val}) setenv()
環境変数 {name}{val} に設定します。例
call setenv('HOME', '/home/myhome')
{val}v:null の場合、環境変数は削除されます。expr-env も参照してください。
パラメータ
{name} (文字列)
{val} (string)
戻り値
(any)
setfperm({fname}, {mode}) setfperm() chmod {fname} のファイルパーミッションを {mode} に設定します。{mode} は、9文字の文字列でなければなりません。"rwxrwxrwx" の形式で、各 "rwx" のグループは、ファイルの所有者、ファイルが属するグループ、その他のユーザーのパーミッションを順番に表します。'-' 文字はパーミッションが無効であることを意味し、他の文字は有効であることを意味します。マルチバイト文字はサポートされていません。
たとえば "rw-r-----" は、ユーザーに対して読み書き可能、グループに対して読み取り可能、その他ユーザーに対してアクセス不可を意味します。"xx-x-----" も同じことを行います。
成功した場合は 0 以外の値を、失敗した場合は 0 を返します。
パーミッションを読み取るには getfperm() を参照してください。
パラメータ
{fname} (string)
{mode} (string)
戻り値
(any)
setline({lnum}, {text}) setline()
現在のバッファの {lnum} 行目を {text} に設定します。行を挿入するには append() を使用します。別のバッファの行を設定するには setbufline() を使用します。
{lnum}getline() と同様に使用されます。{lnum} が最終行のすぐ下にある場合、{text} は最終行の下に追加されます。{text} は任意の型、または任意の型のリストにすることができ、各項目は文字列に変換されます。{text} が空のリストの場合、何も変更されず、FALSEが返されます。
これが成功した場合、FALSEが返されます。失敗した場合({lnum}が無効であることが最も可能性が高い)、TRUEが返されます。
call setline(5, strftime("%c"))
{text}リスト の場合、{lnum} 行目以降の行はリストの項目に設定されます。例
call setline(5, ['aaa', 'bbb', 'ccc'])
これは次のものと同等です。
for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
  call setline(n, l)
endfor
注記: '[' と ']' マークは設定されません。
パラメータ
{lnum} (integer)
{text} (any)
戻り値
(any)
setloclist({nr}, {list} [, {action} [, {what}]]) setloclist()
ウィンドウ{nr}の場所リストを作成、置換、または追加します。{nr} はウィンドウ番号または ウィンドウID にすることができます。{nr} がゼロの場合、現在のウィンドウが使用されます。
場所リストウィンドウの場合、表示されている場所リストが変更されます。無効なウィンドウ番号{nr}の場合、-1が返されます。それ以外の場合は、setqflist() と同じです。 location-listも参照してください。
{action}については、setqflist-actionを参照してください。
オプションの{what}辞書引数が指定されている場合、{what}にリストされている項目のみが設定されます。サポートされている{what}内のキーのリストについては、setqflist()を参照してください。
パラメータ
{nr} (integer)
{list} (任意)
{action} (string?)
{what} (table?)
戻り値
(any)
setmatches({list} [, {win}]) setmatches()
現在のウィンドウに対してgetmatches()によって保存された一致のリストを復元します。成功した場合は0、失敗した場合は-1を返します。リストが復元される前に、現在の一致はすべてクリアされます。getmatches()の例を参照してください。{win}が指定されている場合、現在のウィンドウの代わりにこの番号またはウィンドウIDを持つウィンドウが使用されます。
パラメータ
{list} (任意)
{win} (integer?)
戻り値
(any)
setpos({expr}, {list}) setpos()
文字列{expr}の位置を設定します。可能な値:. カーソル 'x マーク x
{list}は、4つまたは5つの数値を含むリストでなければなりません:[bufnum, lnum, col, off] [bufnum, lnum, col, off, curswant]
"bufnum"はバッファ番号です。現在のバッファには0を使用できます。大文字のマークを設定する場合、「bufnum」はマークの位置に使用されます。その他のマークの場合、マークを設定するバッファを指定します。bufnr()関数を使用して、ファイル名をバッファ番号に変換できます。カーソルと'マークを設定する場合、「bufnum」は無視されます。これらはバッファではなくウィンドウに関連付けられているためです。ジャンプリストは変更されません。
"lnum"と"col"はバッファ内の位置です。最初の列は1です。マークを削除するには、"lnum"にゼロを使用します。"col"が1より小さい場合、1が使用されます。バイト数ではなく文字数を使用するには、setcharpos()を使用します。
"off"数は、'virtualedit'が設定されている場合にのみ使用されます。その場合、文字の先頭からのスクリーン列のオフセットです。例:<Tab>内または最後の文字の後。
"curswant"数は、カーソル位置を設定する場合にのみ使用されます。カーソルを垂直方向に移動したときの優先列を設定します。"curswant"数が存在しない場合、優先列は設定されません。存在し、マーク位置を設定する場合、使用されません。
行番号を変更すると、'<'と'>'ではマークが事実上入れ替わる可能性があることに注意してください。そのため、'<'は常に'>'の前に来ます。
位置を設定できた場合は0、それ以外の場合は-1を返します。{expr}が無効な場合は、エラーメッセージが表示されます。
setcharpos()getpos()、およびgetcurpos()も参照してください。
これは、垂直方向に移動するための優先列を復元しません。これを使用してカーソル位置を設定した場合、jkの移動は前の列にジャンプします!優先列も設定するには、cursor()を使用してください。winrestview()の"curswant"キーも参照してください。
パラメータ
{expr} (string)
{list} (integer[])
戻り値
(any)
setqflist({list} [, {action} [, {what}]]) setqflist()
クイックフィックスリストを作成、置換、または追加します。
オプションの{what}辞書引数が指定されている場合、{what}にリストされている項目のみが設定されます。最初の{list}引数は無視されます。サポートされている{what}内の項目については、以下を参照してください。setqflist-what
{what}が存在しない場合、{list}内の項目が使用されます。各項目は辞書である必要があります。{list}内の辞書以外の項目は無視されます。各辞書項目には、次のエントリを含めることができます。
bufnr バッファ番号。有効なバッファの番号でなければなりません filename ファイル名。"bufnr"が存在しないか無効な場合にのみ使用されます。 module モジュールの名前。指定された場合、ファイル名の代わりにクイックフィックスエラーウィンドウで使用されます。 lnum ファイル内の行番号 end_lnum 項目が複数の行にまたがる場合の行の終わり pattern エラーを見つけるために使用される検索パターン col ファイル内の列番号 vcol 0以外の値:「col」は視覚的な列番号 0の値:「col」はバイトインデックス end_col 項目が複数の列にまたがる場合の列の終わり nr エラー番号 text エラーの説明 type 1文字のエーラータイプ('E'、'W'など)。有効な認識済みエラーメッセージ user_data 項目に関連付けられたカスタムデータ。任意の型にすることができます。
"col"、"vcol"、"nr"、"type"、および"text"エントリはオプションです。"lnum"または"pattern"エントリを使用して、一致するエラー行を見つけることができます。"filename"と"bufnr"エントリが存在しないか、"lnum"と"pattern"のいずれのエントリも存在しない場合、その項目はエラー行として処理されません。"pattern"と"lnum"の両方が存在する場合、「pattern」が使用されます。"valid"エントリが提供されていない場合、"bufnr"が有効なバッファであるか"filename"が存在する場合、有効フラグが設定されます。空の{list}を提供した場合、クイックフィックスリストはクリアされます。リストはgetqflist()が返すものとまったく同じではないことに注意してください。
{action}の値:setqflist-action E927 'a' {list}の項目は既存のクイックフィックスリストに追加されます。既存のリストがない場合、新しいリストが作成されます。
'r' 現在のクイックフィックスリストの項目は、{list}の項目に置き換えられます。リストをクリアするためにも使用できます。
call setqflist([], 'r')
'u' 'r'と同様ですが、クイックフィックスリスト内の現在の選択を保持しようとします。'f' クイックフィックススタック内のすべてのクイックフィックスリストが解放されます。
{action}が存在しないか' 'に設定されている場合、新しいリストが作成されます。新しいクイックフィックスリストはスタック内の現在のクイックフィックスリストの後に追加され、その後のすべてのリストは解放されます。スタックの最後に新しいクイックフィックスリストを追加するには、{what}で"nr"を"$"に設定します。
辞書{what}で指定できる項目:context クイックフィックスリストコンテキスト。quickfix-contextを参照 efm "lines"からテキストを解析するときに使用するerrorformat。これが存在しない場合、'errorformat'オプション値が使用されます。quickfix-parseを参照 id クイックフィックスリスト識別子 quickfix-ID idx "id"または"nr"で指定されたクイックフィックスリスト内の現在のエントリのインデックス。'$'に設定されている場合、リストの最後のエントリが現在のエントリとして設定されます。quickfix-indexを参照 items クイックフィックスエントリのリスト。{list}引数と同じです。 lines 'errorformat'を使用して行のリストを解析し、結果のエントリをクイックフィックスリスト{nr}または{id}に追加します。リスト値のみがサポートされています。quickfix-parseを参照 nr クイックフィックススタック内のリスト番号。0は現在のクイックフィックスリスト、"$"は最後のクイックフィックスリストを意味します。 quickfixtextfunc クイックフィックスウィンドウに表示するテキストを取得する関数。値は、関数の名前、funcref、またはラムダにすることができます。関数の書き方と例については、quickfix-window-functionを参照してください。 title クイックフィックスリストのタイトルテキスト。quickfix-titleを参照 {what}内のサポートされていないキーは無視されます。"nr"項目が存在しない場合、現在のクイックフィックスリストが変更されます。新しいクイックフィックスリストを作成する場合、「nr」はクイックフィックススタックサイズより1大きい値に設定できます。クイックフィックスリストを変更する場合、正しいリストが変更されるように、リストを指定するには"id"を"nr"の代わりに使用してください。
例(setqflist-examplesも参照)
call setqflist([], 'r', {'title': 'My search'})
call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]})
成功した場合は0、失敗した場合は-1を返します。
この関数は、'errorformat'設定とは無関係にクイックフィックスリストを作成するために使用できます。最初の位置にジャンプするには、:cc 1のようなコマンドを使用します。
パラメータ
{list} (vim.quickfix.entry[])
{action} (string?)
{what} (vim.fn.setqflist.what?)
戻り値
(any)
setreg({regname}, {value} [, {options}]) setreg()
レジスタ{regname}{value}に設定します。{regname}が""または"@"の場合、名前のないレジスタ'"'が使用されます。{regname}引数は文字列です。
{value}は、getreg()またはgetreginfo()によって返される任意の値(リストまたは辞書を含む)にすることができます。{options}に"a"が含まれている場合、または{regname}が大文字の場合、値は追加されます。
{options}には、レジスタタイプの指定も含まれる場合があります。"c"または"v" 文字単位モード "l"または"V" 行単位モード "b"または"<CTRL-V>" ブロック単位の視覚的モード "b"または"<CTRL-V>"の直後に数値が続く場合、これは選択の幅として使用されます。指定されていない場合、ブロックの幅は最も長い行の文字数(<Tab>を1文字としてカウント)に設定されます。{options}に"u"または'"'が含まれている場合、名前のないレジスタはレジスタ{regname}を指すように設定されます。
{options}にレジスタ設定が含まれていない場合、デフォルトでは、文字列{value}の場合は<NL>で終わらない限りキャラクタモードが、リスト{value}の場合は行単位モードが使用されます。ブロック単位モードは自動的には選択されません。成功した場合は0を、失敗した場合は0以外の値を返します。
E883
注記: 検索および式レジスタの設定には、複数の項目を含むリストを使用することはできません。項目を含まないリストは空文字列として機能します。
call setreg(v:register, @*)
call setreg('*', @%, 'ac')
call setreg('a', "1\n2\n3", 'b5')
call setreg('"', { 'points_to': 'a'})
この例では、レジスタの保存と復元を行う関数の使用方法を示しています。
let var_a = getreginfo()
call setreg('a', var_a)
または
let var_a = getreg('a', 1, 1)
let var_amode = getregtype('a')
" ....
call setreg('a', var_a, var_amode)
注記: getreg()の第3引数を使用せずにレジスタ値を確実に復元することはできません。第3引数がない場合、改行は改行として、NULLバイトも改行として表現されます。NL-used-for-Nulを参照してください。
何も追加せずにレジスタの型を変更することもできます。
        call setreg('a', '', 'al')
Parameters: ~
  • {regname} (`string`)
  • {value} (`any`)
  • {options} (`string?`)
Return: ~
  (`any`)
settabvar({tabnr}, {varname}, {val}) settabvar()
タブページ{tabnr}でタブローカル変数{varname}{val}に設定します。t:var {varname}引数は文字列です。「t:」を除いた変数名を使用する必要があります。タブは1から番号付けされます。この関数はサンドボックスでは使用できません。
パラメータ
{tabnr} (整数)
{varname} (文字列)
{val} (any)
戻り値
(any)
settabwinvar({tabnr}, {winnr}, {varname}, {val}) settabwinvar()
ウィンドウ{winnr}でオプションまたはローカル変数{varname}{val}に設定します。タブは1から番号付けされます。現在のタブページにはsetwinvar()を使用します。{winnr}には、ウィンドウ番号またはウィンドウIDを使用できます。{winnr}が0の場合、現在のウィンドウが使用されます。これはグローバルまたはローカルバッファオプションにも機能しますが、グローバルまたはローカルバッファ変数には機能しません。ローカルバッファオプションの場合、グローバル値は変更されません。「w:」を除いた変数名を使用する必要があります。例
call settabwinvar(1, 1, "&list", 0)
call settabwinvar(3, 2, "myvar", "foobar")
この関数はサンドボックスでは使用できません。
パラメータ
{tabnr} (整数)
{winnr} (整数)
{varname} (文字列)
{val} (any)
戻り値
(any)
settagstack({nr}, {dict} [, {action}]) settagstack()
{dict}を使用して、ウィンドウ{nr}のタグスタックを変更します。{nr}には、ウィンドウ番号またはウィンドウIDを使用できます。
{dict}でサポートされている項目のリストについては、gettagstack()を参照してください。「curidx」はタグスタックを変更する前に有効になります。E962
タグスタックの変更方法は、{action}引数によって異なります。
{action}が存在しないか、「r」に設定されている場合、タグスタックは置き換えられます。
{action}が「a」に設定されている場合、{dict}からの新しいエントリがタグスタックにプッシュ(追加)されます。
{action}が「t」に設定されている場合、タグスタックの現在エントリまたは{dict}の「curidx」からすべてのエントリが削除され、新しいエントリがスタックにプッシュされます。
変更後のタグスタックの長さの後、現在のインデックスは1に設定されます。
成功した場合は0、失敗した場合は-1を返します。
例(その他の例についてはtagstack-examplesを参照):ウィンドウ3のタグスタックを空にする
call settagstack(3, {'items' : []})
タグスタックの保存と復元
let stack = gettagstack(1003)
" do something else
call settagstack(1003, stack)
unlet stack
パラメータ
{nr} (integer)
{dict} (any)
{action} (string?)
戻り値
(any)
setwinvar({nr}, {varname}, {val}) setwinvar()
settabwinvar()と同様に、現在のタブページに対して機能します。例
        call setwinvar(1, "&list", 0)
        call setwinvar(2, "myvar", "foobar")
Parameters: ~
  • {nr} (`integer`)
  • {varname} (`string`)
  • {val} (`any`)
Return: ~
  (`any`)
sha256({string}) sha256()
{string}のSHA256チェックサムである64個の16進文字を含む文字列を返します。
パラメータ
{string} (string)
戻り値
(any)
shellescape({string} [, {special}]) shellescape()
シェルコマンド引数として使用するために{string}をエスケープします。
Windowsでは、'shellslash'が設定されていない場合、{string}を二重引用符で囲み、{string}内のすべての二重引用符を二重にします。それ以外の場合は、{string}を単一引用符で囲み、すべての"'"を"'\''"に置き換えます。
{special}引数は、Vimコマンドで使用されるキーワードの追加のエスケープを追加します。それが非ゼロ引数の場合
"!"、"%"、"#"、"<cword>"などの特殊な項目(expand()にリストされている)には、バックスラッシュが前に付けられます。バックスラッシュは:!コマンドによって再び削除されます。
<NL>文字はエスケープされます。
'shell'の末尾に"csh"が含まれている場合
"!"文字はエスケープされます。これは、cshとtcshが単一引用符内でも履歴置換に"!"を使用するためです。
<NL>文字はエスケープされます({special}非ゼロ引数の場合は2回)。
'shell'の末尾に"fish"が含まれている場合、"\"文字はエスケープされます。fishでは、単一引用符内でエスケープ文字として使用されるためです。
:!コマンドでの使用例
exe '!dir ' .. shellescape(expand('<cfile>'), 1)
これにより、カーソル下のファイルのディレクトリ一覧が表示されます。system()での使用例
call system("chmod +w -- " .. shellescape(expand("%")))
::Sも参照してください。
パラメータ
{string} (string)
{special} (boolean?)
戻り値
(any)
shiftwidth([{col}]) shiftwidth()
'shiftwidth'の有効値を返します。これは、0でない限り'shiftwidth'値であり、0の場合は'tabstop'値です。インデントプラグインとの下位互換性を維持するには、これを使用します。
if exists('*shiftwidth')
  func s:sw()
    return shiftwidth()
  endfunc
else
  func s:sw()
    return &sw
  endfunc
endif
そして、&swの代わりにs:sw()を使用します。
引数{col}が1つの場合、これは'shiftwidth'値を返す列番号として使用されます。'vartabstop'機能に関係します。{col}引数が指定されていない場合、列1が想定されます。
パラメータ
{col} (integer?)
戻り値
(integer)
sign_define({name} [, {dict}]) sign_define()
sign_define({list}) {name}という名前の新しいサインを定義するか、既存のサインの属性を変更します。これは:sign-defineコマンドに似ています。
名前の競合を避けるために、{name}に一意のテキストをプレフィックスとして付けます。サインの配置時のような{group}はありません。
{name}は文字列または数値にすることができます。オプションの{dict}引数は、サインの属性を指定します。次の値がサポートされています:icon サインのビットマップファイルへのフルパス。linehl サインが配置されている行全体に使用されるハイライトグループ。priority サインのデフォルトの優先順位値。numhl サインが配置されている行番号に使用されるハイライトグループ。text アイコンがない場合、またはGUIが使用されていない場合に表示されるテキスト。texthl テキスト項目に使用されるハイライトグループ。culhl カーソルがサインと同じ行にあり、'cursorline'が有効になっている場合のテキスト項目に使用されるハイライトグループ。
{name}という名前のサインが既に存在する場合は、サインの属性が更新されます。
1つの引数{list}を使用して、サインのリストを定義できます。各リスト項目は、{dict}の上記の項目と、サイン名の「name」項目を含む辞書です。
成功した場合は0を、失敗した場合は-1を返します。1つの引数{list}が使用されている場合は、定義された各サインに対して1つの値のリストを返します。
call sign_define("mySign", {
        \ "text" : "=>",
        \ "texthl" : "Error",
        \ "linehl" : "Search"})
call sign_define([
        \ {'name' : 'sign1',
        \  'text' : '=>'},
        \ {'name' : 'sign2',
        \  'text' : '!!'}
        \ ])
パラメータ
{list} (vim.fn.sign_define.dict[])
戻り値
((0|-1)[])
sign_getdefined([{name}]) sign_getdefined()
定義済みのサインとその属性のリストを取得します。これは:sign-listコマンドに似ています。
{name}が指定されていない場合、定義済みのすべてのサインのリストが返されます。それ以外の場合は、指定されたサインの属性が返されます。
返された値の各リスト項目は、次のエントリを含む辞書です:icon サインのビットマップファイルへのフルパス。linehl サインが配置されている行全体に使用されるハイライトグループ。設定されていない場合は存在しません。name サインの名前。priority サインのデフォルトの優先順位値。numhl サインが配置されている行番号に使用されるハイライトグループ。設定されていない場合は存在しません。text アイコンがない場合、またはGUIが使用されていない場合に表示されるテキスト。texthl テキスト項目に使用されるハイライトグループ。設定されていない場合は存在しません。culhl カーソルがサインと同じ行にあり、'cursorline'が有効になっている場合のテキスト項目に使用されるハイライトグループ。設定されていない場合は存在しません。
サインがなく、{name}が見つからない場合は、空のリストを返します。
" Get a list of all the defined signs
echo sign_getdefined()
" Get the attribute of the sign named mySign
echo sign_getdefined("mySign")
パラメータ
{name} (string?)
戻り値
(vim.fn.sign_getdefined.ret.item[])
sign_getplaced([{buf} [, {dict}]]) sign_getplaced()
バッファまたはすべてバッファに配置されたサインのリストを返します。これは:sign-place-listコマンドに似ています。
オプションのバッファ名{buf}が指定されている場合、そのバッファに配置されたサインのリストのみが返されます。{buf}の使用については、bufname()を参照してください。オプションの{dict}には、次のエントリを含めることができます:group このグループのサインのみを選択します。id この識別子のサインを選択します。lnum この行に配置されたサインを選択します。{lnum}の使用については、line()を参照してください。{group}が"*"の場合、グローバルグループを含むすべてのグループのサインが返されます。{group}が指定されていないか空文字列の場合、グローバルグループのサインのみが返されます。引数が指定されていない場合、すべてバッファに配置されたグローバルグループのサインが返されます。sign-groupを参照してください。
返された値の各リスト項目は、次のエントリを含む辞書です:bufnr サインを含むバッファの数。signs {bufnr}に配置されたサインのリスト。各リスト項目は、以下にリストされているエントリを含む辞書です。
各サインの辞書には、次のエントリが含まれます:group サイングループ。グローバルグループの場合は''に設定されます。id サインの識別子。lnum サインが配置されている行番号。name 定義済みのサインの名前。priority サインの優先順位。
バッファ内の返されたサインは、行番号と優先順位でソートされます。
失敗した場合、または配置されたサインがない場合は、空のリストを返します。
" Get a List of signs placed in eval.c in the
" global group
echo sign_getplaced("eval.c")
" Get a List of signs in group 'g1' placed in eval.c
echo sign_getplaced("eval.c", {'group' : 'g1'})
" Get a List of signs placed at line 10 in eval.c
echo sign_getplaced("eval.c", {'lnum' : 10})
" Get sign with identifier 10 placed in a.py
echo sign_getplaced("a.py", {'id' : 10})
" Get sign with id 20 in group 'g1' placed in a.py
echo sign_getplaced("a.py", {'group' : 'g1',
                                \  'id' : 20})
" Get a List of all the placed signs
echo sign_getplaced()
パラメータ
{buf} (整数|文字列?)
{dict} (vim.fn.sign_getplaced.dict?)
戻り値
(vim.fn.sign_getplaced.ret.item[])
sign_jump({id}, {group}, {buf}) sign_jump()
{buf}を含むバッファを開くか、{buf}を含むウィンドウにジャンプし、{group}のサイン{id}にカーソルを配置します。これは:sign-jumpコマンドに似ています。
{group}が空文字列の場合、グローバルグループが使用されます。{buf}の使用については、bufname()を参照してください。
サインの行番号を返します。引数が無効な場合は-1を返します。
" Jump to sign 10 in the current buffer
call sign_jump(10, '', '')
パラメータ
{id} (integer)
{group} (string)
{buf} (integer|string)
戻り値
(integer)
sign_place({id}, {group}, {name}, {buf} [, {dict}]) sign_place()
{name}として定義されたサインをファイルまたはバッファ{buf}の行{lnum}に配置し、サインに{id}{group}を割り当てます。これは:sign-placeコマンドに似ています。
符号識別子{id}がゼロの場合、新しい識別子が割り当てられます。それ以外の場合は、指定された数値が使用されます。{group}は符号グループ名です。グローバル符号グループを使用するには、空文字列を使用します。{id}に対して{group}は名前空間として機能するため、2つのグループで同じIDを使用できます。詳細は符号識別子符号グループを参照してください。
{name}は定義済みの符号を参照します。{buf}はバッファ名または番号を参照します。許容値については、bufname()を参照してください。
オプションの{dict}引数は、以下のエントリをサポートします: lnum ファイルまたはバッファ{buf}内の符号を配置する行番号。許容値については、line()を参照してください。priority 符号の優先度。詳細は符号の優先度を参照してください。
オプションの{dict}が指定されていない場合、グループ{group}内の配置済みの符号{id}が、定義済みの符号{name}を使用するように変更されます。
成功した場合は符号識別子を、失敗した場合は-1を返します。
" Place a sign named sign1 with id 5 at line 20 in
" buffer json.c
call sign_place(5, '', 'sign1', 'json.c',
                                \ {'lnum' : 20})
" Updates sign 5 in buffer json.c to use sign2
call sign_place(5, '', 'sign2', 'json.c')
" Place a sign named sign3 at line 30 in
" buffer json.c with a new identifier
let id = sign_place(0, '', 'sign3', 'json.c',
                                \ {'lnum' : 30})
" Place a sign named sign4 with id 10 in group 'g3'
" at line 40 in buffer json.c with priority 90
call sign_place(10, 'g3', 'sign4', 'json.c',
                \ {'lnum' : 40, 'priority' : 90})
パラメータ
{id} (integer)
{group} (string)
{name} (文字列)
{buf} (integer|string)
{dict} (vim.fn.sign_place.dict?)
戻り値
(integer)
sign_placelist({list}) sign_placelist()
1つ以上の符号を配置します。これはsign_place()関数と似ています。{list}引数は、配置する符号のリストを指定します。各リスト項目は、以下の符号属性を持つ辞書です: buffer バッファ名または番号。許容値については、bufname()を参照してください。group 符号グループ。{id}に対して{group}は名前空間として機能するため、2つのグループで同じIDを使用できます。指定されていないか空文字列に設定されている場合は、グローバルグループが使用されます。詳細は符号グループを参照してください。id 符号識別子。指定されていないかゼロの場合は、新しい一意の識別子が割り当てられます。それ以外の場合は、指定された数値が使用されます。詳細は符号識別子を参照してください。lnum 符号を配置するバッファ内の行番号。許容値については、line()を参照してください。name 配置する符号の名前。詳細はsign_define()を参照してください。priority 符号の優先度。複数の符号が1行に配置されている場合、優先度が最も高い符号が使用されます。指定されていない場合、符号の定義で別に指定されていない限り、デフォルト値の10が使用されます。詳細は符号の優先度を参照してください。
{id}が既存の符号を参照している場合、既存の符号は指定された{name}および/または{priority}を使用するように変更されます。
符号識別子のリストを返します。符号の配置に失敗した場合は、対応するリスト項目が-1に設定されます。
" Place sign s1 with id 5 at line 20 and id 10 at line
" 30 in buffer a.c
let [n1, n2] = sign_placelist([
        \ {'id' : 5,
        \  'name' : 's1',
        \  'buffer' : 'a.c',
        \  'lnum' : 20},
        \ {'id' : 10,
        \  'name' : 's1',
        \  'buffer' : 'a.c',
        \  'lnum' : 30}
        \ ])
" Place sign s1 in buffer a.c at line 40 and 50
" with auto-generated identifiers
let [n1, n2] = sign_placelist([
        \ {'name' : 's1',
        \  'buffer' : 'a.c',
        \  'lnum' : 40},
        \ {'name' : 's1',
        \  'buffer' : 'a.c',
        \  'lnum' : 50}
        \ ])
パラメータ
{list} (vim.fn.sign_placelist.list.item[])
戻り値
(整数配列)
sign_undefine([{name}]) sign_undefine()
sign_undefine({list}) 以前定義された符号{name}を削除します。これは:sign-undefineコマンドと似ています。{name}が指定されていない場合、定義済みのすべての符号が削除されます。
1つの引数{list}を使用して、符号のリストを定義解除できます。各リスト項目は符号の名前です。
成功した場合は0を、失敗した場合は-1を返します。1つの引数{list}呼び出しでは、定義解除された各符号ごとに1つの値を持つリストを返します。
" Delete a sign named mySign
call sign_undefine("mySign")
" Delete signs 'sign1' and 'sign2'
call sign_undefine(["sign1", "sign2"])
" Delete all the signs
call sign_undefine()
パラメータ
{list} (string[]?)
戻り値
(整数配列)
sign_unplace({group} [, {dict}]) sign_unplace()
1つ以上のバッファから、以前に配置された符号を削除します。これは:sign-unplaceコマンドと似ています。
{group}は符号グループ名です。グローバル符号グループを使用するには、空文字列を使用します。{group}が"*"に設定されている場合、グローバルグループを含むすべてのグループが使用されます。{group}内の符号は、{dict}のエントリに基づいて選択されます。{dict}内の以下のオプションのエントリがサポートされています: buffer バッファ名または番号。bufname()を参照してください。id 符号識別子 {dict}が指定されていない場合、{group}内のすべての符号が削除されます。
成功した場合は0を、失敗した場合は-1を返します。
        " Remove sign 10 from buffer a.vim
        call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
        " Remove sign 20 in group 'g1' from buffer 3
        call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
        " Remove all the signs in group 'g2' from buffer 10
        call sign_unplace('g2', {'buffer' : 10})
        " Remove sign 30 in group 'g3' from all the buffers
        call sign_unplace('g3', {'id' : 30})
        " Remove all the signs placed in buffer 5
        call sign_unplace('*', {'buffer' : 5})
        " Remove the signs in group 'g4' from all the buffers
        call sign_unplace('g4')
        " Remove sign 40 from all the buffers
        call sign_unplace('*', {'id' : 40})
        " Remove all the placed signs from all the buffers
        call sign_unplace('*')
Parameters: ~
  • {group} (`string`)
  • {dict} (`vim.fn.sign_unplace.dict?`)
Return: ~
  (`0|-1`)
sign_unplacelist({list}) sign_unplacelist()
1つ以上のバッファから、以前に配置された符号を削除します。これはsign_unplace()関数と似ています。
{list}引数は、削除する符号のリストを指定します。各リスト項目は、以下の符号属性を持つ辞書です: buffer バッファ名または番号。許容値については、bufname()を参照してください。指定されていない場合、指定された符号はすべてのバッファから削除されます。group 符号グループ名。指定されていないか空文字列に設定されている場合は、グローバル符号グループが使用されます。" *"に設定されている場合、グローバルグループを含むすべてのグループが使用されます。id 符号識別子。指定されていない場合、指定されたグループ内のすべての符号が削除されます。
対応する符号が正常に削除された場合は0に、失敗した場合は-1に設定されたエントリを持つリストを返します。
" Remove sign with id 10 from buffer a.vim and sign
" with id 20 from buffer b.vim
call sign_unplacelist([
        \ {'id' : 10, 'buffer' : "a.vim"},
        \ {'id' : 20, 'buffer' : 'b.vim'},
        \ ])
パラメータ
{list} (vim.fn.sign_unplacelist.list.item)
戻り値
((0|-1)[])
simplify({filename}) simplify()
意味を変更せずに、ファイル名を可能な限り簡素化します。ショートカット(MS-Windowsの場合)またはシンボリックリンク(Unixの場合)は解決されません。{filename}の最初のパスコンポーネントがカレントディレクトリを指定する場合、これは結果に対しても有効です。末尾のパスセパレータも削除されません。Unixでは"//path"は変更されませんが、 "///path"は"/path"に簡素化されます(これはPosix標準に従います)。例
simplify("./dir/.././/file/") == "./file/"
注記: "dir/.."の組み合わせは、"dir"が検索可能なディレクトリであるか、存在しない場合にのみ削除されます。Unixでは、"dir"が同じディレクトリ内のシンボリックリンクの場合にも削除されます。パス名を簡素化する前に、関係するすべてのシンボリックリンクを解決するには、resolve()を使用してください。
パラメータ
{filename} (string)
戻り値
(any)
sin({expr}) sin()
浮動小数点数として、ラジアンで測定された{expr}の正弦を返します。{expr}浮動小数点数または数値でなければなりません。{expr}浮動小数点数または数値でない場合は0.0を返します。例
echo sin(100)
-0.506366
echo sin(-4.01)
0.763301
パラメータ
{expr} (number)
戻り値
(any)
sinh({expr}) sinh()
[-inf, inf]の範囲内の浮動小数点数として、{expr}の双曲線正弦を返します。{expr}浮動小数点数または数値でなければなりません。{expr}浮動小数点数または数値でない場合は0.0を返します。例
echo sinh(0.5)
0.521095
echo sinh(-0.9)
-1.026517
パラメータ
{expr} (number)
戻り値
(any)
slice({expr}, {start} [, {end}]) slice()
スライス"expr[start : end]"を使用することに似ていますが、"end"は排他的に使用されます。文字列の場合、インデックスはバイトインデックスではなく文字インデックスとして使用されます。また、合成文字は先行する基本文字の一部として扱われます。{end}が省略されている場合、スライスは最後の項目まで続きます。{end}が-1の場合、最後の項目は省略されます。{start}または{end}が無効な場合は、空の値を返します。
パラメータ
{expr} (any)
{start} (整数)
{end_} (integer?)
戻り値
(any)
sockconnect({mode}, {address} [, {opts}]) sockconnect()
ソケットをアドレスに接続します。{mode}が"pipe"の場合、{address}はローカルドメインソケット(unix)または名前付きパイプ(Windows)のパスでなければなりません。{mode}が"tcp"の場合、{address}は"host:port"の形式でなければならず、hostはIPアドレスまたはホスト名、portはポート番号でなければなりません。
"pipe"モードについては、luv-pipe-handleを参照してください。"tcp"モードについては、luv-tcp-handleを参照してください。
チャネルIDを返します。chanclose()でソケットを閉じます。バイトソケットにデータを送信するにはchansend()を使用し、RPCソケットと通信するにはrpcrequest()rpcnotify()を使用します。
{opts}は、これらのキーを持つオプションの辞書です:on_data : ソケットからデータが読み取られたときに呼び出されるコールバック data_buffered : チャネルバッファリングモードでソケットデータを読み取る。rpc : 設定されている場合、msgpack-rpcを使用してソケットを介して通信します。返します
成功した場合はチャネルID(0より大きい)
引数が無効であるか、接続に失敗した場合は0。
パラメータ
{mode} (string)
{address} (string)
{opts} (table?)
戻り値
(any)
sort({list} [, {how} [, {dict}]]) sort() E702 {list}内の項目をインプレースでソートします。{list}を返します。
リストを変更せずに保持する場合は、最初にコピーを作成してください。
let sortedlist = sort(copy(mylist))
{how}が省略されているか文字列の場合、sort()は各項目の文字列表現を使用してソートします。数値は文字列の後に、リストは数値の後にソートされます。現在のバッファ内のテキストをソートするには、:sortを使用してください。
{how}が指定されていて'i'の場合、大文字と小文字は区別されません。後方互換性のために、値1を使用して大文字と小文字を区別しないようにすることができます。0は大文字と小文字を区別することを意味します。
{how}が指定されていて'l'の場合、現在の照合ロケールが順序に使用されます。実装の詳細: 文字列を比較するためにstrcoll()が使用されます。:languageを確認するか、照合ロケールを設定します。v:collateを使用して現在のロケールを確認することもできます。ロケールを使用したソートでは、通常、大文字と小文字は区別されません。例
" ö is sorted similarly to o with English locale.
language collate en_US.UTF8
echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
['n', 'o', 'O', 'ö', 'p', 'z']
" ö is sorted after z with Swedish locale.
language collate sv_SE.UTF8
echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
['n', 'o', 'O', 'p', 'z', 'ö']
これはMacでは正常に動作しません。
{how}が指定されていて'n'の場合、すべての項目は数値でソートされます(実装の詳細: これはstrtod()関数を使用して数値を解析します。文字列、リスト、辞書、関数参照は0とみなされます)。
{how}が指定されていて'N'の場合、すべての項目は数値でソートされます。これは'n'に似ていますが、数字を含む文字列は、それらが表す数値として使用されます。
{how}が指定されていて'f'の場合、すべての項目は数値でソートされます。すべての値は数値または浮動小数点数でなければなりません。
{how}Funcrefまたは関数名の場合、この関数はアイテムの比較に使用されます。この関数は2つのアイテムを引数として呼び出され、アイテムが等しい場合は0、最初のアイテムが2番目のアイテムより後にソートされる場合は1以上、最初のアイテムが2番目のアイテムより前にソートされる場合は-1以下の値を返す必要があります。
{dict}は "dict" 属性を持つ関数用です。これはローカル変数 "self" を設定するために使用されます。Dictionary-function
ソートは安定しています。数値または文字列として等しいと比較されるアイテムは、相対的な位置を維持します。例えば、数値でソートする場合、テキスト文字列は互いに隣り合って、元の順序でソートされます。
func MyCompare(i1, i2)
   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
endfunc
eval mylist->sort("MyCompare")
この特定の単純なケースに対する、オーバーフローを無視するより短い比較バージョン
func MyCompare(i1, i2)
   return a:i1 - a:i2
endfunc
単純な式にはラムダ式を使用できます
eval mylist->sort({i1, i2 -> i1 - i2})
パラメータ
{list} (任意)
{how} (string|function?)
{dict} (any?)
戻り値
(any)
soundfold({word}) soundfold()
{word}のサウンドフォールドされた等価物を返します。現在のウィンドウでサウンドフォールディングをサポートする最初の言語を'spelllang'で使用します。'spell'を設定する必要があります。サウンドフォールディングが不可能な場合、{word}は変更されずに返されます。これはスペルミス候補を作成するために使用できます。この方法は非常に遅くなる可能性があることに注意してください。
パラメータ
{word} (string)
戻り値
(any)
spellbadword([{sentence}]) spellbadword()
引数なしの場合:結果は、カーソル下またはカーソル後のスペルミス単語です。カーソルはスペルミス単語の先頭に移動します。カーソル行にスペルミス単語が見つからない場合は、結果は空文字列になり、カーソルは移動しません。
引数ありの場合:結果は、{sentence}で最初にスペルミスされた単語です。スペルミスがない場合は、結果は空文字列です。
戻り値は、2つのアイテムを含むリストです。
スペルミス単語または空文字列。
スペルミスの種類:「bad」スペルミス、「rare」珍しい単語、「local」別の地域でのみ有効な単語、「caps」単語は大文字で始める必要があります。例
echo spellbadword("the quik brown fox")
[quik,bad]
現在のウィンドウのスペル情報と'spelllang'の値が使用されます。
パラメータ
{sentence} (string?)
戻り値
(any)
spellsuggest({word} [, {max} [, {capital}]]) spellsuggest()
{word}を置き換えるスペルミス候補を含むListを返します。{max}が指定されている場合、最大この数の候補が返されます。それ以外の場合は、最大25個の候補が返されます。
{capital}引数が指定され、それが0以外の場合、先頭に大文字が付いた候補のみが返されます。'spellcapcheck'との一致後に使用します。
{word}は、スペルミス単語の後に他のテキストが付いている可能性があります。これにより、分割された2つの単語を結合できます。候補には、後続のテキストも含まれるため、行を置き換えることができます。
{word}は正しい単語である可能性もあります。その場合、類似の単語が返されます。{word}自体は候補に含まれませんが、大文字で表示される場合があります。
現在のウィンドウのスペル情報が使用されます。'spelllang''spellsuggest'の値が使用されます。
パラメータ
{word} (string)
{max} (整数?)
{capital} (boolean?)
戻り値
(any)
split({string} [, {pattern} [, {keepempty}]]) split()
{string}からListを作成します。{pattern}が省略されているか空の場合、空白で区切られた文字列はそれぞれアイテムになります。それ以外の場合は、{pattern}が一致する場所で文字列が分割され、一致した文字が削除されます。'ignorecase'はここで使用されません。大文字と小文字を区別しない場合は\cを追加してください。/\c 最初のアイテムまたは最後のアイテムが空の場合、{keepempty}引数が指定され、それが0以外の場合を除いて、省略されます。他の空のアイテムは、{pattern}が少なくとも1つの文字に一致する場合、または{keepempty}が0以外の場合に保持されます。例
let words = split(getline('.'), '\W\+')
文字列を個々の文字に分割するには
for c in split(mystring, '\zs') | endfor
セパレータを保持する場合は、パターンの最後に'\zs'を使用することもできます
echo split('abc:def:ghi', ':\zs')
['abc:', 'def:', 'ghi']
最初の要素が空になる可能性のあるテーブルの分割
let items = split(line, ':', 1)
逆関数はjoin()です。
パラメータ
{string} (string)
{pattern} (string?)
{keepempty} (boolean?)
戻り値
(any)
sqrt({expr}) sqrt()
Float {expr}の非負の平方根をFloatとして返します。{expr}FloatまたはNumberとして評価される必要があります。{expr}が負の場合、結果はNaN(数値ではない)になります。{expr}FloatまたはNumberでない場合は0.0を返します。例
echo sqrt(100)
10.0
echo sqrt(-4.01)
str2float("nan") NaNは異なる場合があります。システムライブラリによって異なります。
パラメータ
{expr} (number)
戻り値
(any)
srand([{expr}]) srand()
rand()で使用されるシードを初期化します
{expr}が指定されていない場合、シード値は可能であれば/dev/urandomから読み取ることで初期化されます。不可能な場合はtime(NULL)(エポック時間)を使用します。これは秒単位の精度しかありません。
{expr}が指定されている場合、それはNumberである必要があります。これはシード値を初期化するために使用されます。これはテストや予測可能なシーケンスを意図する場合に役立ちます。
let seed = srand()
let seed = srand(userinput)
echo rand(seed)
パラメータ
{expr} (数値?)
戻り値
(any)
state([{what}]) state()
現在の状態を示す文字を含む文字列を返します。主に、常に安全とは限らない作業を実行する必要があるコールバックで役立ちます。おおよそ次のように動作します。
コールバックはstate()を使用して作業が安全に実行できるかどうかを確認します。はい:すぐに実行します。いいえ:作業キューに追加し、SafeState autocommandを追加します。
SafeStateがトリガーされ、あなたのautocommandを実行すると、state()を使用して作業を今すぐ実行できるかどうかを確認し、可能であればキューから削除して実行します。キューが空になったらautocommandを削除します。mode()も参照してください。
{what}が指定されている場合、この文字列内の文字のみが追加されます。例えば、これは画面がスクロールしたかどうかを確認します
if state('s') == ''
   " screen has not scrolled
これらの文字は状態を示し、一般的に何かがビジー状態であることを示します:m マッピングの途中、:normalコマンド、feedkeys()またはスタックされたコマンド o オペレータ保留中、例えばdの後 a インサートモード オートコンプリート アクティブ x autocommandの実行中 S SafeStateをトリガーしない、例えばfまたはカウント c コールバック呼び出し後、タイマーを含む(再帰のために "ccc" まで繰り返す) s メッセージのために画面がスクロールした
パラメータ
{what} (string?)
戻り値
(any)
stdioopen({opts}) stdioopen()
--headlessを使用すると、stdinとstdoutがchannelとして開きます。一度だけ呼び出すことができます。channel-stdioを参照してください。stderrはこの関数では処理されません。v:stderrを参照してください。
chanclose()でstdioハンドルを閉じます。stdoutにデータを送信するにはchansend()を使用し、RPCで通信するにはrpcrequest()rpcnotify()を使用します。
{opts}は、次のキーを持つ辞書です。on_stdin:stdinへの書き込み時に呼び出されるコールバック。on_print:Nvimがメッセージを出力する必要があるときに呼び出されるコールバック。メッセージ(その型は文字列)を引数として持ちます。stdin_buffered:channel-bufferedモードでstdinを読み取ります。rpc:設定されている場合、msgpack-rpcを使用してstdioで通信します。戻り値
成功時にchannel-id(値は常に1)
引数が無効な場合は0
パラメータ
{opts} (table)
戻り値
(any)
stdpath({what}) stdpath() E6100様々なデフォルトファイルとディレクトリのstandard-pathの場所を返します。
{what} タイプ 説明
cache 文字列 キャッシュディレクトリ:プラグインなどの任意の一時ストレージ。config 文字列 ユーザー設定ディレクトリ。init.vimがここに保存されます。config_dirs リスト その他の設定ディレクトリ。data 文字列 ユーザーデータディレクトリ。data_dirs リスト その他のデータディレクトリ。log 文字列 ログディレクトリ(プラグインでも使用)。run 文字列 ランディレクトリ:ソケット、名前付きパイプなどのローカル一時ストレージ。state 文字列 セッションステートディレクトリ:ファイルドラフト、スワップ、アンドゥ、shadaのストレージ。
echo stdpath("config")
パラメータ
{what} ('cache'|'config'|'config_dirs'|'data'|'data_dirs'|'log'|'run'|'state')
戻り値
(string|string[])
str2float({string} [, {quoted}]) str2float()
文字列{string}をFloatに変換します。これは、式で浮動小数点数を使用する場合とほぼ同じように動作します。floating-point-formatを参照してください。ただし、もう少し寛容です。例えば、「1e40」は受け入れられますが、式では「1.0e40」と書く必要があります。16進形式「0x123」も受け入れられますが、2進数や8進数など、他の形式は受け入れられません。{quoted}が存在し、0以外の場合、ドットの前に埋め込まれた単一引用符は無視されます。そのため、「1'000.0」は千になります。数値の後のテキストは黙って無視されます。小数点は常に「.」で、ロケール設定とは関係ありません。カンマは数値を終了します。「12,345.67」は12.0に変換されます。substitute()を使用して、千のセパレータを削除できます。
let f = str2float(substitute(text, ',', '', 'g'))
変換に失敗した場合は0.0を返します。
パラメータ
{string} (string)
{quoted} (boolean?)
戻り値
(any)
str2list({string} [, {utf8}]) str2list()
文字列{string}の各文字を表す数値を含むリストを返します。例
echo str2list(" ")                " returns [32]
echo str2list("ABC")                " returns [65, 66, 67]
list2str()は逆の動作をします。
UTF-8エンコーディングは常に使用され、{utf8}オプションは効果がなく、下位互換性のためにのみ存在します。UTF-8を使用すると、合成文字は適切に処理されます。
        echo str2list("á")                " returns [97, 769]
Parameters: ~
  • {string} (`string`)
  • {utf8} (`boolean?`)
Return: ~
  (`any`)
str2nr({string} [, {base}]) str2nr()
文字列{string}を数値に変換します。{base}は変換基数で、2、8、10、または16にすることができます。{quoted}が存在し、0以外の場合、埋め込まれた単一引用符は無視されます。そのため、「1'000'000」は百万になります。
{base}が省略されている場合は、基数10が使用されます。これは、デフォルトの文字列から数値への変換のように、先頭のゼロが8進数の変換を引き起こさないことを意味します。例
let nr = str2nr('0123')
{base}が16の場合、先頭の「0x」または「0X」は無視されます。異なる基数を使用すると、結果はゼロになります。同様に、{base}が8の場合、先頭の「0」、「0o」、または「0O」は無視され、{base}が2の場合、先頭の「0b」または「0B」は無視されます。数値の後のテキストは黙って無視されます。
{string}が空の場合、またはエラーが発生した場合は0を返します。
パラメータ
{string} (string)
{base} (integer?)
戻り値
(any)
strcharlen({string}) strcharlen()
結果は、文字列{string}の文字数を表す数値です。合成文字は無視されます。strchars()は、合成文字を個別にカウントして文字数をカウントできます。
{string}が空の場合、またはエラーが発生した場合は0を返します。
strlen()strdisplaywidth()strwidth()も参照してください。
パラメータ
{string} (string)
戻り値
(any)
strcharpart({src}, {start} [, {len} [, {skipcc}]]) strcharpart()
strpart() と同様ですが、バイトインデックスとバイト長ではなく、文字インデックスと文字長を使用します。{skipcc} が省略されているか0の場合、合成文字は個別にカウントされます。slice() と同様に、{skipcc} を1に設定すると、合成文字は先行するベース文字の一部として扱われます。文字が存在しない文字インデックスが使用された場合、それは省略され、1文字としてカウントされます。例:
echo strcharpart('abc', -1, 2)
'a'になります。
エラーが発生した場合は空の文字列を返します。
パラメータ
{src} (文字列)
{start} (整数)
{len} (整数?)
{skipcc} (boolean?)
戻り値
(any)
strchars({文字列} [, {skipcc}]) strchars()
結果は、文字列{文字列}の文字数を示す数値です。{skipcc} が省略されているか0の場合、合成文字は個別にカウントされます。{skipcc} を1に設定すると、合成文字は無視されます。strcharlen() は常にこれを行います。
エラー時には0を返します。
strlen()strdisplaywidth()strwidth()も参照してください。
{skipcc} は7.4.755以降でのみ使用できます。下位互換性のため、ラッパー関数を定義できます。
if has("patch-7.4.755")
  function s:strchars(str, skipcc)
    return strchars(a:str, a:skipcc)
  endfunction
else
  function s:strchars(str, skipcc)
    if a:skipcc
      return strlen(substitute(a:str, ".", "x", "g"))
    else
      return strchars(a:str)
    endif
  endfunction
endif
パラメータ
{string} (string)
{skipcc} (boolean?)
戻り値
(integer)
strdisplaywidth({文字列} [, {col}]) strdisplaywidth()
結果は、文字列{文字列}{col}(最初の列は0)から始まる場合に画面上で占める表示セルの数です。{col} が省略された場合は0が使用されます。それ以外の場合は、開始する画面列です。これはタブ文字に関係します。現在のウィンドウのオプション設定が使用されます。'tabstop''display'など、異なる方法で表示されるものすべてに関係します。{文字列}に東アジア文字幅クラスが曖昧な文字が含まれている場合、この関数の戻り値は'ambiwidth'に依存します。エラーの場合は0を返します。strlen()strwidth()strchars()も参照してください。
パラメータ
{string} (string)
{col} (integer?)
戻り値
(integer)
strftime({format} [, {time}]) strftime()
結果は、{format}文字列で指定されたフォーマットの日付と時刻を示す文字列です。指定された{time}が使用され、時刻が指定されていない場合は現在時刻が使用されます。許可される{format}はシステムによって異なるため、これは移植可能ではありません!フォーマットについては、C関数のstrftime()のマニュアルページを参照してください。結果の最大長は80文字です。localtime()getftime()strptime()も参照してください。:languageコマンドで言語を変更できます。例
  echo strftime("%c")                   " Sun Apr 27 11:49:23 1997
  echo strftime("%Y %b %d %X")           " 1997 Apr 27 11:53:25
  echo strftime("%y%m%d %T")           " 970427 11:53:55
  echo strftime("%H:%M")                   " 11:55
  echo strftime("%c", getftime("file.c"))
                                   " Show mod time of file.c.
Parameters: ~
  • {format} (`string`)
  • {time} (`number?`)
Return: ~
  (`string`)
strgetchar({str}, {index}) strgetchar()
{str}{index}位置の文字に対応する数値を取得します。これはバイトインデックスではなく、0ベースの文字インデックスを使用します。合成文字はここでは個別の文字とみなされます。nr2char()を使用して数値を文字列に変換します。{index}が無効な場合は-1を返します。strcharpart()strchars()も参照してください。
パラメータ
{str} (string)
{index} (整数)
戻り値
(integer)
stridx({haystack}, {needle} [, {start}]) stridx()
結果は、文字列{needle}の最初の出現位置を示す、{haystack}内のバイトインデックスを示す数値です。{start}が指定されている場合、検索はインデックス{start}から開始されます。これは2番目のマッチを見つけるために使用できます。
let colon1 = stridx(line, ":")
let colon2 = stridx(line, ":", colon1 + 1)
検索は大文字と小文字を区別します。パターン検索にはmatch()を使用してください。{needle}{haystack}に存在しない場合は-1が返されます。strridx()も参照してください。例
echo stridx("An Example", "Example")     " 3
echo stridx("Starting point", "Start")   " 0
echo stridx("Starting point", "start")   " -1
strstr() strchr() stridx()はC関数strstr()と同様に機能します。単一文字で使用すると、strchr()と同様に機能します。
パラメータ
{haystack} (文字列)
{needle} (文字列)
{start} (integer?)
戻り値
(integer)
string({expr}) string()
{expr}を文字列に変換して返します。{expr}が数値、浮動小数点数、文字列、Blob、またはそれらの組み合わせである場合、結果はeval()で解析できます。
{expr} 型 結果
文字列文字列 数値 123 浮動小数点数 123.123456 または 1.123456e8 または str2float('inf') 関数参照 function('name') Blob 0z00112233.44556677.8899 リスト [項目, 項目] 辞書 {key: value, key: value} 文字列値では ' 文字が二重化されることに注意してください。strtrans()も参照してください。注2: 出力形式は主にYAMLと互換性がありますが、無限大とNaNの浮動小数点値の表現はstr2float()を使用します。文字列もそのままダンプされ、シングルクォートのみがエスケープされるため、バイナリ文字列の逆解析にYAMLを使用することはできません。eval()は常に文字列と浮動小数点数で動作するはずであり、これは唯一の公式の方法です。他のアプリケーションとデータを共有する必要がある場合は、msgpackdump()またはjson_encode()を使用してください。
パラメータ
{expr} (any)
戻り値
(文字列)
strlen({文字列}) strlen()
結果は、文字列{文字列}のバイト単位の長さを示す数値です。引数が数値の場合は、最初に文字列に変換されます。他の型の場合はエラーが発生し、0が返されます。マルチバイト文字の数をカウントする場合はstrchars()を使用してください。len()strdisplaywidth()strwidth()も参照してください。
パラメータ
{string} (string)
戻り値
(integer)
strpart({src}, {start} [, {len} [, {chars}]]) strpart()
結果は、バイト{start}から始まり、バイト長が{len}である{src}の一部を示す文字列です。{chars}が存在し、TRUEの場合、{len}は文字位置の数です(合成文字は個別にカウントされません。したがって、「1」は1つのベース文字とその後の合成文字を意味します)。バイトではなく文字として{start}をカウントするにはstrcharpart()を使用してください。
存在しないバイトが選択されても、エラーにはなりません。バイトは単に省略されます。{len}がない場合、コピーは{start}から{src}の最後まで続きます。
echo strpart("abcdefg", 3, 2)    " returns 'de'
echo strpart("abcdefg", -2, 4)   " returns 'ab'
echo strpart("abcdefg", 5, 4)    " returns 'fg'
echo strpart("abcdefg", 3)         " returns 'defg'
注: 最初の文字を取得するには、{start}を0にする必要があります。たとえば、カーソル下の文字を取得するには
strpart(getline("."), col(".") - 1, 1, v:true)
エラーが発生した場合は空の文字列を返します。
パラメータ
{src} (文字列)
{start} (整数)
{len} (整数?)
{chars} (0|1?)
戻り値
(文字列)
strptime({format}, {timestring}) strptime()
結果は、{timestring}の日付と時刻を表すUnixタイムスタンプを示す数値です。{timestring}は、{format}で指定された形式に一致することが想定されています。
許可される{format}はシステムによって異なるため、これは移植可能ではありません!フォーマットについては、C関数のstrptime()のマニュアルページを参照してください。特に「%c」は避けてください。$TZの値も重要です。
{timestring}{format}で解析できない場合は、0が返されます。{timestring}の形式が不明な場合は、0以外の結果が得られるまでさまざまな{format}値を試すことができます。
strftime()も参照してください。例
echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")
862156163
echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))
1997年4月27日 日曜日 11時53分55秒
echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600)
1997年4月27日 日曜日 12時53分55秒
パラメータ
{format} (文字列)
{timestring} (文字列)
戻り値
(integer)
strridx({haystack}, {needle} [, {start}]) strridx()
結果は、文字列{needle}の最後の出現位置を示す、{haystack}内のバイトインデックスを示す数値です。{start}が指定されている場合、このインデックスを超える一致は無視されます。これは、以前の一致の前に一致を見つけるために使用できます。
let lastcomma = strridx(line, ",")
let comma2 = strridx(line, ",", lastcomma - 1)
検索は大文字と小文字を区別します。パターン検索にはmatch()を使用してください。{needle}{haystack}に存在しない場合は-1が返されます。{needle}が空の場合、{haystack}の長さが返されます。stridx()も参照してください。例
echo strridx("an angry armadillo", "an")             3
strrchr()
単一文字で使用すると、C関数strrchr()と同様に機能します。
パラメータ
{haystack} (文字列)
{needle} (文字列)
{start} (integer?)
戻り値
(integer)
strtrans({string}) strtrans()
結果は、すべての印刷できない文字が印刷可能な文字'isprint'に変換された文字列{string}です。ウィンドウに表示されるように。
echo strtrans(@a)
これにより、新しい行を開始するのではなく、レジスタaの改行が「^@」として表示されます。
エラーが発生した場合は空の文字列を返します。
パラメータ
{string} (string)
戻り値
(文字列)
strutf16len({string} [, {countcc}]) strutf16len()
結果は、文字列{string}(UTF-16に変換した後)のUTF-16コードユニット数を示す数値です。
{countcc}がTRUEの場合、合成文字は個別にカウントされます。{countcc}が省略されているかFALSEの場合、合成文字は無視されます。
エラー時には0を返します。
strlen()strcharlen()も参照してください。例
echo strutf16len('a')                " returns 1
echo strutf16len('©')                " returns 1
echo strutf16len('😊')                " returns 2
echo strutf16len('ą́')                " returns 1
echo strutf16len('ą́', v:true)        " returns 3
パラメータ
{string} (string)
{countcc} (0|1?)
戻り値
(integer)
strwidth({string}) strwidth()
結果は、文字列{string}が占める表示セルの数を示す数値です。タブ文字は1セルとしてカウントされます。代わりにstrdisplaywidth()を使用してください。{string}に東アジア文字幅クラスが曖昧な文字が含まれている場合、この関数の戻り値は'ambiwidth'に依存します。エラーの場合は0を返します。strlen()strdisplaywidth()strchars()も参照してください。
パラメータ
{string} (string)
戻り値
(integer)
submatch({nr} [, {list}]) submatch() E935 :substituteコマンドまたはsubstitute()関数の式の場合のみ。一致したテキストの{nr}番目の部分一致を返します。{nr}が0の場合、一致したテキスト全体が返されます。文字列内のNLは、複数行の一致の改行またはテキスト内のNUL文字を表す場合があります。sub-replace-expressionも参照してください。
{list} が存在し、かつゼロでない場合、submatch() は文字列のリストを返します。これは、2 つの引数を持つ getline() と同様です。テキスト内の NL 文字は、テキスト内の NUL 文字を表します。 :substitute の場合にのみ複数の項目を返します。 substitute() の内部では、実際の改行文字がないため、このリストには常に 1 つまたは 0 個の項目が含まれます。
substitute() が再帰的に使用される場合、現在の(最も深い)呼び出しでのサブマッチのみを取得できます。
エラーが発生した場合は、空の文字列またはリストを返します。
s/\d\+/\=submatch(0) + 1/
echo substitute(text, '\d\+', '\=submatch(0) + 1', '')
これは行の先頭の数字を見つけ、それに 1 を加えます。改行文字が改行文字として含まれています。
パラメータ
{nr} (integer)
{list} (nil?)
戻り値
(文字列)
substitute({string}, {pat}, {sub}, {flags}) substitute()
結果は文字列であり、{string} のコピーです。その中で、{pat} の最初のマッチが {sub} で置き換えられます。{flags} が "g" の場合、{string} 内の {pat} のすべてのマッチが置き換えられます。それ以外の場合は、{flags} は "" でなければなりません。
これは、(フラグなしの)":substitute" コマンドのように動作します。しかし、{pat} とのマッチングは、常に 'magic' オプションが設定され、'cpoptions' が空であるかのように実行されます(スクリプトの移植性を高めるため)。'ignorecase' は依然として関連しています。'ignorecase' を無視するか、または大文字と小文字を区別せずに一致させる場合は、/\c または /\C を使用してください。'smartcase' は使用されません。string-match を参照して、{pat} の使用方法を確認してください。
{sub} 内の "~" は、前の {sub} で置き換えられません。{sub} 内の一部のコードには、特別な意味があります sub-replace-special。たとえば、何かを "\n"(2 文字)で置き換えるには、"\\\\n" または '\\n' を使用します。
{pat}{string} にマッチしない場合、{string} は変更されずに返されます。
let &path = substitute(&path, ",\\=[^,]*$", "", "")
これは、'path' オプションの最後のコンポーネントを削除します。
echo substitute("testing", ".*", "\\U\\0", "")
"TESTING"になります。
{sub} が "\=" で始まる場合、残りの部分は式として解釈されます。sub-replace-expression を参照してください。例
echo substitute(s, '%\(\x\x\)',
   \ '\=nr2char("0x" .. submatch(1))', 'g')
{sub} が Funcref の場合、その関数は、オプションで 1 つの引数を使用して呼び出されます。例
echo substitute(s, '%\(\x\x\)', SubNr, 'g')
オプションの引数は、マッチした文字列全体と最大 9 つのサブマッチを含むリストです。submatch() が返すものと同様です。例
echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g')
エラーが発生した場合は空の文字列を返します。
パラメータ
{string} (string)
{パターン} (文字列)
{sub} (string)
{flags} (string)
戻り値
(文字列)
swapfilelist() swapfilelist()
"vim -r" が表示するものと同様のスワップファイル名のリストを返します。-r コマンド引数を参照してください。'directory' オプションは、検査するディレクトリに使用されます。現在のディレクトリ内のスワップファイルのリストのみを取得する場合は、一時的に 'directory' をドットに設定します。
        let save_dir = &directory
        let &directory = '.'
        let swapfiles = swapfilelist()
        let &directory = save_dir
Return: ~
  (`string[]`)
swapinfo({fname}) swapinfo()
結果は辞書であり、スワップファイル {fname} に関する情報を保持します。使用可能なフィールドは次のとおりです。version:Vim のバージョン、user:ユーザー名、host:ホスト名、fname:元のファイル名、pid:スワップファイルを作成した Nvim プロセスの PID(実行されていない場合は 0)、mtime:秒単位の最終変更時刻、inode:(オプション)ファイルの INODE 番号、dirty:ファイルが変更された場合は 1、変更されていない場合は 0。失敗した場合は、理由とともに "error" 項目が追加されます。ファイルを開けません:ファイルが見つからないか、アクセスできません。ファイルを読み取れません:最初のブロックを読み取れません。スワップファイルではありません:正しいブロック ID が含まれていません。マジックナンバーが一致しません:最初のブロックの情報が無効です。
パラメータ
{fname} (string)
戻り値
(any)
swapname({buf}) swapname()
結果は、バッファ {buf} のスワップファイルのパスです。{buf} の使用方法については、上記の bufname() を参照してください。バッファ {buf} が現在バッファの場合、結果は :swapname と等しくなります(スワップファイルがない場合を除く)。バッファ {buf} にスワップファイルがない場合は、空の文字列を返します。
パラメータ
{buf} (integer|string)
戻り値
(文字列)
synID({lnum}, {col}, {trans}) synID()
結果は数値であり、現在のウィンドウの {lnum}{col} の位置にある構文 ID です。構文 ID は、synIDattr()synIDtrans() と共に使用して、テキストに関する構文情報を取得できます。
{col} は、左端の列を 1 とし、{lnum} は最初の行を 1 とします。'synmaxcol' が適用され、長い行では 0 が返されます。位置が最後の文字の後にある場合(挿入モードでカーソルが存在できる位置)、synID() は 0 を返します。{lnum}getline() と同様に使用されます。
{trans}TRUE の場合、透過的な項目は、それらが表示する項目に減らされます。これは、有効な色を知りたい場合に役立ちます。{trans}FALSE の場合、透過的な項目が返されます。これは、どの構文項目が有効であるかを知りたい場合(たとえば、括弧内)に役立ちます。 **警告:**この関数は非常に遅くなる可能性があります。最速の速度は、ファイルを順方向に処理することで得られます。
エラー時には0を返します。
例(カーソル下の構文項目の名前を出力します)
echo synIDattr(synID(line("."), col("."), 1), "name")
パラメータ
{lnum} (integer)
{col} (integer)
{trans} (0|1)
戻り値
(integer)
synIDattr({synID}, {what} [, {mode}]) synIDattr()
結果は文字列であり、構文 ID {synID}{what} 属性です。これは、構文項目に関する情報を取得するために使用できます。{mode} は "gui" または "cterm" であり、そのモードの属性を取得します。{mode} が省略されているか、無効な値が使用されている場合、現在アクティブなハイライトの属性(GUI または cterm)が使用されます。リンクされたハイライトグループを辿るには、synIDtrans() を使用します。{what} 結果 "name":構文項目の名前、"fg":前景の色(GUI:色を設定するために使用される色の名前、cterm:文字列としての色の番号、term:空の文字列)、"bg":背景の色("fg" と同じ)、"font":フォント名(GUI でのみ使用可能)highlight-font、"sp":特殊な色("fg" と同じ)guisp、"fg#": "fg" と同じですが、GUI と GUI が実行されている場合は "#RRGGBB" 形式の名前、"bg#":"bg" の "fg#" と同じ、"sp#":"sp" の "fg#" と同じ、"bold":太字の場合は "1"、"italic":斜体の場合は "1"、"reverse":反転の場合は "1"、"inverse":反転(= 反転)の場合は "1"、"standout":目立つ場合は "1"、"underline":下線が引かれている場合は "1"、"undercurl":下線が波線で引かれている場合は "1"、"underdouble":二重下線が引かれている場合は "1"、"underdotted":点線の下線が引かれている場合は "1"、"underdashed":破線の下線が引かれている場合は "1"、"strikethrough":取り消し線が引かれている場合は "1"、"altfont":代替フォントの場合は "1"、"nocombine":nocombine の場合 "1"
エラーが発生した場合は空の文字列を返します。
例(カーソル下の構文項目の色を出力します)
echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
メソッドとしても使用できます。
echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
パラメータ
{synID} (integer)
{what} (string)
{mode}string?
戻り値
(文字列)
synIDtrans({synID}) synIDtrans()
結果は数値であり、{synID} の変換された構文 ID です。これは、文字のハイライトに使用されている構文グループ ID です。":highlight link" で指定されたハイライトリンクが追跡されます。
エラー時には0を返します。
パラメータ
{synID} (integer)
戻り値
(integer)
synconcealed({lnum}, {col}) synconcealed()
結果は、現在 3 つの項目を持つ List です。1. リストの最初の項目は、{lnum}{col} の位置にある文字が非表示領域の一部でない場合は 0、一部の場合は 1 です。{lnum}getline() と同様に使用されます。2. リストの 2 番目の項目は文字列です。最初の項目が 1 の場合、2 番目の項目には、'conceallevel''listchars' の現在の設定に応じて、非表示テキストの代わりに表示されるテキストが含まれます。3. リストの 3 番目の項目は、行で一致した特定の構文領域を表す数値です。文字が非表示でない場合、値は 0 です。これにより、同じ置換文字を持つ 2 つの連続した領域がある場合、新しい非表示領域の開始を検出できます。例として、テキストが "123456" であり、"23" と "45" の両方が非表示になって文字 "X" で置き換えられる場合、
呼び出しは返します
synconcealed(lnum, 1) [0, '', 0] synconcealed(lnum, 2) [1, 'X', 1] synconcealed(lnum, 3) [1, 'X', 1] synconcealed(lnum, 4) [1, 'X', 2] synconcealed(lnum, 5) [1, 'X', 2] synconcealed(lnum, 6) [0, '', 0]
**注:**構文とマッチングのハイライトは 2 つの異なるメカニズムであるため syntax-vs-matchmatchadd() ハイライト項目は考慮されません。
パラメータ
{lnum} (integer)
{col} (integer)
戻り値
([integer, string, integer])
synstack({lnum}, {col}) synstack()
Listを返します。これは、現在のウィンドウの{lnum}{col}の位置にある構文項目のスタックです。{lnum}getline()と同様に使用されます。Listの各項目はsynID()が返すものと同様のIDです。Listの最初の項目は外部領域であり、その後に含まれる項目が続きます。最後の項目はsynID()が返すものですが、項目全体がハイライトされていない場合、または透過的な項目の場合は除きます。この関数は、構文ファイルのデバッグに役立ちます。カーソル下の構文スタックを表示する例
for id in synstack(line("."), col("."))
   echo synIDattr(id, "name")
endfor
{lnum}{col}で指定された位置が無効な場合は、空のリストが返されます。行の最後の文字の直後と空行の最初の列は有効な位置です。
パラメータ
{lnum} (integer)
{col} (integer)
戻り値
(整数配列)
system({cmd} [, {input}]) system() E677 **注:**Lua では vim.system() を優先してください。
{cmd} の出力を string として取得します(systemlist()List を返します)。そして、v:shell_error をエラーコードに設定します。{cmd}jobstart() と同様に処理されます。{cmd} が List の場合、直接実行されます('shell' は使用されません)。{cmd} が String の場合、次のように 'shell' で実行されます。
call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])
対話型コマンドには使用しないでください。
結果は、プラットフォーム固有の癖を避けるためにフィルタリングされた String です。
<CR><NL><NL> で置き換えられます。
NUL 文字は SOH (0x01) で置き換えられます。
echo system(['ls', expand('%:h')])
{input} が文字列の場合、パイプに書き込まれ、コマンドへの stdin として渡されます。文字列はそのまま書き込まれ、行区切り文字は変更されません。{input}List の場合、{binary} を "b" に設定した writefile() と同様にパイプに書き込まれます(つまり、各リスト項目間に改行文字があり、リスト項目内の改行文字は NUL に変換されます)。{input} が指定されていて有効なバッファ ID の場合、バッファの内容は行ごとにファイルに書き込まれ、各行は NL で終了します(テキストに NL がある場合は NUL も追加されます)。E5677
**注:**system() は、バックグラウンド化された ("&") シェルコマンド(例:)には書き込めませんし、読み取れません。
echo system("cat - &", "foo")
これは次のものと同等です。
$ echo foo | bash -c 'cat - &'
入力はシェルリダイレクト構文によって上書きされない限り、パイプが切断される前に到達します。jobstart() を代わりに使用してください。
**注:**コマンド引数の特殊文字をエスケープするには、shellescape() または ::Sexpand() または fnamemodify() と共に使用してください。'shellquote''shellxquote' は適切に設定する必要があります。例
echo system('ls '..shellescape(expand('%:h')))
echo system('ls '..expand('%:h:S'))
":!cmd" とは異なり、変更されたファイルの自動チェックはありません。:checktime を使用して強制的にチェックしてください。
パラメータ
{cmd} (string|string[])
{input} (string|string[]|integer?)
戻り値
(文字列)
systemlist({cmd} [, {input} [, {keepempty}]]) systemlist()
system() と同じですが、改行で区切られた出力の部分(NLで区切られた部分)をリストで返し、NULはNLに変換されます。出力は、{binary}引数を "b" に設定した場合のreadfile() の出力と同じですが、{keepempty} がゼロ以外でない限り、最後の改行は保持されません。MS-Windows では、末尾にCR文字が付く場合があります。
"echo hello" と "echo -n hello" の違いを見るには、system()split() を使用します。
echo split(system('echo hello'), '\n', 1)
エラーが発生した場合は空の文字列を返します。
パラメータ
{cmd} (string|string[])
{input} (string|string[]|integer?)
{keepempty} (integer?)
戻り値
(文字列配列)
tabpagebuflist([{arg}]) tabpagebuflist()
結果は、List で、各項目は現在のタブページの各ウィンドウに関連付けられたバッファの数です。{arg} は使用するタブページの番号を指定します。省略された場合は、現在のタブページが使用されます。{arg} が無効な場合は、0 が返されます。すべてのタブにあるすべてバッファのリストを取得するには、これを使用します。
let buflist = []
for i in range(tabpagenr('$'))
   call extend(buflist, tabpagebuflist(i + 1))
endfor
バッファは複数のウィンドウに表示される場合があります。
パラメータ
{arg} (integer?)
戻り値
(any)
tabpagenr([{arg}]) tabpagenr()
結果は、現在のタブページの番号を示す数値です。最初のタブページの番号は1です。
オプションの引数{arg}は、以下の値をサポートします: $ 最後のタブページの数(タブページの数)。 # 最後にアクセスしたタブページの数(g<Tab> が移動する場所)。前のタブページがない場合は、0 が返されます。この番号は、:tab コマンドで使用できます。
エラー時には0を返します。
パラメータ
{arg} ('$'|'#'?)
戻り値
(integer)
tabpagewinnr({tabarg} [, {arg}]) tabpagewinnr()
winnr() と似ていますが、タブページ{tabarg}用です。{tabarg} は使用するタブページの番号を指定します。{arg}winnr() と同様に使用されます。
省略した場合は、現在のウィンドウ番号が返されます。これは、このタブページに移動するときに使用されるウィンドウです。
"$" の場合、ウィンドウの数が返されます。
"#" の場合、前のウィンドウ番号が返されます。便利な例
tabpagewinnr(1)            " current window of tab page 1
tabpagewinnr(4, '$')    " number of windows in tab page 4
{tabarg} が無効な場合は、0 が返されます。
パラメータ
{tabarg} (integer)
{arg} ('$'|'#'?)
戻り値
(integer)
tagfiles() tagfiles()
現在のバッファのタグ検索に使用されるファイル名を List で返します。これは、展開された 'tags' オプションです。
戻り値
(文字列配列)
taglist({expr} [, {filename}]) taglist()
正規表現{expr}に一致するタグの List を返します。
{filename} が渡された場合、:tselect と同じ方法で結果の優先順位が付けられます。tag-priority を参照してください。{filename} はファイルのフルパスである必要があります。
各リスト項目は、少なくとも以下のエントリを含むディクショナリです: name タグの名前。filename タグが定義されているファイル名。現在のディレクトリからの相対パスまたはフルパスのいずれか。cmd ファイル内のタグを見つけるために使用される ex コマンド。kind タグの種類。このエントリの値は、言語固有の種類の値によって異なります。Universal/Exuberant ctags または hdrtag で生成されたタグファイルを使用する場合のみ使用できます。static ファイル固有のタグ。static-tag を参照してください。タグファイルの内容によっては、さらにエントリが存在する可能性があります: access、implementation、inherits、signature。これらのフィールドに関する情報は、ctags のドキュメントを参照してください。Cコードの場合、「struct」、「class」、「enum」フィールドが表示される場合があります。これらは、タグが含まれているエンティティの名前を示します。
exコマンド "cmd" は、ex検索パターン、行番号、または行番号とバイト番号の組み合わせのいずれかです。
一致するタグがない場合は、空のリストが返されます。
正確なタグの一致を取得するには、{expr} でアンカー '^' と '$' を使用する必要があります。これにより、関数の動作も高速になります。tag-regexp で、タグ検索正規表現パターンの詳細を参照してください。
Vim によるタグファイルの検索方法については、'tags' を参照してください。さまざまな ctags ツールによって生成されるタグファイルの形式については、tags-file-format を参照してください。
パラメータ
{expr} (any)
{filename} (string?)
戻り値
(any)
tan({expr}) tan()
ラジアンで測定された{expr}のタンジェントを、[-inf, inf] の範囲の Float として返します。{expr}Float または Number に評価される必要があります。{expr}Float でも Number でもない場合は 0.0 を返します。例
echo tan(10)
0.648361
echo tan(-4.01)
-1.181502
パラメータ
{expr} (number)
戻り値
(number)
tanh({expr}) tanh()
[-1, 1] の範囲の Float として、{expr} の双曲線タンジェントを返します。{expr}Float または Number に評価される必要があります。{expr}Float でも Number でもない場合は 0.0 を返します。例
echo tanh(0.5)
0.462117
echo tanh(-1)
-0.761594
パラメータ
{expr} (number)
戻り値
(number)
tempname() tempname()
Nvim ルートの tempdir にある(存在しない)ファイル名を生成します。スクリプトは、ファイル名を一時ファイルとして使用できます。例
let tmpfile = tempname()
exe "redir > " .. tmpfile
戻り値
(文字列)
termopen({cmd} [, {opts}]) termopen()
現在の(変更されていない)バッファに接続された新しい擬似ターミナルセッションで{cmd}を生成します。パラメータと動作はjobstart() と同じですが、"pty"、"width"、"height"、"TERM" は無視されます。"height" と "width" は現在のウィンドウから取得されます。termopen() は jobstart() に "pty" 引数を意味し、そのため jobstart() に記載されている意味合いがあります。
jobstart() と同じ値を返します。
ターミナル環境は jobstart-env と同様に初期化されますが、$TERM は "xterm-256color" に設定されます。完全な動作については terminal を参照してください。
パラメータ
{cmd} (string|string[])
{opts} (table?)
戻り値
(any)
test_garbagecollect_now() test_garbagecollect_now()
garbagecollect() と似ていますが、すぐに実行されます。これは、内部に構造体が存在しないようにするために、直接呼び出す必要があり、v:testing は関数を呼び出す前に設定されている必要があります。E1142
戻り値
(any)
timer_info([{id}]) timer_info()
タイマーに関する情報をリストで返します。{id} が指定されている場合、このタイマーに関する情報のみが返されます。タイマー{id}が存在しない場合は、空のリストが返されます。{id} が省略された場合は、すべてのタイマーに関する情報が返されます。
各タイマーの情報は、以下の項目を含む Dictionary に格納されます: "id" タイマーID "time" タイマーが開始された時間 "repeat" タイマーがまだ起動する回数。-1 は無限ループを意味します "callback" コールバック
パラメータ
{id} (integer?)
戻り値
(any)
timer_pause({timer}, {paused}) timer_pause()
タイマーの一時停止または一時停止解除を行います。一時停止されたタイマーは、時間が経過してもコールバックを呼び出しません。一時停止解除されたタイマーは、十分な時間が経過している場合、すぐにコールバックが呼び出される可能性があります。
タイマーの一時停止は、短時間コールバックが呼び出されないようにするために役立ちます。
{paused} がゼロ以外の数値または空でない文字列に評価される場合、タイマーは一時停止され、それ以外の場合は一時停止解除されます。non-zero-arg を参照してください。
パラメータ
{timer} (integer)
{paused} (boolean)
戻り値
(any)
timer_start({time}, {callback} [, {options}]) timer_start() timer タイマーを作成し、タイマーIDを返します。
{time} はミリ秒単位の待機時間です。これは、コールバックを呼び出す前の最小時間です。システムがビジー状態であるか、Vim が入力待ちをしていない場合、時間は長くなります。Vim がメインループに戻ったときにコールバックを実行するには、0 を使用できます。
{callback} は呼び出す関数です。関数の名前または Funcref にすることができます。1 つの引数(タイマー ID)を使用して呼び出されます。コールバックは、Vim が入力待ちをしている場合にのみ呼び出されます。
{options} はディクショナリです。サポートされているエントリ: "repeat" コールバックを繰り返す回数。-1 は無限ループを意味します。デフォルトは 1 です。タイマーが連続して 3 回エラーを起こすと、繰り返しはキャンセルされます。
エラーの場合は-1を返します。
func MyHandler(timer)
  echo 'Handler called'
endfunc
let timer = timer_start(500, 'MyHandler',
        \ {'repeat': 3})
これにより、MyHandler() が 500 ミリ秒間隔で 3 回呼び出されます。
パラメータ
{time} (number)
{callback} (string|function)
{options} (table?)
戻り値
(any)
timer_stop({timer}) timer_stop()
タイマーを停止します。タイマーコールバックは呼び出されなくなります。{timer} は timer_start() によって返された ID であるため、数値である必要があります。{timer} が存在しない場合、エラーは発生しません。
パラメータ
{timer} (integer)
戻り値
(any)
timer_stopall() timer_stopall()
すべてのタイマーを停止します。タイマーコールバックは呼び出されなくなります。いくつかのタイマーが誤動作している場合に役立ちます。タイマーがない場合は、エラーは発生しません。
戻り値
(any)
tolower({expr}) tolower()
結果は、指定された文字列のコピーで、すべての大文字が小文字に変換されます(文字列に gu を適用した場合と同じです)。エラーの場合は空の文字列を返します。
パラメータ
{expr} (string)
戻り値
(文字列)
toupper({expr}) toupper()
結果は、指定された文字列のコピーで、すべて小文字が大文字に変換されます(文字列に gU を適用した場合と同じです)。エラーの場合は空の文字列を返します。
パラメータ
{expr} (string)
戻り値
(文字列)
tr({src}, {fromstr}, {tostr}) tr()
結果は、{fromstr} に表示されるすべての文字が、{tostr} 文字列のその位置にある文字に置き換えられた {src} 文字列のコピーです。したがって、{fromstr} の最初の文字は {tostr} の最初の文字に変換され、以下同様です。unix の "tr" コマンドとまったく同じです。このコードは、マルチバイト文字も適切に処理します。
エラーが発生した場合は空の文字列を返します。
echo tr("hello there", "ht", "HT")
"Hello THere" を返します。
echo tr("<blob>", "<>", "{}")
"{blob}" を返します。
パラメータ
{src} (文字列)
{fromstr} (string)
{tostr} (string)
戻り値
(文字列)
trim({text} [, {mask} [, {dir}]]) trim()
{text} の先頭と/または末尾から {mask} の任意の文字が削除された文字列として {text} を返します。
{mask} が指定されていない場合、または空の文字列の場合、{mask} は Tab、スペース、NL、CR、および改行不能スペース文字 0xa0 を含む 0x20 までのすべての文字になります。
オプションの {dir} 引数は、文字を削除する場所を指定します: 0 {text} の先頭と末尾から削除する 1 {text} の先頭のみから削除する 2 {text} の末尾のみから削除する 省略した場合は、両端がトリムされます。
この関数は、マルチバイト文字を適切に処理します。エラーの場合は空の文字列を返します。
echo trim("   some text ")
"some text" を返します。
echo trim("  \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL"
"RESERVE_TAIL" を返します。
echo trim("rm<Xrm<>X>rrm", "rm<>")
"Xrm<>X" を返します(中央の文字は削除されません)。
echo trim("  vim  ", " ", 2)
" vim" を返します。
パラメータ
{text} (string)
{mask} (string?)
{dir} (0|1|2?)
戻り値
(文字列)
trunc({expr}) trunc()
Float として、{expr} 以下の大きさを持つ最大の整数値を返します(0 に向けて切り捨て)。{expr}Float または Number に評価される必要があります。{expr}Float でも Number でもない場合は 0.0 を返します。例
echo trunc(1.456)
1.0
echo trunc(-5.456)
-5.0
echo trunc(4.0)
4.0
パラメータ
{expr} (number)
戻り値
(integer)
type({expr}) type()
結果は、{expr} の型を表す数値です。数値を直接使用せずに、以下の値を持つ v:t_ 変数を使用することをお勧めします。 数値: 0 v:t_number 文字列: 1 v:t_string 関数参照: 2 v:t_func リスト: 3 v:t_list ディクショナリ: 4 v:t_dict 浮動小数点数: 5 v:t_float ブール値: 6 v:t_bool (v:falsev:true) NULL: 7 (v:null) BLOB: 10 v:t_blob 下位互換性のために、このメソッドを使用できます。
if type(myvar) == type(0) | endif
if type(myvar) == type("") | endif
if type(myvar) == type(function("tr")) | endif
if type(myvar) == type([]) | endif
if type(myvar) == type({}) | endif
if type(myvar) == type(0.0) | endif
if type(myvar) == type(v:true) | endif
v:null 型のチェックに代えて、v:null を直接チェックすることをお勧めします。これはこの型の一意の値であるためです。
if myvar is v:null | endif
v:t_ 変数が存在するかどうかを確認するには、これを使用します。
if exists('v:t_number') | endif
パラメータ
{expr} (any)
戻り値
(integer)
undofile({name}) undofile()
書き込み時に、名前が{name}であるファイルで使用される元に戻すファイルの名前を返します。'undodir' オプションを使用して、存在するディレクトリを検索します。元に戻すファイルが存在するかどうかはチェックしません。{name}は常に完全パスに展開されます(内部で使用されるため)。{name}が空の場合、undofile()は空の文字列を返します。ファイル名のないバッファは元に戻すファイルを書き込まないためです。:wundo:rundo と組み合わせて使用すると便利です。
パラメータ
{name} (文字列)
戻り値
(文字列)
undotree([{buf}]) undotree()
現在のバッファ、または{buf}が指定されている場合は特定のバッファの、元に戻すツリーの現在の状態を返します。結果は、次の項目を含むディクショナリです。「seq_last」 使用された最大の元に戻すシーケンス番号。「seq_cur」 元に戻すツリー内の現在の位置のシーケンス番号。一部の変更が元に戻された場合、「seq_last」とは異なります。「time_cur」 :earlier および関連コマンドで最後に使用された時刻。strftime() を使用して、読みやすい形式に変換します。「save_last」 最後のファイル書き込みの番号。まだ書き込みがない場合はゼロ。「save_cur」 元に戻すツリー内の現在の位置の番号。「synced」 最後の元に戻すブロックが同期された場合にゼロ以外になります。これは、ユーザーからの入力を待機している場合に発生します。undo-blocks を参照してください。「entries」 元に戻すブロックに関する情報を含むディクショナリのリスト。
"entries" リストの最初の項目は、最も古い元に戻す項目です。各リスト項目は、次の項目を含むディクショナリです。「seq」 元に戻すシーケンス番号。:undolist に表示されるものと同じ。「time」 変更が発生したタイムスタンプ。strftime() を使用して、読みやすい形式に変換します。「newhead」 最後に追加された項目にのみ表示されます。これは最後の変更と、さらに変更が追加される場所を示します。「curhead」 最後に元に戻された項目にのみ表示されます。これは、元に戻すツリー内の現在の位置、元に戻すコマンドで使用されるブロックを示します。最後の変更後に何も元に戻されていない場合、この項目はどこにも表示されません。「save」 ファイル書き込み前の最後のブロックにのみ表示されます。数値は書き込み回数です。最初の書き込みの番号は1、最後の書き込みの番号は上記の「save_last」です。「alt」 代替エントリ。これは、元に戻すブロックのリストです。各項目には、再び「alt」項目が含まれている場合があります。
パラメータ
{buf} (整数|文字列?)
戻り値
(vim.fn.undotree.ret)
uniq({list} [, {func} [, {dict}]]) uniq() E882 隣接する繰り返し{list}項目の2番目以降のコピーをインプレースで削除します。{list}を返します。リストを変更せずに保持する場合は、最初にコピーを作成してください。
let newlist = uniq(copy(mylist))
デフォルトの比較関数は、各項目の文字列表現を使用します。{func}{dict}の使用については、sort()を参照してください。
{list}リストでない場合、ゼロを返します。
パラメータ
{list} (任意)
{func} (任意?)
{dict} (any?)
戻り値
any[]|0
utf16idx({string}, {idx} [, {countcc} [, {charidx}]]) utf16idx()
charidx()と同じですが、{string}内の{idx}にあるバイトのUTF-16コードユニットインデックスを返します(UTF-16に変換した後)。
{charidx}が存在し、TRUEの場合、{idx}はバイトインデックスではなく、文字列{string}内の文字インデックスとして使用されます。UTF-8シーケンスの中間にある{idx}は、そのシーケンスの先頭に丸められます。
引数が無効である場合、または{string}{idx}バイト未満しかない場合、-1を返します。{idx}バイトが正確にある場合、UTF-16コードユニットの文字列の長さを返します。
byteidx()byteidxcomp()を使用してUTF-16インデックスからバイトインデックスを取得し、charidx()を使用してUTF-16インデックスから文字インデックスを取得します。string-offset-encodingで詳細情報をご覧ください。例
echo utf16idx('a😊😊', 3)        " returns 2
echo utf16idx('a😊😊', 7)        " returns 4
echo utf16idx('a😊😊', 1, 0, 1)        " returns 2
echo utf16idx('a😊😊', 2, 0, 1)        " returns 4
echo utf16idx('aą́c', 6)                " returns 2
echo utf16idx('aą́c', 6, 1)        " returns 4
echo utf16idx('a😊😊', 9)        " returns -1
パラメータ
{string} (string)
{idx} (integer)
{countcc} (boolean?)
{charidx} (ブール値?)
戻り値
(integer)
values({dict}) values()
{dict}のすべての値を含むリストを返します。リストの順序は任意です。items()keys()も参照してください。{dict}ディクショナリでない場合、ゼロを返します。
パラメータ
{dict} (any)
戻り値
(any)
virtcol({expr} [, {list} [, {winid}]]) virtcol()
結果は数値であり、{expr}で指定されたファイル位置の画面列です。つまり、画面の幅が無制限である場合、その位置にある文字によって占められる最後の画面位置です。その位置に<Tab>がある場合、返される数値は<Tab>の終わりの列になります。たとえば、'ts'が8に設定されている場合、列1の<Tab>に対して8を返します。concealは無視されます。バイト位置については、col()を使用してください。
{expr}の使用については、getpos()col()を参照してください。{expr}が"$"の場合、カーソル行の終わりを意味するため、結果はカーソル行のセルの数プラス1になります。
'virtualedit'が使用されている場合、{expr}は[lnum, col, off]にすることができ、ここで"off"は文字の先頭からの画面列のオフセットです。たとえば、<Tab>内または最後の文字の後の位置。"off"が省略されている場合は、ゼロが使用されます。現在のモードで仮想編集がアクティブになっている場合、行の終わりを超えた位置が返される可能性があります。'virtualedit'も参照してください。
{list}が存在し、ゼロ以外の場合、virtcol()は文字によって占められる最初の画面位置と最後の画面位置を含むリストを返します。
オプションの{winid}引数を使用すると、現在のウィンドウの代わりにそのウィンドウの値が取得されます。
現在のファイル内のマークのみを使用できることに注意してください。例
" With text "foo^Lbar" and cursor on the "^L":
echo virtcol(".")        " returns 5
echo virtcol(".", 1)        " returns [4, 5]
echo virtcol("$")        " returns 9
" With text "          there", with 't at 'h':
echo virtcol("'t")        " returns 6
最初の列は1です。エラーの場合は0または[0, 0]が返されます。
すべての行の最大長を出力する高度な例
echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
パラメータ
{expr} (string|integer[])
{list} (boolean?)
{winid} (integer?)
戻り値
(any)
virtcol2col({winid}, {lnum}, {col}) virtcol2col()
結果は数値であり、ウィンドウ{winid}のバッファ行{lnum}と仮想列{col}にある文字のバイトインデックスです。
バッファ行{lnum}が空行の場合、0を返します。
{col}が行{lnum}の最後の仮想列よりも大きい場合、最後の仮想列にある文字のバイトインデックスが返されます。
マルチバイト文字の場合、文字の最初のバイトの列番号が返されます。
{winid}引数は、ウィンドウ番号またはwindow-IDにすることができます。これがゼロの場合、現在のウィンドウが使用されます。
ウィンドウ{winid}が存在しない場合、またはバッファ行{lnum}または仮想列{col}が無効な場合、-1を返します。
screenpos()virtcol()、およびcol()も参照してください。
パラメータ
{winid}整数
{lnum} (integer)
{col} (integer)
戻り値
(any)
visualmode([{expr}]) visualmode()
結果は文字列であり、現在のバッファで使用された最後のVisualモードを表します。最初は空の文字列を返しますが、Visualモードが使用されると、「v」、「V」、または「<CTRL-V>」(単一のCTRL-V文字)をそれぞれ文字単位、行単位、ブロック単位のVisualモードとして返します。例
exe "normal " .. visualmode()
これにより、以前と同じVisualモードに入ります。使用されたVisualモードに応じて異なる動作をさせる必要があるスクリプトでも役立ちます。Visualモードがアクティブな場合は、mode()を使用してVisualモードを取得します(たとえば、:vmap内)。{expr}が提供され、ゼロ以外の数値または空でない文字列として評価される場合、Visualモードはクリアされ、古い値が返されます。non-zero-argを参照してください。
パラメータ
{expr} (ブール値?)
戻り値
(any)
wait({timeout}, {condition} [, {interval}]) wait()
{condition}TRUEになるまで待機します。ここで、{condition}関数参照または式を含む文字列です。
{timeout}はミリ秒単位の最大待機時間です。-1は永遠を意味します。
条件は、ユーザーイベント、内部イベント、および{interval}ミリ秒ごと(デフォルト:200)に評価されます。
ステータス整数(0〜3)を返します。 0: タイムアウト前に条件が満たされた場合 -1: タイムアウトした場合 -2: 関数が中断された場合(CTRL-Cによる) -3: エラーが発生した場合
パラメータ
{timeout} (整数)
{condition} (任意)
{interval} (数値?)
戻り値
(any)
wildmenumode() wildmenumode()
wildmenuがアクティブな場合にTRUEを、そうでない場合にFALSEを返します。'wildmenu''wildmode'を参照してください。これは、マッピングで'wildcharm'オプションを適切に処理するために使用できます。(mapmode-cマッピングでのみ意味があります)。
例えば、wildmodeにおいて<c-j><down>のように動作させるには、以下を使用します。
cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
(注記: これには、'wildcharm' オプションを適切に設定する必要があります。)
戻り値
(any)
win_execute({id}, {command} [, {silent}]) win_execute()
execute()と同様ですが、ウィンドウ{id}のコンテキストで行われます。ウィンドウは一時的に現在のウィンドウになり、autocommandがトリガーされたり、ディレクトリが変更されたりすることはありません。{command}を実行するときにautocommandがトリガーされますが、予期しない副作用が発生する可能性があります。必要に応じて:noautocmdを使用してください。例
call win_execute(winid, 'syntax enable')
setwinvar()を使用して同じことを行うと、autocommandはトリガーされず、構文の強調表示も実際には表示されません。
ウィンドウ{id}が存在しない場合、エラーは発生せず、空の文字列が返されます。
パラメータ
{id} (integer)
{command} (文字列)
{silent} (論理値?)
戻り値
(any)
win_findbuf({bufnr}) win_findbuf()
バッファ{bufnr}を含むウィンドウのウィンドウIDを格納したリストを返します。存在しない場合は空のリストが返されます。
パラメータ
{bufnr} (整数)
戻り値
(整数配列)
win_getid([{win} [, {tab}]]) win_getid()
指定されたウィンドウのウィンドウIDを取得します。{win}が省略された場合は、現在のウィンドウを使用します。{win}を指定する場合は、ウィンドウ番号を指定します。最上位のウィンドウの番号は1です。{tab}が省略された場合は現在のタブを使用し、それ以外の場合は番号{tab}のタブを使用します。最初のタブの番号は1です。ウィンドウが見つからない場合は0を返します。
パラメータ
{win} (integer?)
{tab} (整数?)
戻り値
(integer)
win_gettype([{nr}]) win_gettype()
ウィンドウの種類を返します: "autocmd" autocommandウィンドウ。autocommandの実行に使用される一時ウィンドウ。"command" コマンドラインウィンドウ cmdwin (空) 通常ウィンドウ "loclist" location-list-window "popup" フローティングウィンドウ api-floatwin "preview" プレビューウィンドウ preview-window "quickfix" quickfix-window "unknown" ウィンドウ{nr}が見つかりません
{nr}が省略された場合は、現在のウィンドウの種類を返します。{nr}が指定された場合は、番号またはウィンドウIDで指定されたウィンドウの種類を返します。
また、'buftype' オプションも参照してください。
パラメータ
{nr} (integer?)
戻り値
('autocmd'|'command'|''|'loclist'|'popup'|'preview'|'quickfix'|'unknown')
win_gotoid({expr}) win_gotoid()
IDが{expr}のウィンドウに移動します。これにより、現在のタブページも変更される場合があります。成功した場合はTRUE、ウィンドウが見つからない場合はFALSEを返します。
パラメータ
{expr} (整数)
戻り値
(0|1)
win_id2tabwin({expr}) win_id2tabwin()
IDが{expr}のウィンドウのタブ番号とウィンドウ番号を含むリスト[タブ番号, ウィンドウ番号]を返します。ウィンドウが見つからない場合は[0, 0]を返します。
パラメータ
{expr} (整数)
戻り値
(any)
win_id2win({expr}) win_id2win()
IDが{expr}のウィンドウのウィンドウ番号を返します。現在のタブページでウィンドウが見つからない場合は0を返します。
パラメータ
{expr} (整数)
戻り値
(any)
win_move_separator({nr}, {offset}) win_move_separator()
ウィンドウ{nr}の垂直セパレータ(つまり、右端の境界線)を、マウスでドラッグした場合と同様に{offset}列移動します。{nr}はウィンドウ番号またはウィンドウIDにすることができます。正の{offset}は右に移動し、負の{offset}は左に移動します。ウィンドウの垂直セパレータを移動すると、ウィンドウの幅と、垂直セパレータに隣接する他のウィンドウの幅が変更されます。移動の大きさは、指定された値よりも小さくなる場合があります(例:'winminwidth'を維持するため)。ウィンドウが見つかった場合はTRUE、見つからない場合はFALSEを返します。これは、最右端のウィンドウと全幅ウィンドウでは失敗します。右側にセパレータがないためです。現在のタブページでのみ機能します。E1308
パラメータ
{nr} (integer)
{offset} (整数)
戻り値
(any)
win_move_statusline({nr}, {offset}) win_move_statusline()
ウィンドウ{nr}のステータスライン(つまり、下端の境界線)を、マウスでドラッグした場合と同様に{offset}行移動します。{nr}はウィンドウ番号またはウィンドウIDにすることができます。正の{offset}は下に移動し、負の{offset}は上に移動します。ウィンドウのステータスラインを移動すると、ウィンドウの高さと、ステータスラインに隣接する他のウィンドウの高さが変更されます。移動の大きさは、指定された値よりも小さくなる場合があります(例:'winminheight'を維持するため)。ウィンドウが見つかった場合はTRUE、見つからない場合はFALSEを返します。現在のタブページでのみ機能します。
パラメータ
{nr} (integer)
{offset} (整数)
戻り値
(any)
win_screenpos({nr}) win_screenpos()
ウィンドウ{nr}の画面上の位置を、2つの数値を含むリスト[行, 列]として返します。最初のウィンドウの位置は常に[1, 1]ですが、タブラインがある場合は[2, 1]になります。{nr}はウィンドウ番号またはウィンドウIDにすることができます。現在のウィンドウには0を使用します。ウィンドウが見つからない場合は[0, 0]を返します。
パラメータ
{nr} (integer)
戻り値
(any)
win_splitmove({nr}, {target} [, {options}]) win_splitmove()
ウィンドウ{target}に一時的に切り替え、その後、ウィンドウ{nr}{target}に隣接する新しい分割に移動します。:splitなどのコマンドとは異なり、新しいウィンドウは作成されません(移動後もウィンドウ{nr}ウィンドウIDは変わりません)。
{nr}{target}はどちらも、ウィンドウ番号またはウィンドウIDにすることができます。どちらも現在のタブページにある必要があります。
成功した場合は0、失敗した場合は0以外の値を返します。
{options}は、次のオプションのエントリを含む辞書です: "vertical" TRUEの場合、:vsplitと同様に垂直に分割が作成されます。"rightbelow" TRUEの場合、分割は下または右(垂直の場合)に行われます。FALSEの場合、上または左(垂直の場合)に行われます。存在しない場合、'splitbelow''splitright'の値が使用されます。
パラメータ
{nr} (integer)
{target} (整数)
{options} (table?)
戻り値
(any)
winbufnr({nr}) winbufnr()
結果は、ウィンドウ{nr}に関連付けられたバッファの番号である数値です。{nr}はウィンドウ番号またはウィンドウIDにすることができます。{nr}が0の場合、現在のウィンドウのバッファの番号が返されます。ウィンドウ{nr}が存在しない場合、-1が返されます。例
echo "The file in the current window is " .. bufname(winbufnr(0))
パラメータ
{nr} (integer)
戻り値
(integer)
wincol() wincol()
結果は、ウィンドウ内のカーソルの仮想列である数値です。これは、ウィンドウの左側から画面のセルをカウントしたものです。最も左の列は1です。
戻り値
(integer)
windowsversion() windowsversion()
結果は文字列です。MS-Windowsの場合、OSのバージョンを示します。例:Windows 10は"10.0"、Windows 8は"6.2"、Windows XPは"5.1"です。MS-Windows以外のシステムでは、空の文字列が返されます。
戻り値
(文字列)
winheight({nr}) winheight()
結果は、ウィンドウ{nr}の高さである数値です。{nr}はウィンドウ番号またはウィンドウIDにすることができます。{nr}が0の場合、現在のウィンドウの高さが返されます。ウィンドウ{nr}が存在しない場合、-1が返されます。既存のウィンドウの高さは常に0以上になります。これは、ウィンドウのツールバー行を除きます。例
echo "The current window has " .. winheight(0) .. " lines."
パラメータ
{nr} (integer)
戻り値
(integer)
winlayout([{tabnr}]) winlayout()
結果は、タブページ内のウィンドウのレイアウトを含む入れ子になったリストです。
{tabnr}が省略された場合は、現在のタブページを使用し、それ以外の場合は番号{tabnr}のタブページを使用します。タブページ{tabnr}が見つからない場合は、空のリストを返します。
リーフウィンドウの場合、以下を返します。
["leaf", {winid}]
列を形成する水平分割ウィンドウの場合、以下を返します。
["col", [{nested list of windows}]]
行を形成する垂直分割ウィンドウの場合、以下を返します。
["row", [{nested list of windows}]]
" Only one window in the tab page
echo winlayout()
['leaf', 1000]
" Two horizontally split windows
echo winlayout()
['col', [['leaf', 1000], ['leaf', 1001]]]
" The second tab page, with three horizontally split
" windows, with two vertically split windows in the
" middle window
echo winlayout(2)
['col', [['leaf', 1002], ['row', [['leaf', 1003],
                    ['leaf', 1001]]], ['leaf', 1000]]]
パラメータ
{tabnr} (integer?)
戻り値
(any)
winline() winline()
結果は、ウィンドウ内のカーソルの画面上の行である数値です。これは、ウィンドウの上から画面の行をカウントしたものです。最初の行は1です。カーソルが移動された場合、ファイルのビューは最初に更新されます。これによりスクロールが発生することがあります。
戻り値
(integer)
winnr([{arg}]) winnr()
結果は、現在のウィンドウの番号である数値です。最上位のウィンドウの番号は1です。ポップアップウィンドウの場合は0を返します。
オプションの引数{arg}は、次の値をサポートします: $ 最後のウィンドウの数(ウィンドウ数)。# 最後にアクセスされたウィンドウの数(CTRL-W_pが移動する場所)。前のウィンドウがない場合、または別のタブページにある場合は0が返されます。場合によっては現在のウィンドウを参照する場合があります(例:'statusline'式を評価する場合)。{N}j 現在のウィンドウの下にあるN番目のウィンドウの数(CTRL-W_jが移動する場所)。{N}k 現在のウィンドウの上にあるN番目のウィンドウの数(CTRL-W_kが移動する場所)。{N}h 現在のウィンドウの左にあるN番目のウィンドウの数(CTRL-W_hが移動する場所)。{N}l 現在のウィンドウの右にあるN番目のウィンドウの数(CTRL-W_lが移動する場所)。この数値は、CTRL-W_wと":wincmd w" :wincmdで使用できます。{arg}が無効な場合、エラーが発生し、0が返されます。tabpagewinnr()win_getid()も参照してください。例
let window_count = winnr('$')
let prev_window = winnr('#')
let wnum = winnr('3k')
パラメータ
{arg} (文字列|整数?)
戻り値
(any)
winrestcmd() winrestcmd()
現在のウィンドウサイズを復元する必要がある:resizeコマンドのシーケンスを返します。ウィンドウが開いたり閉じたりせず、現在のウィンドウとタブページが変更されていない場合にのみ正しく機能します。例
let cmd = winrestcmd()
call MessWithWindowSizes()
exe cmd
戻り値
(any)
winrestview({dict}) winrestview()
辞書winsaveview() が返すので、それを利用して現在のウィンドウのビューを復元します。注記: {dict} には、winsaveview() が返すすべての値が含まれている必要はありません。値が欠けている場合、それらの設定は復元されません。そのため、以下のように使用できます。
call winrestview({'curswant': 4})
これは、カーソルのcurswant値(垂直方向の移動時にカーソルが移動しようとする列)のみを5列目に設定し(5です)、他の設定はすべてそのままにします。これは、カーソル位置を手動で設定する場合に便利です。
値を変更した場合、結果は予測できません。ウィンドウサイズが変更された場合、結果は同じになりません。
パラメータ
{dict} (vim.fn.winrestview.dict)
戻り値
(any)
winsaveview() winsaveview()
現在のウィンドウのビューを復元するための情報を含む辞書を返します。winrestview() を使用してビューを復元します。これは、バッファ内を飛び回るマッピングがあり、元のビューに戻りたい場合に便利です。これは、fold情報を保存しません。折り畳みを一時的にオフにするには、'foldenable' オプションを使用してください。これにより、移動中にfoldが開かれるのを防ぎます。副作用がある可能性があります。戻り値には以下が含まれます: lnum カーソル行番号 col カーソル列(注記: 最初の列は0であり、getcurpos() が返すものとは異なります)coladd 'virtualedit' のカーソル列オフセット curswant 垂直移動の列(注記: 最初の列は0であり、getcurpos() が返すものとは異なります)。$ コマンドの後、v:maxcol と等しい非常に大きな数になります。topline ウィンドウの最初の行 topfill フィラー行(diffモードのみ)leftcol 表示される最初の列。'wrap' がオフの場合にのみ使用されます skipcol スキップされた列 オプションの値は保存されません。
戻り値
(vim.fn.winsaveview.ret)
winwidth({nr}) winwidth()
ウィンドウ{nr}の幅を表す数値を返します。{nr}には、ウィンドウ番号またはウィンドウIDを指定できます。{nr}が0の場合、現在のウィンドウの幅が返されます。ウィンドウ{nr}が存在しない場合、-1が返されます。存在するウィンドウの幅は常に0以上です。例
echo "The current window has " .. winwidth(0) .. " columns."
if winwidth(0) <= 50
  50 wincmd |
endif
ターミナルまたは画面サイズを取得するには、'columns' オプションを参照してください。
パラメータ
{nr} (integer)
戻り値
(any)
wordcount() wordcount()
現在のバッファのバイト数/文字数/単語数の統計情報を表す辞書を返します。g_CTRL-G が提供する情報と同じです。戻り値には以下が含まれます: bytes バッファ内のバイト数 chars バッファ内の文字数 words バッファ内の単語数 cursor_bytes カーソル位置前のバイト数(ビジュアルモードではない) cursor_chars カーソル位置前の文字数(ビジュアルモードではない) cursor_words カーソル位置前の単語数(ビジュアルモードではない) visual_bytes ビジュアル選択されたバイト数(ビジュアルモードのみ) visual_chars ビジュアル選択された文字数(ビジュアルモードのみ) visual_words ビジュアル選択された単語数(ビジュアルモードのみ)
戻り値
(any)
writefile({object}, {fname} [, {flags}]) writefile()
{object}リストの場合、それをファイル{fname}に書き込みます。各リスト項目はNLで区切られます。各リスト項目は文字列または数値でなければなりません。すべてのNL文字はNUL文字に置き換えられます。CR文字を挿入する必要がある場合は、{list}をwritefile()に渡す前に実行する必要があります。
{object}Blobの場合、バイナリモードが指定されていない場合でも、バイトをファイル{fname}に変更せずに書き込みます。
{flags}は文字列でなければなりません。以下の文字が認識されます。
'b' バイナリモードが使用されます: 最後のリスト項目の後にNLは追加されません。末尾に空の項目があると、ファイルの最後の行がNLで終わります。
'a' 追記モードが使用され、行がファイルに追加されます。
call writefile(["foo"], "event.log", "a")
call writefile(["bar"], "event.log", "a")
'D' 現在の関数が終了するときにファイルを削除します。これは、
defer delete({fname})
関数内以外では失敗します。:deferも参照してください。
's' 書き込み後にfsync()が呼び出されます。可能であれば、ファイルをディスクにフラッシュします。これには時間がかかりますが、システムがクラッシュした場合でもファイルの損失を防ぎます。
'S' 'fsync' が設定されている場合でも、fsync()は呼び出されません。
{flags}に"S"または"s"が含まれていない場合、'fsync' オプションが設定されているとfsync()が呼び出されます。
可能であれば、既存のファイルは上書きされます。
書き込みに失敗すると-1が返され、それ以外の場合は0が返されます。ファイルを作成できない場合や書き込みに失敗した場合、エラーメッセージが表示されます。
readfile()も参照してください。ファイルをバイト単位でコピーするには
let fl = readfile("foo", "b")
call writefile(fl, "foocopy", "b")
パラメータ
{object} (any)
{fname} (string)
{flags} (string?)
戻り値
(any)
xor({expr}, {expr}) xor()
2つの引数に対してビットごとのXOR演算を実行します。引数は数値に変換されます。リスト、辞書、浮動小数点数の引数はエラーになります。and()or()も参照してください。例
let bits = xor(bits, 0x80)
パラメータ
{expr} (number)
{expr1} (number)
戻り値
(any)

2. 文字列のパターンの照合 string-match

これはいくつかの関数で共通しています。パターンで説明されている正規表現パターンは、通常、バッファの行で一致を見つけるために使用されます。文字列で一致を見つけるためにパターンを使用する場合、ほとんどすべてが同じように機能します。違いは、文字列が1行のように扱われることです。"\n"文字が含まれている場合、これはパターンに対して改行として認識されません。パターン内の"\n"または"."で照合できます。例
let a = "aaaa\nxxxx"
echo matchstr(a, "..\n..")
" aa
" xx
echo matchstr(a, "a.x")
" a
" x
"^"は文字列の先頭文字のみに一致し、"$"は文字列の末尾文字のみに一致することに注意してください。"\n"の前後には一致しません。
メイン
コマンド索引
クイックリファレンス