Nvim の:help ページ。 生成元は ソースで、 tree-sitter-vimdoc パーサーを使用しています。
{expr}) abs(){expr}の絶対値を返します。{expr}がFloatに評価された場合、abs()はFloatを返します。{expr}がNumberに変換できる場合、abs()はNumberを返します。それ以外の場合は、エラーメッセージを表示して-1を返します。例echo abs(1.456)echo abs(-5.456)echo abs(-4){expr} (number)number){expr}) acos(){expr}のアークコサインを、[0, π]の範囲のFloatとして返します。{expr}は、[-1, 1]の範囲のFloatまたはNumberに評価されなければなりません。{expr}が[-1, 1]の範囲外の場合はNaNを返します。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo acos(0)echo acos(-0.5){expr} (number)number){object}, {expr}) add(){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){expr}, {expr}) and()or()およびxor()も参照してください。例let flag = and(bits, 0x80){expr} (number){expr1} (number)integer)lua vim.print(vim.fn.api_info())table){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){buf}の使用方法については、bufname()を参照してください。{lnum}は、下に追加する行番号です。line()を使用すると、追加先のバッファではなく、現在のバッファが使用されることに注意してください。バッファの最後に追加するには「$」を使用します。その他の文字列値はサポートされていません。{buf}が無効なバッファであるか、{lnum}が無効な場合は、エラーメッセージが表示されます。例let failed = appendbufline(13, 0, "# THE START"){text}が空のリストの場合、{lnum}は実際には使用されないため、無効な{lnum}に対してエラーは表示されません。{buf} (integer|string){lnum} (integer){text} (string)0|1){winid}]) argc(){winid}が指定されていない場合、現在のウィンドウの引数リストが使用されます。{winid}が-1の場合、グローバルな引数リストが使用されます。それ以外の場合は、{winid}は、引数リストが使用されるウィンドウ(ウィンドウ番号またはウィンドウID)を指定します。{winid}引数が無効な場合は-1を返します。{winid} (integer?)integer)integer){winnr} [, {tabnr}]]) arglistid(){winnr}のみで現在のタブページ内のこのウィンドウを使用します。{winnr}と{tabnr}で、指定されたタブページ内のウィンドウを使用します。{winnr}は、ウィンドウ番号またはwindow-IDにすることができます。{winnr} (integer?){tabnr} (integer?)integer){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}番目の引数が引数リストに存在しない場合は空の文字列を返します。{winid}引数が無効な場合は空のListを返します。{nr} (integer?){winid} (integer?)string|string[]){expr}) asin(){expr}のアークサインを、[-π/2, π/2]の範囲のFloatとして返します。{expr}は、[-1, 1]の範囲のFloatまたはNumberに評価されなければなりません。{expr}が[-1, 1]の範囲外の場合はNaNを返します。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo asin(0.8)echo asin(-0.5){expr} (any)number){cmd}) assert_beeps(){cmd}を実行し、ビープ音または視覚ベルを生成しない場合に、v:errorsにエラーメッセージを追加します。assert_fails()、assert_nobeep()、およびassert-returnも参照してください。{cmd} (string)0|1){expected}, {actual} [, {msg}]) assert_equal(){expected}と{actual}が等しくない場合、v:errorsにエラーメッセージが追加され、1が返されます。それ以外の場合は0が返されます。assert-return エラーは「Expected {expected} but got {actual}」という形式です。{msg}が存在する場合は、スクリプトから実行された場合のアサートの位置とともに、その前に追加されます。call assert_equal('foo', 'bar', 'baz'){expected} (any){actual} (any){msg} (any?)0|1){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){error} [, {msg}]) assert_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){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'])call assert_fails('cmd', ['', 'E987:']){msg}が空の場合、使用されません。{lnum}引数を渡す場合にデフォルトメッセージを取得するには、これを行います。E1115{lnum}が存在し、負でない場合、および{error}引数が存在し、一致する場合、これはエラーが報告された行番号と比較されます。これは、関数内またはスクリプト内の行番号です。E1116{context}が存在する場合は、パターンとして使用され、{lnum}が存在するコンテキスト(スクリプト名または関数名)と照合されます。{cmd} (string){error} (any?){msg} (any?){lnum} (integer?){context} (any?)0|1){actual} [, {msg}]) assert_false(){actual}が偽ではない場合、v:errorsにエラーメッセージが追加されます。assert_equal()の場合と同様です。エラーは「偽と予想されましたが、{actual}が得られました」という形式です。{msg}が存在する場合は、スクリプトから実行された場合のアサーションの位置と共に、その前に付加されます。assert-returnも参照してください。{actual}が数値でない場合、アサーションは失敗します。{actual} (any){msg} (any?)0|1){lower}, {upper}, {actual} [, {msg}]) assert_inrange(){actual}が{lower}より小さいか、{upper}より大きい場合、v:errorsにエラーメッセージが追加されます。assert-returnも参照してください。エラーは「範囲{lower} - {upper}と予想されましたが、{actual}が得られました」という形式です。{msg}が存在する場合は、その前に付加されます。{lower} (数値){upper} (数値){actual} (数値){msg} (文字列?)0|1){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'){pattern} (文字列){actual} (文字列){msg} (文字列?)0|1){cmd}) assert_nobeep(){cmd}を実行し、ビープ音または視覚ベルを生成した場合は、v:errorsにエラーメッセージを追加します。assert_beeps()も参照してください。{cmd} (string)0|1){expected}, {actual} [, {msg}]) assert_notequal()assert_equal()の反対です。{expected}と{actual}が等しい場合、v:errorsにエラーメッセージを追加します。assert-returnも参照してください。{expected} (any){actual} (any){msg} (any?)0|1){pattern}, {actual} [, {msg}]) assert_notmatch()assert_match()の反対です。{pattern}が{actual}と一致する場合、v:errorsにエラーメッセージを追加します。assert-returnも参照してください。{pattern} (文字列){actual} (文字列){msg} (文字列?)0|1){msg} (文字列)0|1){actual} [, {msg}]) assert_true(){actual}が真ではない場合、v:errorsにエラーメッセージが追加されます。assert_equal()の場合と同様です。assert-returnも参照してください。値がゼロ以外の数値またはv:trueの場合、TRUEとなります。{actual}が数値またはv:trueでない場合、アサーションは失敗します。{msg}が指定されている場合、スクリプトから実行された場合のアサーションの位置と共に、デフォルトメッセージの前に付加されます。{actual} (any){msg} (文字列?)0|1){expr}) atan(){expr}の逆正接の主値を [-pi/2, +pi/2] ラジアンの範囲でFloatとして返します。{expr}はFloatまたはNumberとして評価される必要があります。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo atan(100)echo atan(-4.01){expr} (number)number){expr1}, {expr2}) atan2(){expr1} / {expr2}の逆正接をラジアンで測定した値を [-pi, pi] の範囲でFloatとして返します。{expr1}と{expr2}はFloatまたはNumberとして評価される必要があります。{expr1}または{expr2}がFloatまたはNumberでない場合は0.0を返します。例echo atan2(-1, 1)echo atan2(1, -1){expr1} (number){expr2} (数値)number){blob}) blob2list(){blob}内の各バイトの数値を含むリストを返します。例blob2list(0z0102.0304) " returns [1, 2, 3, 4]
blob2list(0z) " returns []{blob} (任意)任意[]){save}, {title}, {initdir}, {default}) browse(){save} がTRUEの場合、書き込むファイルを選択する {title} 要求ダイアログのタイトル {initdir} ブラウジングを開始するディレクトリ {default} デフォルトのファイル名 「キャンセル」ボタンが押された場合、何か問題が発生した場合、またはブラウジングが不可能な場合は、空の文字列が返されます。{save} (任意){title} (文字列){initdir} (文字列){default} (文字列)0|1){title}, {initdir}) browsedir(){title} 要求ダイアログのタイトル {initdir} ブラウジングを開始するディレクトリ 「キャンセル」ボタンが押された場合、何か問題が発生した場合、またはブラウジングが不可能な場合は、空の文字列が返されます。{title} (文字列){initdir} (文字列)0|1){name}) bufadd(){name}(文字列でなければならない)を持つバッファをバッファリストに追加します。ファイル{name}のバッファが既に存在する場合は、そのバッファ番号を返します。そうでない場合は、新しく作成されたバッファのバッファ番号を返します。{name}が空の文字列の場合、常に新しいバッファが作成されます。'buflisted'は設定されず、まだロードされていません。バッファにテキストを追加するには、これを使用します。let bufnr = bufadd('someName')
call bufload(bufnr)
call setbufline(bufnr, 1, ['some', 'text']){name} (文字列)integer){buf}) bufexists(){buf}という名前のバッファが存在する場合はTRUEとなります。{buf}引数が数値の場合、バッファ番号が使用されます。数値0は現在のウィンドウの代替バッファです。{buf}引数が文字列の場合、バッファ名と正確に一致する必要があります。名前は次のようになります。{buf} (任意)0|1){buf}) buflisted(){buf}という名前のバッファが存在し、リストされている('buflisted'オプションが設定されている)場合はTRUEとなります。{buf}引数はbufexists()と同様に使用されます。{buf} (任意)0|1){buf}) bufload(){buf}がロードされていることを確認します。バッファ名が既存のファイルを指す場合、ファイルが読み取られます。そうでない場合、バッファは空になります。バッファが既にロードされている場合は、変更はありません。バッファがファイルに関連付けられていない場合(例:'buftype'が「nofile」の場合)、ファイルは読み取られません。バッファのファイルに既存のスワップファイルがある場合、ダイアログは表示されず、バッファはとにかくロードされます。{buf}引数はbufexists()と同様に使用されます。{buf} (任意){buf}) bufloaded(){buf}という名前のバッファが存在し、ロードされている(ウィンドウに表示されているか非表示であるか)場合はTRUEとなります。{buf}引数はbufexists()と同様に使用されます。{buf} (任意)0|1){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} (整数|文字列?)文字列){buf} [, {create}]]) bufnr():lsコマンドで表示されるバッファの番号です。{buf}の使用方法については、上記のbufname()を参照してください。バッファが存在しない場合は-1が返されます。または、{create}引数が存在しTRUEの場合、新しいリストされていないバッファが作成され、その番号が返されます。bufnr("$")は最後のバッファです。let last_buffer = bufnr("$"){buf} (整数|文字列?){create} (any?)integer){buf}) bufwinid(){buf}に関連付けられた最初のウィンドウのウィンドウIDを表す数値です。{buf}の使用方法については、上記のbufname()を参照してください。バッファ{buf}が存在しない場合、またはそのようなウィンドウがない場合は-1が返されます。例echo "A window containing buffer 1 is " .. (bufwinid(1)){buf} (任意)integer){buf}) bufwinnr(){buf}が存在しない場合、またはそのようなウィンドウがない場合は-1が返されます。例echo "A window containing buffer 1 is " .. (bufwinnr(1)){buf} (任意)integer){byte}) byte2line(){byte}にある文字を含む行番号を返します。現在のバッファの'fileformat'オプションに応じて、改行文字が含まれます。最初の文字のバイト数は1です。line2byte()、go、および:gotoも参照してください。{byte}値が無効な場合は-1を返します。{byte} (any)integer){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))let s = strpart(str, byteidx(str, 3))
echo strpart(s, 0, byteidx(s, 1)){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){expr}, {nr} [, {utf16}]) byteidxcomp()let s = 'e' .. nr2char(0x301)
echo byteidx(s, 1)
echo byteidxcomp(s, 1)
echo byteidxcomp(s, 2){expr} (any){nr} (integer){utf16} (any?)integer){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){expr}) ceil(){expr}以上の最小の整数値を返します。{expr}は浮動小数点数または数値として評価する必要があります。例echo ceil(1.456)echo ceil(-5.456)echo ceil(4.0){expr} (number)number){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)integer){id}, {data}) chansend(){id}にデータを送信します。ジョブの場合、プロセスのstdinに書き込みます。channel-stdioチャネルの場合、Nvimのstdoutに書き込みます。書き込みが成功した場合は書き込まれたバイト数を、それ以外の場合は0を返します。詳細については、channel-bytesを参照してください。{data}は、文字列、文字列に変換可能なもの、Blob、またはリストです。{data}がリストの場合、項目は改行文字で結合されます。項目内の改行文字はNULとして送信されます。最終的な改行文字を送信するには、最終的な空の文字列を含めます。例call chansend(id, ["abc", "123\n456", ""])"rpc":v:trueで作成された場合、チャネルはRPCメッセージを期待するため、代わりにrpcnotify()とrpcrequest()を使用してください。{id} (number){data} (string|string[])0|1){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{utf8}は無視されます。後方互換性のためだけに存在します。結合文字は個別の文字です。nr2char()は逆の処理を行います。{string}が文字列でない場合は0を返します。{string} (string){utf8} (any?)0|1){string}) charclass(){string}の最初の文字の文字クラスを返します。文字クラスは次のいずれかです。0空白1句読点2単語文字('iskeyword'に依存)3絵文字その他の特定のUnicodeクラスこのクラスは、パターンと単語移動で使用されます。{string}が文字列でない場合は0を返します。{string} (string)0|1|2|3|'other')echo charcol('.') " returns 3
echo col('.') " returns 7{expr} (string|integer[]){winid} (integer?)integer){string}, {idx} [, {countcc} [, {utf16}]]) charidx(){string}内の{idx}バイト目の文字インデックスを返します。最初の文字のインデックスはゼロです。マルチバイト文字がない場合、戻り値は{idx}と等しくなります。{countcc}が省略されているかFALSEの場合、合成文字は個別にカウントされず、そのバイト長は前の基本文字に追加されます。{countcc}がTRUEの場合、合成文字は個別の文字としてカウントされます。{utf16}が存在しTRUEの場合、{idx}はバイトインデックスではなく、文字列{expr}のUTF-16インデックスとして使用されます。{idx}バイトより少ないバイトがある場合は-1を返します。正確に{idx}バイトがある場合、文字単位の文字列の長さを返します。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){dir}) chdir(){dir}に変更します。ディレクトリ変更の範囲は、現在のウィンドウのディレクトリに依存します。{dir}は文字列である必要があります。成功した場合は、以前の作業ディレクトリが返されます。ディレクトリを復元するには、これを別のchdir()に渡します。失敗した場合は、空の文字列を返します。let save_dir = chdir(newdir)
if save_dir != ""
" ... do some work
call chdir(save_dir)
endif{dir} (string)文字列){lnum}) cindent(){lnum}のインデント量を取得します。インデントはスペースでカウントされ、'tabstop'の値が関連します。{lnum}はgetline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。Cインデントを参照してください。{lnum} (integer)integer){win}]) clearmatches(){win} を指定すると、現在のウィンドウの代わりにこの番号またはウィンドウ ID を持つウィンドウが使用されます。{win} (integer?){expr} [, {winid}]) col(){expr} で指定された列位置のバイトインデックスである数値です。有効な位置については、getpos() を参照してください。{expr} が「$」の場合、カーソル行の末尾を意味し、結果はカーソル行のバイト数プラス1になります。さらに、{expr} は[lnum, col]にすることができます。これは、行番号と列番号を含むリストです。列が「$」の場合、特定の行の最後の列を取得するのに最も役立ちます。「lnum」または「col」が範囲外の場合、col() はゼロを返します。{winid}引数を使用すると、現在のウィンドウの代わりにそのウィンドウの値が取得されます。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{expr}が無効である場合、またはID {winid}のウィンドウが見つからない場合は0を返します。大文字のマークの場合、列は実際には別のバッファにある可能性があります。カーソル位置の場合、'virtualedit' が有効になっていると、カーソルが行末にある場合、列は1つ大きくなります。また、<Cmd> マッピングを使用する場合、カーソルは移動されません。これは、挿入モードでの列を取得するために使用できます。imap <F2> <Cmd>echo col(".").."\n"<CR>{expr} (string|integer[]){winid} (integer?)integer){startcol}, {matches}) complete() E785 挿入モードの補完のマッチを設定します。挿入モードでのみ使用できます。i_CTRL-R を参照して、CTRL-R を含むマッピングを使用する必要があります。CTRL-Oの後、または式マッピングでは動作しません。{startcol} は、補完されるテキストが始まる行におけるバイトオフセットです。カーソルまでのテキストは、マッチで置き換えられる元のテキストです。空の文字列には col('.') を使用します。"col('.') - 1" は、マッチで1文字を置き換えます。{matches} は リスト でなければなりません。各 リスト のアイテムは1つのマッチです。complete-items で可能なアイテムの種類を参照してください。'completeopt' の "longest" は無視されます。この関数を呼び出した後は、補完が停止するようなものを挿入しないようにする必要があります。マッチは、挿入モードの補完で通常どおりCTRL-N と CTRL-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[]){expr}) complete_add(){expr} をマッチのリストに追加します。'completefunc' オプションで指定された関数によってのみ使用されます。失敗した場合(空の文字列またはメモリ不足)は0、マッチが追加された場合は1、マッチが既にリストに存在する場合は2を返します。{expr} の説明については、complete-functions を参照してください。'omnifunc' が返すリスト内のアイテムと同じです。{expr} (any)0|1|2)0|1){what}]) complete_info()<Up>または<Down>キーを使用しているときにアイテムが選択されていない後の最後の補完の場合)inserted 挿入された文字列。[まだ実装されていません] preview_winid 情報浮動プレビューウィンドウID。preview_bufnr 情報浮動プレビューバッファID。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}内のサポートされていないアイテムは、黙って無視されます。" 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){msg} [, {choices} [, {default} [, {type}]]]) confirm(){msg} は、{choices} を選択肢としてダイアログに表示されます。{choices} が不足しているか空の場合、「&OK」が使用されます(そして翻訳されます)。{msg} は文字列です。改行を含めるには '\n' を使用します。一部のシステムでは、文字列が収まらない場合に折り返されます。{choices} は文字列で、個々の選択肢は '\n' で区切られます。例:confirm("Save changes?", "&Yes\n&No\n&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{msg} (文字列){choices} (string?){default} (integer?){type} (string?)integer){expr}) copy(){expr}のコピーを作成します。数値と文字列の場合、{expr}を直接使用することと変わりません。{expr}がリストの場合、浅いコピーが作成されます。つまり、元のリストを変更してもコピーは変更されず、その逆も同様です。しかし、アイテムは同一であるため、アイテムを変更すると両方のリストの内容が変更されます。辞書はリストと同様の方法でコピーされます。deepcopy()も参照してください。{expr} (any)any){expr}) cos(){expr}の余弦を浮動小数点数として返します。{expr}は浮動小数点数または数値でなければなりません。{expr}が浮動小数点数または数値でない場合は0.0を返します。例echo cos(100)echo cos(-4.01){expr} (number)number){expr}) cosh(){expr}の双曲線余弦を[1, inf]の範囲の浮動小数点数として返します。{expr}は浮動小数点数または数値でなければなりません。{expr}が浮動小数点数または数値でない場合は0.0を返します。例echo cosh(0.5)echo cosh(-0.5){expr} (number)number){comp}, {expr} [, {ic} [, {start}]]) count() E706 文字列、リスト、または辞書{comp}に値{expr}を持つアイテムが何回出現するかを返します。{ic}が指定され、それがTRUEの場合、大文字と小文字は区別されません。{comp}が文字列の場合、{expr}の重複しない出現回数が返されます。{expr}が空の文字列の場合、ゼロが返されます。{comp} (string|table|any[]){expr} (any){ic} (boolean?){start} (integer?)integer){index}]) ctxget(){index}番目のコンテキストを表す辞書を返します(context-dictを参照)。{index}が指定されていない場合、0(つまり、一番上)であるとみなされます。{index} (integer?)table)any){types}]) ctxpush(){types}が指定され、文字列のリストの場合、プッシュされたコンテキストに含めるコンテキストの種類を指定します。それ以外の場合は、すべてのコンテキストの種類が含まれます。{types} (string[]?)any){context} [, {index}]) ctxset(){index}の位置にあるコンテキストを、{context}で表されるコンテキストに設定します。{context}はコンテキストデータを持つ辞書( context-dict)です。{index}が指定されていない場合、0(つまり先頭)とみなされます。{context} (table){index} (integer?)any)any){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}が使用されます。{off}は文字の先頭からの画面列のオフセットを指定します。例:<Tab>内または最後の文字の後の位置。位置を設定できた場合は0を、そうでない場合は-1を返します。{list} (integer[])any){pid}) debugbreak(){pid}にSIGTRAPシグナルを送信します。他のプロセスの動作は未定義です。terminal-debugを参照してください。(MS-Windows以外では、プロセス{pid}にSIGINTシグナルを送信します){pid} (integer)any){expr} [, {noref}]) deepcopy() E698 {expr}のコピーを作成します。数値と文字列の場合、{expr}を直接使用することと変わりません。{expr}がリストListの場合、完全なコピーが作成されます。つまり、元のリストListを変更してもコピーは変更されず、その逆も同様です。アイテムがリストListの場合、そのアイテムのコピーが再帰的に作成されます。したがって、コピー内のアイテムを変更しても、元のリストListの内容は変更されません。{noref}が省略されているか0の場合、含まれているリストListまたは辞書Dictionaryは一度だけコピーされます。すべての参照はこの単一のコピーを指します。{noref}を1に設定すると、リストListまたは辞書Dictionaryの出現ごとに新しいコピーが作成されます。これは、循環参照によりdeepcopy()が失敗することを意味します。E724{noref}を1に設定してディープコピーを作成すると失敗します。copy()も参照してください。{expr} (any){noref} (boolean?)any){fname}がシンボリックリンクの場合にも機能します。シンボリックリンク自体が削除され、それが指すものは削除されません。{flags}が"d"の場合:名前{fname}のディレクトリを削除します。ディレクトリ{fname}が空でない場合は失敗します。{flags}が"rf"の場合:名前{fname}のディレクトリとその中のすべてを再帰的に削除します。注意してください! 注:MS-Windowsでは、使用中のディレクトリを削除することはできません。{fname} (string){flags} (string?)integer){buf}, {first} [, {last}]) deletebufline(){buf}から行{first}から{last}まで(を含む)を削除します。{last}が省略されている場合は、行{first}のみを削除します。成功した場合は0を、失敗した場合は1を返します。{buf}の使用方法については、上記のbufname()を参照してください。{first}と{last}はgetline()と同様に使用されます。 line()を使用する場合、これは現在のバッファを参照することに注意してください。"$"を使用して、バッファ{buf}の最後の行を参照します。{buf} (integer|string){first} (integer|string){last} (integer|string?)any){dict}, {pattern}, {callback}) dictwatcheradd(){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つの引数を受け取ります。oldとnewの両方が含まれている場合、キーが更新されました。newのみが含まれている場合、キーが追加されました。oldのみが含まれている場合、キーが削除されました。{dict} (table){pattern} (文字列){callback} (function)any){dict}, {pattern}, {callback}) dictwatcherdel(){dict} (any){pattern} (文字列){callback} (function)any):setf FALLBACKが使用された場合はFALSEを返します。別のファイルを編集すると、カウンターはリセットされます。そのため、これは現在のバッファに対してFileTypeイベントがトリガーされたかどうかを実際に確認します。これにより、別のバッファの編集を開始するautocommandは'filetype'を設定し、構文ファイルを読み込むことができます。any){lnum}) diff_filler(){lnum}の上にあるフィラー行の数を返します。これらは、別のdiff表示ウィンドウでこの時点に挿入された行です。これらのフィラー行は表示されますが、バッファには存在しません。{lnum}はgetline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどです。現在のウィンドウがdiffモードでない場合は0を返します。{lnum} (integer)any){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){chars}) digraph_get() E1214 {chars}のダイグラフを返します。これは正確に2文字の文字列である必要があります。{chars}が2文字だけではない場合、または{chars}のダイグラフが存在しない場合、エラーが発生し、空の文字列が返されます。" 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){listall}]) digraph_getlist(){listall}引数が指定されていてTRUEの場合、デフォルトのダイグラフを含むすべてのダイグラフを返します。それ以外の場合は、ユーザー定義のダイグラフのみを返します。" Get user-defined digraphs
echo digraph_getlist()
" Get all the digraphs, including default digraphs
echo digraph_getlist(1){listall} (boolean?)any){chars}, {digraph}) digraph_set(){chars}を追加します。{chars}は2文字の文字列である必要があります。{digraph}は1つのUTF-8エンコードされた文字を持つ文字列です。E1215 注意してください、合成文字は無視されません。この関数は:digraphsコマンドに似ていますが、空白で始まるダイグラフを追加するのに役立ちます。call digraph_set(' ', 'あ'){chars} (string){digraph} (string)any){digraphlist}) digraph_setlist(){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){expr} (any)any)echo index(keys(environ()), 'HOME', 0, 1) != -1any){string}, {chars}) escape(){string}に出現する{chars}内の文字をバックスラッシュでエスケープします。例:echo escape('c:\program files\vim', ' \')c:\\program\ files\\vim
{string} (string){chars} (string)any){string}) eval(){string}を評価し、結果を返します。string()の結果を元の値に戻すのに特に役立ちます。数値、浮動小数点数、文字列、Blob、およびそれらの複合体で機能します。既存の関数を参照するFuncrefにも機能します。{string} (string)any)any){expr}) executable(){expr}という名前の実行可能ファイルが存在するかどうかを確認します。{expr}は、引数を含まないプログラムの名前である必要があります。{expr} (string)0|1){command} [, {silent}]) execute(){command}を実行し、その出力を取得します。{command}が文字列の場合、{command}の出力を返します。{command}がリストの場合、連結された出力を返します。{command}の行継続は認識されません。例:echo execute('echon "foo"')echo execute(['echon "foo"', 'echon "bar"']){silent}引数は、次の値を取ることができます:" "(:silentを使用しない)"silent"(:silentを使用)"silent!"(:silent!を使用)デフォルトは"silent"です。"silent!"では、:redirとは異なり、エラーメッセージは削除されます。split()を使用します。execute('args')->split("\n")win_execute()を使用します。{command} (string|string[]){silent} (''|'silent'|'silent!'?)文字列){expr}) exepath(){expr}が実行可能ファイルであり、(部分的または完全な)パスとして与えられているか、$PATHで見つかった場合、そのフルパスを返します。それ以外の場合は空文字列を返します。{expr}が"./”で始まる場合、カレントディレクトリが使用されます。{expr} (string)文字列){expr}引数は、次のいずれかを含む文字列です。varname 内部変数(dict.key 内部変数を参照)。波括弧名、辞書のエントリ、リストのアイテムなど、list[i]にも機能します。インデックスの評価によって、無効な式に対するエラーメッセージが発生する可能性があることに注意してください。例:let l = [1, 2, 3]
echo exists("l[5]")echo exists("l[xx]")*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){expr} (string)0|1){expr}) exp(){expr}の指数関数を返します。{expr}は浮動小数点数または数値として評価される必要があります。{expr}が浮動小数点数または数値でない場合は0.0を返します。例:echo exp(2)echo exp(-1){expr} (number)any){string} [, {nosuf} [, {list}]]) expand(){string}内のワイルドカードと次の特別なキーワードを展開します。'wildignorecase'が適用されます。{string}が'%'、'#'、または'<'で始まっていない限り含まれません(下記参照)。{string}が'%'、'#'、または'<'で始まる場合、コマンドライン特殊変数とその関連する修飾子と同様に展開が行われます。簡単な概要を以下に示します。<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"echo expand(expand("<cfile>")){string}が'%'、'#'、または'<'で始まっていない場合、コマンドラインでファイル名が展開されるように展開されます。'suffixes'と'wildignore'が使用されます(オプションの{nosuf}引数が指定され、TRUEでない限り)。存在しないファイルの名前は含まれます。"**"アイテムを使用して、ディレクトリツリー内を検索できます。たとえば、現在のディレクトリとその下にあるすべての"README"ファイルを見つけるには、次のようになります。echo expand("**/README"){string} (string){nosuf} (boolean?){list} (nil|false?)文字列){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){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){expr1}, {expr2} [, {expr3}]) extendnew(){expr1}に要素を追加する代わりに、新しいリストまたは辞書が作成されて返されます。{expr1}は変更されません。{expr1}(table){expr2}(table){expr3}(table?)any){string} [, {mode}]) feedkeys(){string}の文字は、マッピングから来たか、ユーザーによって入力されたかのように、処理のためにキューに入れられます。{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のテストに役立ちます。{string} (string){mode}(string?)any){from}, {to}) filecopy(){from}で示されるファイル名を{to}にコピーします。結果は数値であり、ファイルが正常にコピーされた場合はTRUE、失敗した場合はFALSEになります。{to}という名前のファイルが既に存在する場合は失敗します。ディレクトリはまだ処理しません。{from}(string){to}(string)0|1){file}) filereadable(){file}という名前のファイルが存在し、読み取り可能な場合はTRUEになります。{file}が存在しない場合、またはディレクトリである場合、結果はFALSEになります。{file}は文字列として使用される任意の式です。ファイルの読み取り可能性を気にしない場合は、glob()を使用できます。{file}はそのまま使用されます。最初にワイルドカードを展開する必要があるかもしれません。echo filereadable('~/.vimrc')0
echo filereadable(expand('~/.vimrc'))1
{file}(string)0|1){file}) filewritable(){file}という名前のファイルが存在し、書き込み可能な場合は1になります。{file}が存在しない場合、または書き込み不可能な場合、結果は0になります。{file}がディレクトリであり、書き込み可能な場合、結果は2になります。{file}(string)0|1){expr1}, {expr2}) filter(){expr1}はリスト、文字列、BLOB、または辞書である必要があります。{expr1}の各要素に対して{expr2}を評価し、結果が0またはfalseの場合、リストまたは辞書から要素を削除します。BLOBの各バイトと文字列の各文字についても同様です。{expr2}が文字列の場合、{expr2}内ではv:valに現在の要素の値が入ります。辞書の場合、v:keyに現在の要素のキーが入ります。リストの場合、v:keyに現在の要素のインデックスが入ります。BLOBの場合、v:keyに現在のバイトのインデックスが入ります。文字列の場合、v:keyに現在の文字のインデックスが入ります。例call filter(mylist, 'v:val !~ "OLD"')call filter(mydict, 'v:key >= 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})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){name} [, {path} [, {count}]]) finddir(){path}でディレクトリ{name}を検索します。下方向と上方向の両方の再帰的なディレクトリ検索をサポートします。{path}の構文についてはファイルの検索を参照してください。{path}が省略されているか空の場合、'path'が使用されます。:findと非常によく似ています。{name} (文字列){path}(string?){count}(integer?)any){name} [, {path} [, {count}]]) findfile()echo findfile("tags.vim", ".;"){name} (文字列){path}(string?){count}(any?)any){list} [, {maxdepth}]) flatten(){list}を{maxdepth}レベルまでフラット化します。{maxdepth}がない場合、結果は入れ子が無いリストになります。まるで{maxdepth}が非常に大きな数であるかのように。{list}はインプレースで変更されます。変更したくない場合はflattennew()を使用してください。E900{maxdepth}は、入れ子のリスト内で変更が行われる深さを意味します。{maxdepth}が0の場合、{list}は変更されません。{maxdepth}は正の数である必要があります。echo flatten([1, [2, [3, 4]], 5])echo flatten([1, [2, [3, 4]], 5], 1){list}(any[]){maxdepth}(integer?)any[]|0){list}(any[]){maxdepth}(integer?)any[]|0){expr}) float2nr(){expr}を数値に変換します。{expr}は浮動小数点数または数値として評価する必要があります。{expr}が浮動小数点数または数値でない場合は0を返します。{expr}の値が数値の範囲外の場合、結果は0x7fffffffまたは-0x7fffffffに切り捨てられます(または64ビット数値サポートが有効になっている場合は、0x7fffffffffffffffまたは-0x7fffffffffffffff)。NaNは-0x80000000になります(または64ビット数値サポートが有効になっている場合は、-0x8000000000000000)。例echo float2nr(3.95)echo float2nr(-23.45)echo float2nr(1.0e100)echo float2nr(-1.0e150)echo float2nr(1.0e-100){expr} (number)any){expr}) floor(){expr}以下の最大の整数値を返します(切り捨て)。{expr}は浮動小数点数または数値として評価する必要があります。{expr}が浮動小数点数または数値でない場合は0.0を返します。例echo floor(1.856)echo floor(-5.456)echo floor(4.0){expr} (number)any){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)echo fmod(-12.33, 1.22){expr1} (number){expr2} (数値)any){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)文字列){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} (文字列)文字列){lnum}) foldclosed(){lnum}が閉じられた折りたたみ内にある場合、その折りたたみの最初の行の行番号が結果として返されます。行{lnum}が閉じられた折りたたみ内になければ、-1が返されます。{lnum}はgetline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。{lnum} (integer)integer){lnum}) foldclosedend(){lnum}が閉じられた折りたたみ内にある場合、その折りたたみの最後の行の行番号が結果として返されます。行{lnum}が閉じられた折りたたみ内になければ、-1が返されます。{lnum}はgetline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。{lnum} (integer)integer){lnum}) foldlevel(){lnum}の折りたたみレベルを表します。入れ子になった折りたたみの場合、最も深いレベルが返されます。行{lnum}に折りたたみがない場合は、ゼロが返されます。折りたたみが開いているか閉じているかは関係ありません。'foldexpr'から折りたたみ更新中(更新中)に使用する場合、折りたたみはまだ更新されておらず、折りたたみレベルが不明な行に対しては-1が返されます。特別なケースとして、前の行のレベルは通常利用可能です。{lnum}はgetline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。{lnum} (integer)integer)+-- 45 lines: abcdef
文字列){lnum}) foldtextresult(){lnum}にある閉じられた折りたたみに対して表示されるテキストを返します。適切なコンテキストで'foldtext'を評価します。{lnum}に閉じられた折りたたみがない場合は、空文字列が返されます。{lnum}はgetline()と同様に使用されます。したがって、"."は現在の行、"'m"はマークmなどを表します。折り畳まれたテキスト(例:HTML)をエクスポートする場合に便利です。{lnum} (integer)文字列){expr1}, {expr2}) foreach(){expr1}はList、String、Blob、またはDictionaryでなければなりません。{expr1}の各項目に対して、{expr2}を実行します。{expr1}は変更されません。ただし、:lockvar 1のように、その値は変更される可能性があります。E741 {expr1}を変更するには、map()とfilter()を参照してください。{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){name}は:で始まり、[範囲]を含めることができます。これらはスキップされ、返されません。コマンドが存在しない場合、または曖昧な場合(ユーザー定義コマンドの場合)、空文字列を返します。fullcommand('s')、fullcommand('sub')、fullcommand(':%substitute')はすべて"substitute"を返します。{name} (文字列)文字列){name} [, {arglist}] [, {dict}]) funcref(){name}が後で再定義される場合に重要になります。{name}は既存のユーザー関数でなければなりません。既にロードされている場合にのみ、自動ロード関数に対して機能します(関数名だけを使用する意図があるのに誤って自動ロードスクリプトをロードしてしまうのを避けるには、代わりにfunction()を使用してください)。{name}は組み込み関数にはできません。エラーの場合は0を返します。{name} (文字列){arglist} (任意?){dict} (any?)any){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){name}によって関数が検出されます。同じ関数を維持するにはfuncref()を使用してください。{arglist}または{dict}が存在する場合、partialが作成されます。つまり、引数リストと/または辞書はFuncrefに格納され、Funcrefが呼び出されるときに使用されます。func Callback(arg1, arg2, name)
"...
endfunc
let Partial = function('Callback', ['one', 'two'])
"...
call Partial('name')call Callback('one', 'two', 'name')func Callback(one, two, three)
"...
endfunc
let Partial = function('Callback', ['two'])
"...
eval 'one'->Partial('three')call Callback('one', 'two', 'three')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}は「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 examplelet Func = function('Callback', context)
let Func = context.Callbackfunction Callback(arg1, count) dict
"...
endfunction
let context = {"name": "example"}
let Func = function('Callback', ['one'], context)
"...
call Func(500)call context.Callback('one', 500){name} (文字列){arglist} (任意?){dict} (any?)any){atexit}引数が1の場合、以前に行われていない場合、Vimを終了するときにもガベージコレクションが行われます。これは、メモリリークをチェックする場合に役立ちます。{atexit} (ブール値?)any){list}, {idx} [, {default}]) get() get()-list リスト{list}からアイテム{idx}を取得します。このアイテムが存在しない場合は、{default}を返します。{default}が省略された場合は0を返します。{list}(any[]){idx} (integer){default} (any?)any){blob}, {idx} [, {default}]) get()-blob{blob}からバイト{idx}を取得します。このバイトが存在しない場合は、{default}を返します。{default}が省略された場合は-1を返します。{blob} (string){idx} (integer){default} (any?)any){dict}, {key} [, {default}]) get()-dict{dict}からキー{key}を持つアイテムを取得します。このアイテムが存在しない場合は、{default}を返します。{default}が省略された場合は0を返します。便利な例let val = get(g:, 'var_name', 'default'){dict} (table<string,any>){key} (string){default} (any?)any){func}, {what}) get()-func{func}からアイテム{what}を取得します。{what}の可能な値は次のとおりです。「name」 関数名 「func」 関数 「dict」 辞書 「args」 引数のリスト 「arity」 関数が受け付ける引数の数({arglist}を除く)に関する情報を含む辞書。次のフィールドがあります。required 位置引数の数 optional 必須引数に加えてオプション引数の数 varargs 関数が可変数の引数を受け付ける場合TRUE...{arglist}にFuncrefが期待するよりも多くの引数が含まれていても、エラーは発生しません。検証されません。{func} (function){what} (string)any){dict}には、次のキーを指定できます。buflisted リストされているバッファのみを含める。bufloaded ロードされているバッファのみを含める。bufmodified 変更されているバッファのみを含める。{buf}は、情報が返される特定のバッファを指定します。{buf}の使用方法については、上記bufname()を参照してください。バッファが見つかった場合、返されるリストには1つのアイテムが含まれます。それ以外の場合は、空のリストが返されます。echo line('.', {winid})for buf in getbufinfo()
echo buf.name
endfor
for buf in getbufinfo({'buflisted':1})
if buf.changed
" ....
endif
endforgetbufvar({bufnr}, '&option_name'){dict} (vim.fn.getbufinfo.dict?)vim.fn.getbufinfo.ret.item[]){buf}, {lnum} [, {end}]) getbufline(){buf}内の{lnum}から{end}(含む)までの行を含むListを返します。{end}が省略された場合、行{lnum}のみを含むListが返されます。行のみを取得するには、getbufoneline()を参照してください。{buf}の使用方法については、上記のbufname()を参照してください。{lnum}と{end}には、バッファの最終行を表す"$"を使用できます。それ以外の場合は、数値を使用する必要があります。{lnum}が1より小さいか、バッファ内の行数より大きい場合、空のListが返されます。let lines = getbufline(bufnr("myfile"), 1, "$"){buf} (integer|string){lnum} (integer){end_} (integer?)any){buf} (integer|string){lnum} (integer)文字列){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()any){buf}]) getchangelist(){buf}のchangelistを返します。{buf}の使用方法については、上記bufname()を参照してください。バッファ{buf}が存在しない場合、空のリストが返されます。{buf}が現在のバッファの場合、現在の位置はリスト内の位置を参照します。その他バッファの場合、リストの長さに設定されます。{buf} (整数|文字列?)table[]){expr}]) getchar(){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()を使用します。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>"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)integer){expr}) getcharpos(){expr}の位置を取得します。getpos()と同じですが、返されるリストの列番号はバイトインデックスではなく文字インデックスです。getpos()がv:maxcolに等しい非常に大きな列番号を返す場合、getcharpos()は最後の文字の文字インデックスを返します。getcharpos('.') returns [0, 5, 3, 0]
getpos('.') returns [0, 5, 7, 0]{expr} (string)整数配列)nnoremap <expr> ; getcharsearch().forward ? ';' : ','
nnoremap <expr> , getcharsearch().forward ? ',' : ';'table){式}]) getcharstr(){式}が省略された場合は、文字が入力可能になるまで待ちます。{式}が0またはfalseの場合は、文字が入力可能な場合のみ取得します。それ以外の場合は空文字列を返します。{式}が1またはtrueの場合は、文字が入力可能かどうかのみチェックし、消費しません。文字が入力不可能な場合は空文字列を返します。それ以外の場合は、数値の結果が文字列に変換される点を除いて、getchar()と同様に機能します。{expr} (0|1?)文字列)文字列)文字列)cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>文字列)integer)文字列)any)- :insertまたは:appendコマンド = i_CTRL-R_= コマンドラインを編集している場合のみ機能するため、c_CTRL-\_eまたはc_CTRL-R_=、または式マッピングを使用する必要があります。それ以外の場合は空文字列を返します。また、getcmdpos()、setcmdpos()、およびgetcmdline()も参照してください。':'|'>'|'/'|'?'|'@'|'-'|'=')':'|'>'|'/'|'?'|'@'|'-'|'='){パターン}, {種類} [, {フィルタリング済み}]) getcompletion(){種類}引数は、何の補完を行うかを指定します。サポートされている補完の種類は次のとおりです。{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'オプションは常に適用されます。{種類}が"cmdline"の場合、cmdline-completionの結果が返されます。たとえば、":call"コマンドの後に可能な値を補完するにはecho getcompletion('call ', 'cmdline'){種類}の値が無効な場合は、エラーが発生します。{パターン} (文字列){種類} (文字列){フィルタリング済み} (ブール値?)文字列配列){ウィンドウID}]) getcurpos(){ウィンドウID}引数は、ウィンドウを指定できます。ウィンドウ番号またはwindow-IDを指定できます。最後に知られているカーソルの位置が返されます。これは、現在のウィンドウでない場合、バッファの現在の値に対して無効な可能性があります。{ウィンドウID}が無効な場合は、ゼロのリストが返されます。let save_cursor = getcurpos()
MoveTheCursorAround
call setpos('.', save_cursor){winid} (integer?)any){ウィンドウID}]) getcursorcharpos()getcursorcharpos() " returns [0, 3, 2, 0, 3]
getcurpos() " returns [0, 3, 4, 0, 3]{winid} (integer?)any){ウィンドウ番号} [, {タブ番号}]]) getcwd(){ウィンドウ番号}または{タブ番号}を指定すると、そのスコープの作業ディレクトリが返され、'autochdir'は無視されます。タブとウィンドウはそれぞれの番号で識別され、0は現在のタブまたはウィンドウを意味します。タブ番号が欠落している場合は0を意味します。したがって、以下は同等です。getcwd(0)
getcwd(0, 0){ウィンドウ番号}が-1の場合、無視され、タブのみが解決されます。{ウィンドウ番号}はウィンドウ番号またはwindow-IDを指定できます。{ウィンドウ番号}と{タブ番号}の両方が-1の場合、グローバル作業ディレクトリが返されます。引数が無効な場合はエラーをスローします。E5000 E5001 E5002{winnr} (integer?){tabnr} (integer?)文字列){name} (文字列)文字列){name}]) getfontname(){name}が有効なフォント名かどうかをチェックします。無効な場合は空文字列を返し、有効な場合は実際のフォント名を返します。GUIが実際のフォント名を取得できない場合は{name}を返します。GUIが実行されている場合のみ機能するため、vimrcまたはgvimrcファイル内では使用できません。GUIEnter オートコマンドを使用して、GUI起動直後にこの関数を使用してください。{name} (string?)文字列){fname}) getfperm(){fname}の読み取り、書き込み、実行権限を表す文字列を返します。{fname}が存在しない場合、またはそのディレクトリを読み取れない場合は、空文字列を返します。結果は"rwxrwxrwx"の形式で、各"rwx"のグループは、ファイルの所有者、ファイルが属するグループ、その他のユーザーの権限を表します。ユーザーに特定の権限がない場合は、そのフラグが"-"に置き換えられます。例echo getfperm("/etc/passwd")
echo getfperm(expand("~/.config/nvim/init.vim")){fname} (string)文字列){fname}) getfsize(){fname}のサイズ(バイト単位)を表す数値を返します。{fname}がディレクトリの場合は0を返し、ファイル{fname}が見つからない場合は-1を返します。{fname}のサイズが数値の範囲を超える場合は-2を返します。{fname} (string)integer){fname}) getftime(){fname}の最終更新時刻を表す数値を返します。値は1970年1月1日からの秒数で測定され、strftime()に渡すことができます。localtime()およびstrftime()も参照してください。ファイル{fname}が見つからない場合は-1を返します。{fname} (string)integer){fname}) getftype(){fname}の種類を表す文字列を返します。{fname}が存在しない場合は空文字列を返します。ファイルの種類とその結果の対応表を以下に示します。通常のファイル:"file"、ディレクトリ:"dir"、シンボリックリンク:"link"、ブロックデバイス:"bdev"、キャラクタデバイス:"cdev"、ソケット:"socket"、FIFO:"fifo"、その他:"other" 例getftype("/home"){fname} (string)'file'|'dir'|'link'|'bdev'|'cdev'|'socket'|'fifo'|'other'){winnr}を指定すると、現在のタブページ内のそのウィンドウのみを使用します。{winnr}にはウィンドウIDも使用できます。{winnr}と{tabnr}を指定すると、指定されたタブページ内のウィンドウを使用します。{winnr}または{tabnr}が無効な場合は、空のリストを返します。{winnr} (integer?){tabnr} (integer?)vim.fn.getjumplist.ret){lnum}が1より小さい数、またはバッファの行数より大きい数の場合は、空文字列を返します。{end}を指定すると、{lnum}から{end}までの範囲の現在のバッファの各行({end}行を含む)を要素とするリストを返します。{end}は{lnum}と同じ方法で使用されます。存在しない行は黙って省略されます。{end}が{lnum}より前の場合は、空のリストを返します。例let start = line('.')
let end = search("^$") - 1
let lines = getline(start, end){lnum} (integer|string){end_} (nil|false?)文字列){nr} [, {what}]) getloclist(){nr}の場所リストにあるすべてのエントリを含むリストを返します。{nr}には、ウィンドウ番号またはウィンドウIDを使用できます。{nr}が0の場合は、現在のウィンドウが使用されます。{nr}の場合は、空のリストを返します。それ以外の場合は、getqflist()と同じです。{what}ディクショナリ引数を指定すると、{what}にリストされているアイテムをディクショナリとして返します。{what}でサポートされているアイテムについては、getqflist()を参照してください。echo getloclist(3, {'all': 0})
echo getloclist(5, {'filewinid': 0}){nr} (integer){what} (table?)any){buf}引数を指定すると、バッファ{buf}に定義されているローカルマークを返します。{buf}の使用方法については、bufname()を参照してください。{buf}が無効な場合は、空のリストを返します。{buf} (integer??)vim.fn.getmarklist.ret.item[]){win}]) 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)vim.fn.getmousepos.ret)integer){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"は'<と'>とは異なり、すぐに更新されます。別のファイルのマークを使用できることに注意してください。行番号は、別のバッファに適用されます。<Tab>内または最後の文字の後の位置などです。{expr}が無効な場合は、すべてがゼロのリストを返します。let save_a_mark = getpos("'a")
" ...
call setpos("'a", save_a_mark){expr} (string)整数配列){what}]) getqflist()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」エントリにエントリのリストが含まれます。echo getqflist({'all': 1})
echo getqflist({'nr': 2, 'title': 1})
echo getqflist({'lines' : ["F1:10:L10"]}){what} (table?)any){regname} [, 1 [, {list}]]]) getreg(){regname}の内容である文字列です。例let cliptext = getreg('*'){regname}が設定されていない場合、結果は空の文字列です。{regname}引数は文字列である必要があります。{list}が存在し、TRUEの場合、結果の型はリストに変更されます。各リスト項目は1つのテキスト行です。レジスタ内に存在する可能性のあるゼロバイトを気にする場合に使用します。第3引数がない場合、NLとゼロバイトの両方がNLとして表されます(NL-used-for-Nulを参照)。レジスタが設定されていない場合、空のリストが返されます。{regname}が指定されていない場合、v:registerが使用されます。{regname} (string?){list} (nil|false?)文字列){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){pos1}と{pos2}はどちらも、4つの数値を含むリストである必要があります。getpos()でリストの形式を参照してください。異なるバッファの位置を指定することはできますが、getregion-notesの制限に注意してください。{opts}は辞書であり、次の項目をサポートします。{pos1}と{pos2}の順序は関係ありません。常に左上の位置から右下の位置までのコンテンツを返します。{pos1}と{pos2}が同じバッファにない場合、空のリストが返されます。xnoremap <CR>
\ <Cmd>echom getregion(
\ getpos('v'), getpos('.'), #{ type: mode() })<CR>{pos1} (table){pos2} (table){opts} (table?)文字列配列){pos1}, {pos2} [, {opts}]) getregionpos(){pos1}と{pos2}によってバインドされたバッファテキストセグメントを記述する位置のリストを返します。セグメントは、各行の2つの位置のペアです。[[{start_pos}, {end_pos}], ...]<Tab>内または最後の文字の後の位置などです。終了位置の"off"番号がゼロ以外の場合、選択に含まれない文字の最初のセルのオフセットです。それ以外の場合は、すべてのセルが含まれます。{opts}は次のものもサポートします。{pos1} (table){pos2} (table){opts} (table?)integer[][][]){regname}]) getregtype(){regname}の型の文字列です。値は以下のいずれかになります。「v」は文字単位のテキスト、「V」は行単位のテキスト、「<CTRL-V>{width}」はブロック単位の視覚選択のテキスト、「」は空または不明なレジスタです。<CTRL-V>は値が0x16の1文字です。{regname}引数は文字列です。{regname}が指定されていない場合、v:registerが使用されます。{regname} (string?)文字列){opts}]) getscriptinfo():scriptnamesコマンドが表示するものと同じです。{opts}は、以下のオプション項目をサポートします: name スクリプト名のマッチパターン。指定した場合、"sid"が指定されていない場合は、名前にパターン"name"が一致するスクリプトの情報が返されます。 sid スクリプトID <SID>。指定した場合、ID "sid"のスクリプトの情報のみが返され、"name"は無視されます。{opts}の"sid"項目を使用して特定のスクリプトが指定されている場合のみ表示されます。 name Vimスクリプトファイル名。 sid スクリプトID <SID>。 variables スクリプトローカル変数の辞書。{opts}の"sid"項目を使用して特定のスクリプトが指定されている場合のみ表示されます。これはコピーであることに注意してください。この辞書を使用してスクリプトローカル変数の値を変更することはできません。 version Vimスクリプトバージョン、常に1echo getscriptinfo({'name': 'myscript'})
echo getscriptinfo({'sid': 15})[0].variables{opts} (table?)vim.fn.getscriptinfo.ret[]){tabnr}]) gettabinfo(){tabnr}が指定されていない場合、すべてのタブページに関する情報がリスト(List)として返されます。各リスト項目は辞書(Dictionary)です。それ以外の場合は、{tabnr}がタブページ番号を指定し、そのタブページに関する情報が返されます。タブページが存在しない場合、空のリストが返されます。{tabnr} (integer?)any){tabnr}, {varname} [, {def}]) gettabvar(){tabnr}のタブローカル変数{varname}の値を取得します。t:var タブは1から番号付けされます。{varname}引数は文字列です。{varname}が空の場合、すべてのタブローカル変数を含む辞書が返されます。「t:」を除いた名前を使用する必要があることに注意してください。タブまたは変数が存在しない場合、{def}または空の文字列が返され、エラーメッセージは表示されません。{tabnr} (整数){varname} (文字列){def} (任意?)any){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){winnr}]) {winnr}のタグスタックである辞書(Dict)です。{winnr}はウィンドウ番号またはウィンドウIDにすることができます。{winnr}が指定されていない場合、現在のウィンドウが使用されます。ウィンドウ{winnr}が存在しない場合、空の辞書が返されます。{winnr} (integer?)any){text}) gettext(){text}を翻訳します。これは主に、配布されているVimスクリプトで使用されます。メッセージの翻訳を生成する場合、{text}はxgettextによって抽出され、翻訳者は.poファイルに翻訳されたメッセージを追加し、gettext()が呼び出されたときにVimが翻訳を検索します。{text}には、二重引用符で囲まれた文字列が推奨されます。xgettextは、単一引用符で囲まれた文字列のエスケープを理解しないためです。{text} (string)any){winid}が指定されている場合、そのIDを持つウィンドウに関する情報が、1つの項目を含むリスト(List)として返されます。ウィンドウが存在しない場合、結果は空のリストです。{winid}が指定されていない場合、すべてのタブページ内のすべてのウィンドウに関する情報が返されます。{winid} (integer?)vim.fn.getwininfo.ret.item[]){timeout}]) getwinpos(){timeout}を使用して、ターミナルからの応答を待つ時間をミリ秒単位で指定できます。省略された場合、100ミリ秒が使用されます。while 1
let res = getwinpos(1)
if res[0] >= 0
break
endif
" Do some work here
endwhile{timeout} (整数?)any):winposで使用できます。integer):winposで使用できます。integer){winnr}, {varname} [, {def}]) getwinvar() 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>文字で区切られます。{alllinks}引数が存在し、TRUEの場合、すべてのシンボリックリンクが含まれます。let tagfiles = glob("`find . -name tags -print`")
let &tags = substitute(tagfiles, "\n", ",", "g"){expr} (string){nosuf} (boolean?){list} (boolean?){alllinks} (boolean?)any){string}) glob2regpat()if filename =~ glob2regpat('Make*.mak')
" ...
endifif filename =~ '^Make.*\.mak$'
" ...
endif{string}が空文字列の場合、結果は"^$"となり、空文字列と一致します。結果はシステムに依存することに注意してください。MS-Windowsでは、バックスラッシュは通常パスセパレータを意味します。{string} (string)any){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()と同様に使用されます。echo globpath(&rtp, "**/README.txt"){path} (string){expr} (string){nosuf} (boolean?){list} (boolean?){allinks} (boolean?)any){feature}) has(){feature}がサポートされている場合は1を、そうでない場合は0を返します。{feature}引数は"nvim-0.2.1"や"win32"などの機能名です。以下を参照してください。exists()も参照してください。print(vim.uv.os_uname().sysname)if has('feature')
let x = this_breaks_without_the_feature()
endifif has("nvim-0.2.1")
" ...
endifif has("win32")
" ...
endifif v:version > 602 || v:version == 602 && has("patch148")
" ...
endifif has("patch-7.4.237")
" ...
endif{feature} (string)0|1){dict}, {key}) has_key(){dict}にキー{key}のエントリがある場合はTRUE、そうでない場合はFALSEになります。{key}引数は文字列です。{dict} (table){key} (string)0|1){winnr} [, {tabnr}]]) haslocaldir(){winnr}が-1でタブページが:tcdを介してローカルパスを設定している場合は1、それ以外の場合は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){what} [, {mode} [, {abbr}]]) hasmapto(){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"が使用されます。if !hasmapto('\ABCdoit')
map <Leader>d \ABCdoit
endif{what} (any){mode}(string?){abbr} (boolean?)0|1){history}, {item}) histadd(){item}を履歴{history}に追加します。履歴は次のいずれかになります。hist-names{history}文字列は、完全な名前である必要はなく、1文字で十分です。{item}が既に履歴に存在する場合は、最新のエントリになるようにシフトされます。結果はNumberで、操作が成功した場合はTRUE、そうでない場合はFALSEが返されます。call histadd("input", strftime("%Y %b %d"))
let date=input("Enter date: "){history} (string){item} (any)0|1){history} [, {item}]) histdel(){history}をクリアする、つまりすべてエントリを削除します。hist-namesで、{history}の可能な値を参照してください。{item}がStringとして評価される場合、正規表現として使用されます。その式と一致するすべてのエントリが履歴から削除されます(存在する場合)。大文字と小文字は一致する必要があります("\c"を使用しない限り/\c)。{item}がNumberとして評価される場合、インデックスとして解釈されます。:history-indexingを参照してください。該当するエントリは、存在する場合は削除されます。call histdel("expr")call histdel("/", '^\*')call histdel("search", histnr("search"))
call histdel("search", -1)
call histdel("search", '^' .. histget("search", -1) .. '$')call histdel("search", -1)
let @/ = histget("search", -1){history} (string){item} (any?)0|1){history} [, {index}]) histget(){history}からNumber {index}のエントリです。hist-namesで、{history}の可能な値を参照し、:history-indexingで{index}を参照してください。そのようなエントリがない場合は、空のStringが返されます。{index}が省略された場合、履歴の最新項目が使用されます。execute '/' .. histget("search", -2){num}番目のエントリの再実行をサポートするExコマンド":H {num}"を定義します。command -nargs=1 H execute histget("cmd", 0+<args>){history} (string){index} (integer|string?)文字列){history}) histnr(){history}の現在のエントリのNumberです。hist-namesで、{history}の可能な値を参照してください。エラーが発生した場合は-1が返されます。let inp_index = histnr("expr"){history} (string)integer){name}) hlID(){name}という名前のハイライトグループのIDです。ハイライトグループが存在しない場合は、ゼロが返されます。これは、ハイライトグループに関する情報を取得するために使用できます。たとえば、「Comment」グループの背景色を取得するにはecho synIDattr(synIDtrans(hlID("Comment")), "bg"){name} (文字列)integer){name}) hlexists(){name}という名前のハイライトグループが存在する場合はTRUEです。これは、グループが何らかの方法で定義されている場合です。必ずしもハイライトが定義されている場合とは限りません。構文アイテムにも使用されている可能性があります。{name} (文字列)0|1)文字列){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){expr}) id()id(v1) ==# id(v2)は、type(v1) == type(v2) && v1 is v2が真である場合にのみ真を返します。v:_null_string、v:_null_list、v:_null_dict、v:_null_blobは、内部的にNULLポインタとして表現されているため、異なる型で同じid()を持ちます。id()は、コンテナへのポインタの16進数表現(つまり、0x994a40のように)を返しますが、返値の正確な形式に依存することはお勧めしません。id(no_longer_existing_container)が他のid()と等しくないとは限りません。新しいコンテナは、ガベージコレクションされたコンテナの識別子を再利用する場合があります。{expr} (any)any){lnum}) indent(){lnum}のインデントです。インデントはスペースでカウントされ、'tabstop'の値が関係します。{lnum}はgetline()と同じように使用されます。{lnum}が無効な場合は-1が返されます。{lnum} (integer|string)integer){object}, {expr} [, {start} [, {ic}]]) index(){object}内で{expr}を検索し、そのインデックスを返します。ラムダを使用してアイテムを選択する方法については、indexof()を参照してください。{object}がListの場合、アイテムの値が{expr}と等しい最小のインデックスを返します。自動変換はありません。そのため、文字列 "4" は数値 4 と異なり、数値 4 は浮動小数点数 4.0 と異なります。'ignorecase'の値はここで使用されません。{ic}引数によって示されるように、大文字と小文字が区別されます。{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){object}, {expr} [, {opts}]) indexof(){expr}がv:trueである{object}内のアイテムのインデックスを返します。{object}はListまたはBlobである必要があります。{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){prompt} (string){text} (string?){completion} (string?)any){opts}) 結果は文字列で、ユーザーがコマンドラインに入力したものです。{prompt}引数は、プロンプト文字列か、空文字列(プロンプトなし)のいずれかです。プロンプトに'\n'を使用すると、新しい行を開始できます。{prompt}と同じです。default "" 1番目の形式の{text}と同じです。completion nothing 1番目の形式の{completion}と同じです。cancelreturn "" ダイアログがキャンセルされたときに返される値です。highlight nothing ハイライトハンドラ:Funcref.if input("Coffee or beer? ") == "beer"
echo "Cheers!"
endif{text}引数が存在し、空でない場合、これはユーザーが入力したかのように、デフォルトの返信に使用されます。例let color = input("Color? ", "white"){completion}引数は、入力でサポートされる補完の種類を指定します。これがなければ、補完は実行されません。サポートされる補完の種類は、 "-complete="引数を使用してユーザー定義のコマンドに提供できるものと同じです。詳細については、:command-completionを参照してください。例let fname = input("File: ", "", "file")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'})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){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()any)any){prompt} [, {text}]) inputsecret(){prompt} (string){text} (string?)any){idx}が指定されている場合、インデックス{idx}を持つ項目の前に{item}を挿入します。{idx}が0の場合、最初の項目の前に挿入されます。これは、{idx}を省略した場合と同じです。負の{idx}も可能です。list-indexを参照してください。-1は最後の項目の直前に挿入します。let mylist = insert([2, 3, 5], 1)
call insert(mylist, 4, -1)
call insert(mylist, 6, len(mylist)){object} (any){item} (any){idx} (integer?)any)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){expr} (number)any){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){directory}) isdirectory(){directory}であるディレクトリが存在する場合にTRUEである数値です。{directory}が存在しない場合、またはディレクトリでない場合、結果はFALSEです。{directory}は、文字列として使用される任意の式です。{directory} (string)0|1)echo isinf(-1.0 / 0.0){expr} (number)1|0|-1){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){expr} (number)0|1){dict}) items(){dict}のすべてのキーと値のペアを含むリストを返します。各リスト項目は、2つの項目({dict}エントリのキーとこのエントリの値)を含むリストです。リストの順序は任意です。keys()とvalues()も参照してください。例for [key, value] in items(mydict)
echo key .. ': ' .. value
endfor{dict} (any)any){job} (integer)integer){job}, {width}, {height}) jobresize(){job}の擬似端末ウィンドウを{width}列と{height}行にサイズ変更します。ジョブが"pty":v:trueで開始されていない場合は失敗します。{job} (integer){width} (integer){height} (integer)any){cmd}を生成します。{cmd}がリストの場合、直接実行されます('shell'は使用されません)。{cmd}が文字列の場合、次のように'shell'で実行されます。call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])call jobstart('nvim -h', {'on_stdout':{j,d,e->append(line('.'),d)}}){cmd}[0]または'shell'が実行可能でない場合は-1を返します。返されたジョブIDは、ジョブのstdioストリームを表す有効なチャネルIDです。chansend()(または"rpc"が有効になっている場合はrpcnotify()とrpcrequest())を使用してstdinにデータを送信し、chanclose()を使用してジョブを停止せずにストリームを閉じます。{cmd}がリストの場合call jobstart(['ping', 'neovim.io'])
call jobstart(['System32\ping.exe', 'neovim.io'])
{cmd}はCommandLineToArgvW https://msdn.microsoft.com/bb776391で想定される引用符付き引数の文字列に折り畳まれます。envオプションで設定できます。{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辞書として渡されます。呼び出し側は、アプリケーション固有のデータを渡すために他のキーを設定できます。{cmd} (string|string[]){opts} (table?)any){id}) jobstop(){id}を停止します。タイムアウト後もプロセスが終了しない場合は、SIGKILLが送信されます。ジョブが終了すると、そのon_exitハンドラー(存在する場合)が呼び出されます。ジョブ制御を参照してください。{id} (integer)any)let running = jobwait([{job-id}], 0)[0] == -1{jobs} リストにないジョブのコールバックが呼び出される場合があります。コールバックによって:redraw が呼び出されない限り、画面は再描画されません。{jobs} と同じ長さの整数のリストを返します。各整数は対応するジョブの状態を表します。ジョブが終了した場合: 終了コード、タイムアウトを超えた場合: -1、ジョブが中断された場合 ( CTRL-C によって): -2、ジョブIDが無効な場合: -3{jobs} (integer[]){timeout} (整数?)any){list} [, {sep}]) join(){list} 内の項目を1つの文字列に結合します。{sep} が指定されている場合は、項目間に挿入されます。{sep} が省略された場合は、スペース1つが使用されます。{sep} は末尾には追加されません。必要に応じて末尾にも追加してください。let lines = join(mylist, "\n") .. "\n"{list}(any[]){sep} (string?)any){expr}) json_decode(){expr} をJSONオブジェクトから変換します。readfile() スタイルのリストと通常の文字列の両方を入力として受け入れます。任意のVim値を出力できます。次の場合、msgpack-special-dictを出力します。1. 辞書に重複したキーが含まれる場合。2. 文字列にNULバイトが含まれる場合。NULバイトを含む文字列が辞書のキーだった場合、辞書と文字列の2つの特別な辞書が出力されます。{expr} (any)any){expr}) json_encode(){expr} をJSON文字列に変換します。msgpack-special-dict を入力として受け入れます。Funcref、非文字列キーを持つマッピング(msgpack-special-dictとして作成できます)、自己参照コンテナを持つ値、UTF-8以外の文字を含む文字列、サロゲートペア用に予約されているコードポイントを含む擬似UTF-8文字列(このような文字列は無効なUTF-8文字列です)は変換しません。印刷できない文字は "\u1234" エスケープまたは "\t" のような特殊エスケープに変換され、それ以外はそのままダンプされます。Blobは個々のバイトの配列に変換されます。{expr} (any)any){dict} (table)any)<C-Home>{string} (string)any){expr}) len() E701 結果は数値で、引数の長さを表します。{expr} が文字列または数値の場合、strlen() と同様にバイト単位の長さが使用されます。{expr} がリストの場合、リスト内の項目数が返されます。{expr} がBlobの場合、バイト数が返されます。{expr} が辞書の場合、辞書のエントリ数が返されます。それ以外の場合はエラーが発生し、0が返されます。{expr} (any)any){libname}, {funcname}, {argument}) libcall() E364 E368 シングル引数{argument}を使用して、ランタイムライブラリ{libname}内の関数{funcname}を呼び出します。これは、Vimで使用するために特別に作成したライブラリ内の関数を呼び出すのに役立ちます。引数は1つしか使用できないため、標準ライブラリ関数の呼び出しは非常に制限されます。結果は、関数によって返される文字列です。関数がNULLを返す場合、Vimには空の文字列 "" として表示されます。関数が数値を返す場合は、libcallnr() を使用してください!{argument} が数値の場合、intとして関数に渡されます。{argument} が文字列の場合、ヌルターミネイトされた文字列として渡されます。{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()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){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{expr} (string|integer[]){winid} (integer?)integer){lnum}) line2byte(){lnum}のバッファの先頭からのバイト数を返します。現在のバッファの'fileformat'オプションに応じて、行末文字が含まれます。最初の行は1を返します。UTF-8エンコーディングが使用され、'fileencoding'は無視されます。これは、最後の行のすぐ下の行のバイト数も取得するために使用できます。echo line2byte(line("$") + 1){lnum}はgetline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。byte2line()、go、:gotoも参照してください。{lnum} (integer)integer){lnum}) lispindent(){lnum}のインデント量を取得します。インデントはスペースでカウントされ、'tabstop'の値が関連します。{lnum}はgetline()と同様に使用されます。{lnum}が無効な場合は-1が返されます。{lnum} (integer)any){list}) list2blob(){list}内のすべての数値を連結したBlobを返します。例echo list2blob([1, 2, 3, 4]) " returns 0z01020304
echo list2blob([]) " returns 0z{list}(any[])any){list} [, {utf8}]) list2str(){list}内の各数値を文字列に変換し、すべて連結します。例echo list2str([32]) " returns " "
echo list2str([65, 66, 67]) " returns "ABC"echo join(map(list, {nr, val -> nr2char(val)}), ''){utf8}オプションは効果がなく、後方互換性のためだけに存在します。UTF-8を使用すると、合成文字は期待通りに機能します。echo list2str([97, 769]) " returns "á"{list}(any[]){utf8} (boolean?)any)any){expr}) log(){expr}の自然対数(底e)を返します。{expr}は、(0, inf]の範囲内のFloatまたはNumberとして評価する必要があります。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo log(10)echo log(exp(5)){expr} (number)any){expr}) log10(){expr}の底10の対数をFloatとして返します。{expr}はFloatまたはNumberとして評価する必要があります。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo log10(1000)echo log10(0.01){expr} (number)any){expr} (string){expr1} (any[]?)any){expr1}, {expr2}) map(){expr1} は、List、String、Blob、またはDictionary でなければなりません。{expr1} が List または Dictionary の場合、{expr1} 内の各アイテムは、{expr2} の評価結果で置き換えられます。Blob の場合、各バイトが置き換えられます。String の場合、合成文字を含む各文字が置き換えられます。アイテムの型が変更される場合は、mapnew() を使用して新しい List または Dictionary を作成することを検討してください。{expr2} が String の場合、{expr2} 内の v:val には、現在のアイテムの値が格納されます。Dictionary の場合、v:key には現在のアイテムのキーが、List の場合、v:key には現在のアイテムのインデックスが格納されます。Blob の場合、v:key には現在のバイトのインデックスが、String の場合、v:key には現在の文字のインデックスが格納されます。例call map(mylist, '"> " .. v:val .. " <"'){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})call map(myDict, {key -> 'item: ' .. key})call map(myDict, {_, val -> 'item: ' .. val})let tlist = map(copy(mylist), ' v:val .. "\t"'){expr1}、または新しいBLOBまたは文字列を返します。{expr2}の評価中にエラーが発生した場合、{expr1}のそれ以降の要素は処理されません。{expr2}が関数参照の場合、関数の内部エラーは無視されます。"abort"フラグで定義されていない限り。{expr1} (string|table|any[]){expr2}(string|function)any){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} "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 から取得され、将来変更される可能性があります。exe 'nnoremap <Tab> ==' .. maparg('<Tab>', 'n'){name} (文字列){mode}(string?){abbr} (boolean?){dict} (false?)文字列){name} [, {mode} [, {abbr}]]) mapcheck(){mode} で {name} と一致するマッピングが存在するかどうかをチェックします。maparg() を参照して、{mode} と {name} の特殊な名前を確認してください。{abbr} が存在し、0 以外の場合、マッピングではなく省略形を使用します。一致は、{name} で始まるマッピングと、{name} の先頭と等しいマッピングで行われます。{name} と一致するマッピングを見つけますが、maparg() は {name} と完全に一致するマッピングのみを見つけることです。{name} で始まるマッピングがない場合、空の String が返されます。1 つ存在する場合は、そのマッピングの RHS が返されます。{name} で始まるマッピングが複数ある場合、それらのいずれかの RHS が返されます。RHS が空の場合は、"if mapcheck("_vv") == ""
map _vv :set guifont=7x13<CR>
endif{name} (文字列){mode}(string?){abbr} (boolean?)any){abbr}]) maplist(){abbr} が存在し、TRUE の場合、マッピングではなく省略形を使用します。echo maplist()->filter({_, m ->
\ match(get(m, 'rhs', ''), 'MultiMatch') >= 0
\ })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})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[]){expr1}, {expr2}) mapnew(){expr1} のアイテムを置き換える代わりに、新しい List または Dictionary が作成され、返されます。{expr1} は変更されません。アイテムは {expr2} で変更できますが、変更したくない場合は、最初に deepcopy() を使用してください。{expr1} (any){expr2} (any)any){mode}, {abbr}, {dict}) 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! などで複数のモードのマッピングを置き換える場合は、異なる可能性がある場合、すべてモードのマッピングを保存/復元する必要があることに注意してください。{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){expr}, {pat} [, {start} [, {count}]]) match(){expr} が List の場合、{pat} が一致する最初のアイテムのインデックスを返します。各アイテムは String として使用され、Lists と Dictionaries はエコーされたものとして使用されます。{expr} は String として使用されます。結果は、{pat} が一致する {expr} 内のインデックス(バイトオフセット)を示す数値です。echo match("testing", "ing") " results in 4
echo match([1, 'x'], '\a') " results in 1{pat} の使用方法については、string-match を参照してください。strpbrk()let sepidx = match(line, '[.,;: \t]')let idx = match(haystack, '\cneedle'){start} が指定されている場合、String のバイトインデックス {start} または List のアイテム {start} から検索が開始されます。ただし、結果は最初の文字/アイテムから数えたインデックスです。例echo match("testing", "ing", 2)echo match("testing", "ing", 4)echo match("testing", "t", 2){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){expr} (string|any[]){パターン} (文字列){start} (integer?){count}(integer?)any){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で強調表示されたマッチに対して表示されるマッチ固有の隠蔽文字を指定するために使用されます。辞書には次のメンバーを含めることができます。highlight MyGroup ctermbg=green guibg=green
let m = matchadd("MyGroup", "TODO")call matchdelete(m){group} (integer|string){pattern} (文字列){priority} (integer?){id} (integer?){dict} (string?)any){group}, {pos} [, {priority} [, {id} [, {dict}]]]) matchaddpos() matchadd() と同じですが、パターンではなく位置のリスト {pos} を必要とします。このコマンドは、正規表現を処理せず、画面の再描画にバッファの行境界を設定するため、matchadd() より高速です。これは、例えばマッチする括弧を強調表示するために、高速なマッチの追加と削除が必要な場合に使用することを目的としています。E5030 E5031 {pos} は位置のリストです。各位置は次のいずれかになります。highlight MyGroup ctermbg=green guibg=green
let m = matchaddpos("MyGroup", [[23, 24], 34])call matchdelete(m){group} (integer|string){pos} (any[]){priority} (integer?){id} (integer?){dict} (string?)any){nr}) matcharg(){nr}マッチ項目を選択します。2つの要素を含むリストを返します。使用される強調表示グループの名前、使用されるパターン。{nr}が1、2、または3でない場合、空のリストを返します。マッチ項目が設定されていない場合は['', '']を返します。これは:matchを保存して復元するのに役立ちます。:matchコマンドを使用した強調表示マッチは、3つのマッチに制限されています。matchadd()にはこの制限はありません。{nr} (integer)any){buf}, {pat}, {lnum}, {end}, [, {dict}]) matchbufline(){buf}の{lnum}から{end}までの行で{pat}が一致するマッチのリストを返します。{lnum}と{end}は、行番号、または{buf}の最後の行を参照する文字列"$"のいずれかになります。{dict}引数は、次の項目をサポートします。submatches サブマッチ情報を含める(/\()" 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){id} [, {win}]) matchdelete() E802 E803 matchadd()または:matchコマンドのいずれかで以前に定義されたID{id}のマッチを削除します。成功した場合は0、それ以外の場合は-1を返します。matchadd()の例を参照してください。すべてのマッチは、clearmatches()によって1つの操作で削除できます。{win}が指定されている場合、現在のウィンドウの代わりに、この番号またはウィンドウIDのウィンドウを使用します。{id} (integer){win} (integer?)any){expr}, {pat} [, {start} [, {count}]]) matchend()echo matchend("testing", "ing")let span = matchend(line, '[a-zA-Z]')
let span = matchend(line, '[^a-zA-Z]')echo matchend("testing", "ing", 5){expr} (any){パターン} (文字列){start} (integer?){count}(integer?)any){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")echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})echo getbufinfo()->matchfuzzy("spl",
\ {'text_cb' : {v -> v.name}})echo v:oldfiles->matchfuzzy("test")let l = readfile("buffer.c")->matchfuzzy("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){list}, {str} [, {dict}]) matchfuzzypos(){str}内の文字がマッチする文字位置のリスト、およびマッチングスコアのリストを返します。byteidx()を使用して、文字位置をバイト位置に変換できます。{str}が文字列内で複数回マッチする場合、最良のマッチの位置のみが返されます。echo matchfuzzypos(['testing'], 'tsg')echo matchfuzzypos(['clay', 'lacy'], 'la')echo [{'text': 'hello', 'id' : 10}]
\ ->matchfuzzypos('ll', {'key' : 'text'})[[{"id": 10, "text": "hello"}], [[2, 3]], [127]]となります。{list}(any[]){str} (string){dict} (string?)any){expr}, {pat} [, {start} [, {count}]]) matchlist()echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)'){expr} (any){パターン} (文字列){start} (integer?){count}(integer?)any){expr}, {pat} [, {start} [, {count}]]) matchstr()echo matchstr("testing", "ing"){start}は、指定されている場合、match()と同じ意味を持ちます。echo matchstr("testing", "ing", 2)echo matchstr("testing", "ing", 5){expr}がListの場合、マッチした項目が返されます。型は変更されず、必ずしもStringではありません。{expr} (any){パターン} (文字列){start} (integer?){count}(integer?)any){list}, {pat} [, {dict}]) matchstrlist(){list}内で{pat}がマッチするマッチのListを返します。{list}は文字列のListです。{pat}は{list}内の各文字列に対してマッチされます。{dict}引数は、次の項目をサポートします。submatches サブマッチ情報を含める(/\(){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'}]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){expr}, {pat} [, {start} [, {count}]]) matchstrpos()echo matchstrpos("testing", "ing"){start}は、指定されている場合、match()と同じ意味を持ちます。echo matchstrpos("testing", "ing", 2)echo matchstrpos("testing", "ing", 5){expr}がListの場合、マッチした項目、{pat}がマッチした最初の項目のインデックス、マッチの開始位置、および終了位置が返されます。echo matchstrpos([1, '__x'], '\a'){expr} (any){パターン} (文字列){start} (integer?){count}(integer?)any){expr}はListまたはDictionaryにすることができます。Dictionaryの場合、Dictionary内のすべての値の最大値を返します。{expr}がListでもDictionaryでもない場合、または{expr}内の項目のいずれかを数値として使用できない場合、エラーになります。空のListまたはDictionaryの場合はゼロになります。{expr} (any)any){path}は名前でメニューにマッチするか、{path}が空文字列の場合はすべてのメニューにマッチします。例echo menu_get('File','')
echo menu_get('')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){name} [, {mode}]) {mode}で指定されたメニュー{name}に関する情報を返します。メニュー名は、ショートカット文字('&')なしで指定する必要があります。{name}が""の場合、トップレベルのメニュー名が返されます。{mode}は次の文字列のいずれかです。"n" 通常 "v" Visual(Selectを含む) "o" オペレータ待機中 "i" Insert "c" コマンドライン "s" Select "x" Visual "t" ターミナルジョブ "" 通常、Visual、およびオペレータ待機中 "!" Insertおよびコマンドライン {mode}が省略された場合、""のモードが使用されます。{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){expr}はListまたはDictionaryにすることができます。Dictionaryの場合、Dictionary内のすべての値の最小値を返します。{expr}がListでもDictionaryでもない場合、または{expr}内の項目のいずれかを数値として使用できない場合、エラーになります。空のListまたはDictionaryの場合はゼロになります。{expr} (any)any){flags}が存在する場合、文字列である必要があります。空文字列は影響しません。{flags}には、次の文字フラグを含めることができます。"p" 必要に応じて中間ディレクトリが作成されます。"D" {name}は現在の関数の最後に削除されますが、再帰的には削除されません。:defer"R" {name}は現在の関数の最後に再帰的に削除されます。:defer{name}に複数の部分があり"p"が使用されている場合、一部のディレクトリは既に存在する可能性があることに注意してください。作成された最初のものとその内容のみが削除されるようにスケジュールされます。例えば、call mkdir('subdir/tmp/autoload', 'pR')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()はサイレントに終了します。{name} (文字列){flags} (string?){prot} (string?)any){expr}]) mode(){expr}が指定され、それが0以外の数値または空でない文字列に評価された場合(non-zero-arg)、完全なモードが返されます。そうでない場合は、最初の文字のみが返されます。state()も参照してください。CTRL-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 ターミナルモード:キーはジョブに送られる{expr} (任意?)any){list} [, {type}]) msgpackdump(){type}に"B"が含まれている場合、Blobが代わりに返されます。例call writefile(msgpackdump([{}]), 'fname.mpack', 'b')call writefile(msgpackdump([{}], 'B'), 'fname.mpack')fname.mpackファイルに書き込まれます(アイテムが0個の辞書は、messagepackでは0x80バイトで表されます)。{list} (任意){type} (任意?)any){data}) msgpackparse()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ファイルが読み込まれます。_TYPEと_VAL)を含む辞書です。 2. _TYPEキーはv:msgpack_types変数にある型の1つです。 3. _VALの値は次の形式です(キー列にはv:msgpack_typesのキーの名前が含まれています)。_VAL[0] * ((_VAL[1] << 62)
& (_VAL[2] << 31)
& _VAL[3]){data} (任意)any){lnum}) nextnonblank(){lnum}以上の最初の空でない行の行番号を返します。例if getline(nextnonblank(1)) =~ "Java" | endif{lnum} (integer)any){expr} [, {utf8}]) nr2char(){expr}である単一の文字を含む文字列を返します。例echo nr2char(64) " returns '@'
echo nr2char(32) " returns ' 'echo nr2char(300) " returns I with bow character{utf8}オプションは効果がなく、後方互換性のためにのみ存在します。ファイル内のNUL文字はnr2char(10)で指定されていることに注意してください。これは、NULが改行文字で表されるためです。nr2char(0)は実際のNULであり、文字列を終了するため、空の文字列になります。{expr} (整数){utf8} (boolean?)any){...}) nvim_...() E5555 eval-api nvim api 関数を呼び出します。引数の型チェックは、他のほとんどの組み込み関数よりも厳格になります。たとえば、Integerが期待されている場合、Numberを渡す必要があります。Stringは自動変換されません。bufnr()によって返されるバッファ番号は、nvim_buf_...関数の最初の引数として使用できます。オブジェクト(バッファ、ウィンドウ、またはタブページ)を期待するすべての関数は、現在の(フォーカスされた)オブジェクトを示す数値0も受け入れることができます。{...} (任意)any){expr}, {expr}) or()and()およびxor()も参照してください。例let bits = or(bits, 0x80){expr} (number){expr1} (number)any){path} [, {len}]) pathshorten(){path}内のディレクトリ名を短縮し、結果を返します。末尾のファイル名はそのまま保持されます。パス内の他のコンポーネントは、長さが{len}文字に短縮されます。{len}が省略されているか1より小さい場合、1が使用されます(1文字)。先頭の「~」と「.」の文字は保持されます。例echo pathshorten('~/.config/nvim/autoload/file1.vim')echo pathshorten('~/.config/nvim/autoload/file2.vim', 2){path} (string){len} (整数?)any){expr}) perleval(){expr}を評価し、Vimデータ構造に変換された結果を返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされます)。リストはVim List型として表されます。辞書はVim Dictionary型として表されます。文字列以外のキーはエラーになります。{expr}はそれへの参照を返す必要があります。例echo perleval('[1 .. 4]'){expr} (any)any){x}, {y}) pow(){y}に対する{x}のべき乗を返します。{x}と{y}はFloatまたはNumberに評価する必要があります。{x}または{y}がFloatまたはNumberでない場合、0.0を返します。例echo pow(3, 3)echo pow(2, 16)echo pow(32, 0.20){x} (数値){y} (数値)any){lnum}) prevnonblank(){lnum}以上の最初の空でない行の行番号を返します。例let ind = indent(prevnonblank(v:lnum - 1)){lnum} (integer)any){fmt}, {expr1} ...) printf(){fmt}を含むStringを返します。例echo printf("%4d: E%d %.30s", lnum, errno, msg)Compute()->printf("result: %d")call() を使用して、項目をリストとして渡すことができます。{n$}という形式で、n は 1 以上です。echo printf("%d: %.*s", nr, width, line){n$}位置引数指定子を使用して指定する必要があります。printf-$を参照してください。echo printf("%.2f", 12.115)#, c-format
msgid "%s returning %s"
msgstr "waarde %2$s komt terug van %1$s"echo printf(
"In The Netherlands, vim's creator's name is: %1$s %2$s",
"Bram", "Moolenaar")echo printf(
"In Belgium, vim's creator's name is: %2$s %1$s",
"Bram", "Moolenaar")echo printf("%1$*2$.*3$d", 1, 2, 3)echo printf("%2$*3$.*1$d", 1, 2, 3)echo printf("%3$*1$.*2$d", 1, 2, 3)echo printf("%1$*2$.*3$g", 1.4142, 2, 3)echo printf("%1$4.*2$f", 1.4142135, 6)echo printf("%1$*2$.4f", 1.4142135, 6)echo printf("%1$*2$.*3$f", 1.4142135, 6, 2)echo printf("%1$d at width %2$ld is: %01$*2$d", 1, 2)echo printf("%1$d at width %2$d is: %01$*2$.*3$d", 1, 2)echo printf("%01$*2$.*3$d %4$d", 1, 2)echo printf("%1$s %2$s %1$d", "One", "Two")echo printf("%1$d at width %2$d is: %01$*2$.3$d", 1, 2){fmt}(文字列){expr1}(any?)文字列){buf}) prompt_getprompt(){buf}の有効なプロンプトテキストを返します。{buf}は、バッファ名または番号です。prompt-bufferを参照してください。{buf} (integer|string)any){buf}, {expr}) prompt_setcallback(){buf}のプロンプトコールバックを{expr}に設定します。{expr}が空文字列の場合、コールバックは削除されます。これは、{buf}の'buftype'が"prompt"に設定されている場合にのみ効果があります。 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){buf}, {text}) prompt_setprompt(){buf}のプロンプトを{text}に設定します。おそらく、{text}はスペースで終わらせる必要があります。結果は、{buf}の'buftype'が"prompt"に設定されている場合にのみ表示されます。例call prompt_setprompt(bufnr(''), 'command: '){buf} (integer|string){text} (string)any)any)any){expr}) py3eval(){expr}を評価し、その結果をVimのデータ構造に変換して返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされ、Unicode文字列はさらにUTF-8に変換されます)。リストはVimのList型として表されます。辞書は、キーが文字列に変換されたVimのDictionary型として表されます。{expr} (any)any){expr}) pyeval() E858 E859 Python式{expr}を評価し、その結果をVimのデータ構造に変換して返します。数値と文字列はそのまま返されます(ただし、文字列はコピーされます)。リストはVimのList型として表されます。辞書はVimのDictionary型として表されます。文字列以外のキーはエラーになります。{expr} (any)any){expr}) pyxeval(){expr}を評価し、その結果をVimのデータ構造に変換して返します。python_xと'pyxversion'を参照して、Python 2または3を使用します。参考:pyeval()、py3eval(){expr} (any)any){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){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){fname} [, {offset} [, {size}]]) readblob(){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){fname} (string){offset} (整数?){size} (整数?)any){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){fname} [, {type} [, {max}]]) readfile(){fname}を読み込み、ファイルの各行をアイテムとするListを返します。行はNL文字で区切られます。CRで区切られたMacintoshファイルは(どこかにNLが表示されない限り)1つの長い行になります。すべてのNUL文字はNL文字に置き換えられます。{type}に"b"が含まれている場合は、バイナリモードが使用されます。{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){object}, {func} [, {initial}]) reduce() E998 {func}は、String、List、または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)any)any)any){start}) reltime({start}, {end}) 時間値を表すアイテムを返します。このアイテムは、システムに依存するアイテムを含むリストです。このアイテムは、reltimestr() に渡して文字列に変換したり、reltimefloat() に渡して浮動小数点数に変換したりできます。{start}と{end}の間の経過時間を返します。{start}と{end}引数は、reltime()によって返された値でなければなりません。エラーの場合は0を返します。{start} (any?){end_} (any?)any){time}) reltimefloat(){time}の時間の値を表す浮動小数点数を返します。時間の単位は秒です。例: let start = reltime() call MyFunction() let seconds = reltimefloat(reltime(start)) reltimestr()のオーバーヘッドに関する注記を参照してください。プロファイリングも参照してください。エラーが発生した場合は空文字列が返されます。{time} (any)any){time}) reltimestr(){time}の時間の値を表す文字列を返します。これは、秒数、ドット、マイクロ秒数です。例let start = reltime()
call MyFunction()
echo reltimestr(reltime(start))echo split(reltimestr(reltime(start)))[0]{time} (any)any){list}, {idx}) 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){list}(any[]){idx} (integer){end_} (integer?)any){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){dict}, {key}) {dict}からキー{key}のエントリを削除し、それを返します。例echo "removed " .. remove(dict, "one"){dict}に{key}がない場合はエラーです。エラーの場合は0を返します。{dict} (any){key} (string)any){from}, {to}) rename(){from}のファイルを名前{to}に名前変更します。ファイルシステム間でファイルを移動するためにも機能します。結果は数値で、ファイルの名前変更が成功した場合は0、名前変更が失敗した場合は0以外になります。注: {to}が存在する場合は、警告なしで上書きされます。この関数はsandboxでは使用できません。{from}(string){to}(string)any){count}が0または負の場合、結果は空になります。{expr}がListまたはBlobの場合、結果は{expr}が{count}回連結されたものになります。例let longlist = repeat(['a', 'b'], 3){expr} (any){count} (integer)any){filename}) resolve() E655 MS-Windowsでは、{filename}がショートカット(.lnkファイル)の場合、ショートカットが指すパスを簡略化された形式で返します。Unixでは、{filename}のすべてのパスコンポーネント内のシンボリックリンクを繰り返し解決し、簡略化された結果を返します。リンクサイクルに対処するために、シンボリックリンクの解決は100回の反復後に停止します。その他のシステムでは、簡略化された{filename}を返します。簡略化ステップはsimplify()と同じように行われます。resolve()は、現在のディレクトリを指定する先頭のパスコンポーネント(結果が依然として相対パス名である場合)と、末尾のパスセパレータを保持します。{filename} (string)any){object}) reverse(){object}内のアイテムの順序を逆にします。{object}はList、Blob、またはStringにすることができます。ListとBlobの場合、アイテムはインプレースで反転され、{object}が返されます。Stringの場合、新しいStringが返されます。{object}がList、Blob、Stringでない場合は0を返します。ListまたはBlobを未変更のままにする場合は、最初にコピーを作成してください。let revlist = reverse(copy(mylist)){object} (any)any){expr}) round(){expr}を最も近い整数値に丸めて、Floatとして返します。{expr}が2つの整数値のちょうど中間にある場合、より大きい方(0から遠い方)を使用します。{expr}はFloatまたはNumberでなければなりません。FloatまたはNumberでない場合は0.0を返します。例echo round(0.456)echo round(4.5)echo round(-4.5){expr} (number)any){channel}, {event} [, {args}...]) rpcnotify(){event}を{channel}に送信し、すぐに返ります。{channel}が0の場合、イベントはすべてのチャネルにブロードキャストされます。例au VimLeave call rpcnotify(0, "leaving"){channel} (integer){event} (string){args} (any?)any){channel}, {method} [, {args}...]) rpcrequest(){method}を呼び出すためのリクエストを{channel}に送信し、応答を受信するまでブロックします。例let result = rpcrequest(rpc_chan, "func", 1, 2, 3){channel} (integer){method} (string){args} (any?)any){expr}) rubyeval(){expr}を評価し、Vimデータ構造に変換された結果を返します。数値、浮動小数点数、文字列はそのまま返されます(ただし、文字列はコピーされます)。配列はVimのList型として表されます。ハッシュはVimのDictionary型として表されます。その他のオブジェクトは、それらの「Object#to_s」メソッドの結果である文字列として表されます。{expr} (any)any){row}, {col}) screenattr(){row} (integer){col} (integer)any){row}, {col}) screenchar(){row} (integer){col} (integer)any){row}, {col}) screenchars(){row} (integer){col} (integer)any)nnoremap <expr> GG ":echom " .. screencol() .. "\n"
nnoremap <silent> GG :echom screencol()<CR>
noremap GG <Cmd>echom screencol()<CR>any){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)any){row}, {col}) screenstring(){row} (integer){col} (integer)any){pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) search() 正規表現パターン{pattern}を検索します。検索はカーソル位置から開始されます(cursor()を使用して設定できます)。{flags}は文字列であり、以下の文字フラグを含めることができます:'b'(前方ではなく後方検索)、'c'(カーソル位置での一致を受け入れる)、'e'(一致の末尾に移動)、'n'(カーソルを移動しない)、'p'(一致するサブパターンの数を返す(下記参照))、's'(カーソルの以前の位置に'マークを設定)、'w'(ファイルの末尾を折り返す)、'W'(ファイルの末尾を折り返さない)、'z'(0ではなくカーソル列から検索を開始)。'w'と'W'のどちらも指定されていない場合、'wrapscan'オプションが適用されます。{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-matchlet 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
endwhileecho search('\<if\|\(else\)\|\(endif\)', 'ncpe'){pattern} (文字列){flags} (string?){stopline}(整数?){timeout} (整数?){skip}(文字列|関数?)any){options}]) searchcount(){options}については、後述します。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()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() : ""}'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" 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}は辞書である必要があります。以下を含めることができます。let @/ = patternmaxcount + 1になります(デフォルト:0) pos リスト [lnum, col, off] 結果を再計算する場合の値。これにより、「current」の結果値が変わります。cursor()、getpos()を参照してください(デフォルト:カーソルの位置){options} (table?)any){thisblock}引数を使用すると、カーソル位置より前に終わる{}ブロック内の一致は無視されます。別のスコープでのみ有効な変数宣言の検索を回避します。if searchdecl('myvar') == 0
echo getline('.')
endif{name} (文字列){global}(ブール値?){thisblock}(ブール値?)any){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にすることができます。その他の種類では、関数が失敗します。{start}、{middle}、または {end} が一致するものが最初に検出されます。例if 1
if 2
endif 2
endif 1{end} が複数文字の場合、カーソルが一致する end の中に存在する際に対応する start を見つけるために、パターンの最後に "\zs" を追加すると便利です。echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
\ 'getline(".") =~ "^\\s*\""')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){start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) searchpair() と同じですが、一致の行番号と列位置を含む List を返します。List の最初の要素は行番号、2 番目の要素は一致の列位置のバイトインデックスです。一致が見つからない場合は [0, 0] を返します。let [lnum,col] = searchpairpos('{', '', '}', 'n'){start} (string){middle} (string){end_} (string){flags} (string?){skip}(文字列|関数?){stopline}(整数?){timeout} (整数?)[integer, integer]){pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) search() と同じですが、一致の行番号と列位置を含む List を返します。List の最初の要素は行番号、2 番目の要素は一致の列位置のバイトインデックスです。一致が見つからない場合は [0, 0] を返します。例let [lnum, col] = searchpos('mypattern', 'n')let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np'){pattern} (文字列){flags} (string?){stopline}(整数?){timeout} (整数?){skip}(文字列|関数?)any)echo serverlist()any){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
ls ${XDG_RUNTIME_DIR:-${TMPDIR}nvim.${USER}}/*/nvim.*.0if has('win32')
echo serverstart('\\.\pipe\nvim-pipe-1234')
else
echo serverstart('nvim.sock')
endifecho serverstart('::1:12345'){address} (string?)any){address}) serverstop(){address} のパイプまたはソケットを閉じます。{address} が有効な場合は TRUE、そうでない場合は FALSE を返します。v:servername が停止している場合は、serverlist() で次の利用可能なアドレスに設定されます。{address} (string)any){buf}, {lnum}, {text}) setbufline(){buf} の {lnum} 行目を {text} に設定します。これは、指定されたバッファに対する setline() と同様に機能します。{text} は、1 行を設定するための文字列、または複数行を設定するための文字列のリストにすることができます。リストが最後の行を超えている場合は、それらの行が追加されます。リストが空の場合、何も変更されず、0 が返されます。{buf}の使用方法については、上記のbufname()を参照してください。{lnum} は setline() と同様に使用されます。"$" を使用して、バッファ {buf} の最後の行を参照します。{lnum} が最後の行のすぐ下にある場合、{text} は最後の行の下に追加されます。成功した場合は 0、失敗した場合は 1 が返されます。{buf} が有効なバッファでないか、{lnum} が無効な場合、エラーメッセージが表示されます。{buf} (integer|string){lnum} (integer){text} (string|string[])any){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){list}) setcellwidths()call setcellwidths([
\ [0x111, 0x111, 1],
\ [0x2194, 0x2199, 2],
\ ]){list} 引数は、それぞれ3つの数値を含むリストのリストです:[{low}, {high}, {width}]。E1109 E1110 {low} と {high} は同じにすることができ、その場合は1文字を指します。それ以外の場合は、{low} から {high} までの文字範囲(両端を含む)です。E1111 E1114 値が 0x80 以上の文字のみを使用できます。{list} を渡します。call setcellwidths([]){list} 引数を調整する必要があります。{list}(any[])any)call setcharpos('.', [0, 8, 4, 0])call setpos('.', [0, 8, 4, 0]){expr} (string){list} (integer[])any)let prevsearch = getcharsearch()
" Perform a command which clobbers user's search
call setcharsearch(prevsearch){dict} (string)any){str} [, {pos}]) setcmdline(){str} に設定し、カーソル位置を {pos} に設定します。{pos} が省略された場合、カーソルはテキストの後に配置されます。成功した場合は 0、コマンドラインを編集していない場合は 1 を返します。{str} (string){pos} (integer?)any){pos}) setcmdpos(){pos} に設定します。最初の位置は 1 です。getcmdpos() を使用して現在の位置を取得します。コマンドラインの編集中にのみ機能するため、c_CTRL-\_e、c_CTRL-R_=、または c_CTRL-R_CTRL-R を '=' と共に使用する必要があります。c_CTRL-\_e と c_CTRL-R_CTRL-R を '=' と共に使用した場合、コマンドラインが式に設定された後に位置が設定されます。c_CTRL-R_= の場合、式を評価した後、結果のテキストを挿入する前に設定されます。数値が大きすぎる場合、カーソルは行末に配置されます。1 より小さい数値は、結果が定義されていません。成功した場合は 0、コマンドラインを編集していない場合は 1 を返します。{pos} (integer)any){lnum}, {col} [, {off}]) setcursorcharpos(){list}) cursor() と同じですが、行内のバイトインデックスではなく、指定された列番号を文字インデックスとして使用します。call setcursorcharpos(4, 3)call cursor(4, 3){list} (integer[])any){name} (文字列){val} (string)any){fname}, {mode}) setfperm() chmod {fname} のファイルパーミッションを {mode} に設定します。{mode} は、9文字の文字列でなければなりません。"rwxrwxrwx" の形式で、各 "rwx" のグループは、ファイルの所有者、ファイルが属するグループ、その他のユーザーのパーミッションを順番に表します。'-' 文字はパーミッションが無効であることを意味し、他の文字は有効であることを意味します。マルチバイト文字はサポートされていません。{fname} (string){mode} (string)any){lnum}, {text}) setline(){lnum} 行目を {text} に設定します。行を挿入するには append() を使用します。別のバッファの行を設定するには setbufline() を使用します。{lnum} は getline() と同様に使用されます。{lnum} が最終行のすぐ下にある場合、{text} は最終行の下に追加されます。{text} は任意の型、または任意の型のリストにすることができ、各項目は文字列に変換されます。{text} が空のリストの場合、何も変更されず、FALSEが返されます。{lnum}が無効であることが最も可能性が高い)、TRUEが返されます。call setline(5, strftime("%c"))for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
call setline(n, l)
endfor{lnum} (integer){text} (any)any){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){list} [, {win}]) setmatches(){win}が指定されている場合、現在のウィンドウの代わりにこの番号またはウィンドウIDを持つウィンドウが使用されます。{list} (任意){win} (integer?)any){list}は、4つまたは5つの数値を含むリストでなければなりません:[bufnum, lnum, col, off] [bufnum, lnum, col, off, curswant]<Tab>内または最後の文字の後。{expr}が無効な場合は、エラーメッセージが表示されます。{expr} (string){list} (integer[])any){what}辞書引数が指定されている場合、{what}にリストされている項目のみが設定されます。最初の{list}引数は無視されます。サポートされている{what}内の項目については、以下を参照してください。setqflist-what{what}が存在しない場合、{list}内の項目が使用されます。各項目は辞書である必要があります。{list}内の辞書以外の項目は無視されます。各辞書項目には、次のエントリを含めることができます。{list}を提供した場合、クイックフィックスリストはクリアされます。リストはgetqflist()が返すものとまったく同じではないことに注意してください。{list}の項目に置き換えられます。リストをクリアするためにも使用できます。call setqflist([], 'r'){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"の代わりに使用してください。call setqflist([], 'r', {'title': 'My search'})
call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]}):cc 1のようなコマンドを使用します。{list} (vim.quickfix.entry[]){action} (string?){what} (vim.fn.setqflist.what?)any){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以外の値を返します。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) 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){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){nr}, {dict} [, {action}]) {dict}を使用して、ウィンドウ{nr}のタグスタックを変更します。{nr}には、ウィンドウ番号またはウィンドウIDを使用できます。{dict}でサポートされている項目のリストについては、gettagstack()を参照してください。「curidx」はタグスタックを変更する前に有効になります。E962{action}引数によって異なります。{action}が存在しないか、「r」に設定されている場合、タグスタックは置き換えられます。{action}が「a」に設定されている場合、{dict}からの新しいエントリがタグスタックにプッシュ(追加)されます。{action}が「t」に設定されている場合、タグスタックの現在エントリまたは{dict}の「curidx」からすべてのエントリが削除され、新しいエントリがスタックにプッシュされます。call settagstack(3, {'items' : []})let stack = gettagstack(1003)
" do something else
call settagstack(1003, stack)
unlet stack{nr} (integer){dict} (any){action} (string?)any){nr}, {varname}, {val}) setwinvar() 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){string}を二重引用符で囲み、{string}内のすべての二重引用符を二重にします。それ以外の場合は、{string}を単一引用符で囲み、すべての"'"を"'\''"に置き換えます。exe '!dir ' .. shellescape(expand('<cfile>'), 1)call system("chmod +w -- " .. shellescape(expand("%"))){string} (string){special} (boolean?)any){col}]) shiftwidth()if exists('*shiftwidth')
func s:sw()
return shiftwidth()
endfunc
else
func s:sw()
return &sw
endfunc
endif{col} (integer?)integer){name} [, {dict}]) sign_define(){list}) {name}という名前の新しいサインを定義するか、既存のサインの属性を変更します。これは:sign-defineコマンドに似ています。{name}に一意のテキストをプレフィックスとして付けます。サインの配置時のような{group}はありません。{name}は文字列または数値にすることができます。オプションの{dict}引数は、サインの属性を指定します。次の値がサポートされています:icon サインのビットマップファイルへのフルパス。linehl サインが配置されている行全体に使用されるハイライトグループ。priority サインのデフォルトの優先順位値。numhl サインが配置されている行番号に使用されるハイライトグループ。text アイコンがない場合、またはGUIが使用されていない場合に表示されるテキスト。texthl テキスト項目に使用されるハイライトグループ。culhl カーソルがサインと同じ行にあり、'cursorline'が有効になっている場合のテキスト項目に使用されるハイライトグループ。{name}という名前のサインが既に存在する場合は、サインの属性が更新されます。{list}を使用して、サインのリストを定義できます。各リスト項目は、{dict}の上記の項目と、サイン名の「name」項目を含む辞書です。{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)[]){name}が指定されていない場合、定義済みのすべてのサインのリストが返されます。それ以外の場合は、指定されたサインの属性が返されます。{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[]){buf} [, {dict}]]) sign_getplaced(){buf}が指定されている場合、そのバッファに配置されたサインのリストのみが返されます。{buf}の使用については、bufname()を参照してください。オプションの{dict}には、次のエントリを含めることができます:group このグループのサインのみを選択します。id この識別子のサインを選択します。lnum この行に配置されたサインを選択します。{lnum}の使用については、line()を参照してください。{group}が"*"の場合、グローバルグループを含むすべてのグループのサインが返されます。{group}が指定されていないか空文字列の場合、グローバルグループのサインのみが返されます。引数が指定されていない場合、すべてバッファに配置されたグローバルグループのサインが返されます。sign-groupを参照してください。{bufnr}に配置されたサインのリスト。各リスト項目は、以下にリストされているエントリを含む辞書です。" 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[]){id}, {group}, {buf}) sign_jump(){buf}を含むバッファを開くか、{buf}を含むウィンドウにジャンプし、{group}のサイン{id}にカーソルを配置します。これは:sign-jumpコマンドに似ています。" Jump to sign 10 in the current buffer
call sign_jump(10, '', ''){id} (integer){group} (string){buf} (integer|string)integer){id}, {group}, {name}, {buf} [, {dict}]) sign_place(){name}として定義されたサインをファイルまたはバッファ{buf}の行{lnum}に配置し、サインに{id}と{group}を割り当てます。これは:sign-placeコマンドに似ています。{id}がゼロの場合、新しい識別子が割り当てられます。それ以外の場合は、指定された数値が使用されます。{group}は符号グループ名です。グローバル符号グループを使用するには、空文字列を使用します。{id}に対して{group}は名前空間として機能するため、2つのグループで同じIDを使用できます。詳細は符号識別子と符号グループを参照してください。{dict}引数は、以下のエントリをサポートします: lnum ファイルまたはバッファ{buf}内の符号を配置する行番号。許容値については、line()を参照してください。priority 符号の優先度。詳細は符号の優先度を参照してください。{dict}が指定されていない場合、グループ{group}内の配置済みの符号{id}が、定義済みの符号{name}を使用するように変更されます。" 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){list}) sign_placelist(){list}引数は、配置する符号のリストを指定します。各リスト項目は、以下の符号属性を持つ辞書です: buffer バッファ名または番号。許容値については、bufname()を参照してください。group 符号グループ。{id}に対して{group}は名前空間として機能するため、2つのグループで同じIDを使用できます。指定されていないか空文字列に設定されている場合は、グローバルグループが使用されます。詳細は符号グループを参照してください。id 符号識別子。指定されていないかゼロの場合は、新しい一意の識別子が割り当てられます。それ以外の場合は、指定された数値が使用されます。詳細は符号識別子を参照してください。lnum 符号を配置するバッファ内の行番号。許容値については、line()を参照してください。name 配置する符号の名前。詳細はsign_define()を参照してください。priority 符号の優先度。複数の符号が1行に配置されている場合、優先度が最も高い符号が使用されます。指定されていない場合、符号の定義で別に指定されていない限り、デフォルト値の10が使用されます。詳細は符号の優先度を参照してください。{id}が既存の符号を参照している場合、既存の符号は指定された{name}および/または{priority}を使用するように変更されます。" 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[])整数配列){name}]) sign_undefine(){list}) 以前定義された符号{name}を削除します。これは:sign-undefineコマンドと似ています。{name}が指定されていない場合、定義済みのすべての符号が削除されます。{list}を使用して、符号のリストを定義解除できます。各リスト項目は符号の名前です。{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[]?)整数配列){group} [, {dict}]) sign_unplace(){group}は符号グループ名です。グローバル符号グループを使用するには、空文字列を使用します。{group}が"*"に設定されている場合、グローバルグループを含むすべてのグループが使用されます。{group}内の符号は、{dict}のエントリに基づいて選択されます。{dict}内の以下のオプションのエントリがサポートされています: buffer バッファ名または番号。bufname()を参照してください。id 符号識別子 {dict}が指定されていない場合、{group}内のすべての符号が削除されます。 " 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(){list}引数は、削除する符号のリストを指定します。各リスト項目は、以下の符号属性を持つ辞書です: buffer バッファ名または番号。許容値については、bufname()を参照してください。指定されていない場合、指定された符号はすべてのバッファから削除されます。group 符号グループ名。指定されていないか空文字列に設定されている場合は、グローバル符号グループが使用されます。" *"に設定されている場合、グローバルグループを含むすべてのグループが使用されます。id 符号識別子。指定されていない場合、指定されたグループ内のすべての符号が削除されます。" 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)[]){filename}) simplify(){filename}の最初のパスコンポーネントがカレントディレクトリを指定する場合、これは結果に対しても有効です。末尾のパスセパレータも削除されません。Unixでは"//path"は変更されませんが、 "///path"は"/path"に簡素化されます(これはPosix標準に従います)。例simplify("./dir/.././/file/") == "./file/"{filename} (string)any){expr}) sin(){expr}の正弦を返します。{expr}は浮動小数点数または数値でなければなりません。{expr}が浮動小数点数または数値でない場合は0.0を返します。例echo sin(100)echo sin(-4.01){expr} (number)any){expr}) sinh(){expr}の双曲線正弦を返します。{expr}は浮動小数点数または数値でなければなりません。{expr}が浮動小数点数または数値でない場合は0.0を返します。例echo sinh(0.5)echo sinh(-0.9){expr} (number)any){expr}, {start} [, {end}]) slice(){end}が省略されている場合、スライスは最後の項目まで続きます。{end}が-1の場合、最後の項目は省略されます。{start}または{end}が無効な場合は、空の値を返します。{expr} (any){start} (整数){end_} (integer?)any){mode}, {address} [, {opts}]) sockconnect(){mode}が"pipe"の場合、{address}はローカルドメインソケット(unix)または名前付きパイプ(Windows)のパスでなければなりません。{mode}が"tcp"の場合、{address}は"host:port"の形式でなければならず、hostはIPアドレスまたはホスト名、portはポート番号でなければなりません。{opts}は、これらのキーを持つオプションの辞書です:on_data : ソケットからデータが読み取られたときに呼び出されるコールバック data_buffered : チャネルバッファリングモードでソケットデータを読み取る。rpc : 設定されている場合、msgpack-rpcを使用してソケットを介して通信します。返します{mode} (string){address} (string){opts} (table?)any)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')" ö is sorted after z with Swedish locale.
language collate sv_SE.UTF8
echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l'){how}が指定されていて'n'の場合、すべての項目は数値でソートされます(実装の詳細: これはstrtod()関数を使用して数値を解析します。文字列、リスト、辞書、関数参照は0とみなされます)。{how}が指定されていて'N'の場合、すべての項目は数値でソートされます。これは'n'に似ていますが、数字を含む文字列は、それらが表す数値として使用されます。{how}が指定されていて'f'の場合、すべての項目は数値でソートされます。すべての値は数値または浮動小数点数でなければなりません。{how}がFuncrefまたは関数名の場合、この関数はアイテムの比較に使用されます。この関数は2つのアイテムを引数として呼び出され、アイテムが等しい場合は0、最初のアイテムが2番目のアイテムより後にソートされる場合は1以上、最初のアイテムが2番目のアイテムより前にソートされる場合は-1以下の値を返す必要があります。{dict}は "dict" 属性を持つ関数用です。これはローカル変数 "self" を設定するために使用されます。Dictionary-functionfunc 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
endfunceval mylist->sort({i1, i2 -> i1 - i2}){list} (任意){how} (string|function?){dict} (any?)any){word}) soundfold(){word}のサウンドフォールドされた等価物を返します。現在のウィンドウでサウンドフォールディングをサポートする最初の言語を'spelllang'で使用します。'spell'を設定する必要があります。サウンドフォールディングが不可能な場合、{word}は変更されずに返されます。これはスペルミス候補を作成するために使用できます。この方法は非常に遅くなる可能性があることに注意してください。{word} (string)any){sentence}]) spellbadword(){sentence}で最初にスペルミスされた単語です。スペルミスがない場合は、結果は空文字列です。echo spellbadword("the quik brown fox")
{sentence} (string?)any){word} [, {max} [, {capital}]]) spellsuggest(){word}を置き換えるスペルミス候補を含むListを返します。{max}が指定されている場合、最大この数の候補が返されます。それ以外の場合は、最大25個の候補が返されます。{capital}引数が指定され、それが0以外の場合、先頭に大文字が付いた候補のみが返されます。'spellcapcheck'との一致後に使用します。{word}は、スペルミス単語の後に他のテキストが付いている可能性があります。これにより、分割された2つの単語を結合できます。候補には、後続のテキストも含まれるため、行を置き換えることができます。{word}は正しい単語である可能性もあります。その場合、類似の単語が返されます。{word}自体は候補に含まれませんが、大文字で表示される場合があります。{word} (string){max} (整数?){capital} (boolean?)any){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') | endforecho split('abc:def:ghi', ':\zs')['abc:', 'def:', 'ghi']
let items = split(line, ':', 1){string} (string){pattern} (string?){keepempty} (boolean?)any){expr}) sqrt(){expr}の非負の平方根をFloatとして返します。{expr}はFloatまたはNumberとして評価される必要があります。{expr}が負の場合、結果はNaN(数値ではない)になります。{expr}がFloatまたはNumberでない場合は0.0を返します。例echo sqrt(100)echo sqrt(-4.01){expr} (number)any){expr}]) srand(){expr}が指定されていない場合、シード値は可能であれば/dev/urandomから読み取ることで初期化されます。不可能な場合はtime(NULL)(エポック時間)を使用します。これは秒単位の精度しかありません。{expr}が指定されている場合、それはNumberである必要があります。これはシード値を初期化するために使用されます。これはテストや予測可能なシーケンスを意図する場合に役立ちます。let seed = srand()
let seed = srand(userinput)
echo rand(seed){expr} (数値?)any){what}]) state()state()を使用して作業を今すぐ実行できるかどうかを確認し、可能であればキューから削除して実行します。キューが空になったらautocommandを削除します。mode()も参照してください。{what}が指定されている場合、この文字列内の文字のみが追加されます。例えば、これは画面がスクロールしたかどうかを確認しますif state('s') == ''
" screen has not scrolled{what} (string?)any){opts}) stdioopen(){opts}は、次のキーを持つ辞書です。on_stdin:stdinへの書き込み時に呼び出されるコールバック。on_print:Nvimがメッセージを出力する必要があるときに呼び出されるコールバック。メッセージ(その型は文字列)を引数として持ちます。stdin_buffered:channel-bufferedモードでstdinを読み取ります。rpc:設定されている場合、msgpack-rpcを使用してstdioで通信します。戻り値{opts} (table)any){what} タイプ 説明echo stdpath("config"){what} ('cache'|'config'|'config_dirs'|'data'|'data_dirs'|'log'|'run'|'state')string|string[]){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')){string} (string){quoted} (boolean?)any){string} [, {utf8}]) str2list(){string}の各文字を表す数値を含むリストを返します。例echo str2list(" ") " returns [32]
echo str2list("ABC") " returns [65, 66, 67]{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){string}) strcharlen(){string}の文字数を表す数値です。合成文字は無視されます。strchars()は、合成文字を個別にカウントして文字数をカウントできます。{string}が空の場合、またはエラーが発生した場合は0を返します。{string} (string)any){src}, {start} [, {len} [, {skipcc}]]) strcharpart(){skipcc} が省略されているか0の場合、合成文字は個別にカウントされます。slice() と同様に、{skipcc} を1に設定すると、合成文字は先行するベース文字の一部として扱われます。文字が存在しない文字インデックスが使用された場合、それは省略され、1文字としてカウントされます。例:echo strcharpart('abc', -1, 2){src} (文字列){start} (整数){len} (整数?){skipcc} (boolean?)any){文字列} [, {skipcc}]) strchars(){文字列}の文字数を示す数値です。{skipcc} が省略されているか0の場合、合成文字は個別にカウントされます。{skipcc} を1に設定すると、合成文字は無視されます。strcharlen() は常にこれを行います。{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){文字列} [, {col}]) strdisplaywidth(){文字列}が{col}(最初の列は0)から始まる場合に画面上で占める表示セルの数です。{col} が省略された場合は0が使用されます。それ以外の場合は、開始する画面列です。これはタブ文字に関係します。現在のウィンドウのオプション設定が使用されます。'tabstop' や 'display'など、異なる方法で表示されるものすべてに関係します。{文字列}に東アジア文字幅クラスが曖昧な文字が含まれている場合、この関数の戻り値は'ambiwidth'に依存します。エラーの場合は0を返します。strlen()、strwidth()、strchars()も参照してください。{string} (string){col} (integer?)integer){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){haystack}, {needle} [, {start}]) stridx(){needle}の最初の出現位置を示す、{haystack}内のバイトインデックスを示す数値です。{start}が指定されている場合、検索はインデックス{start}から開始されます。これは2番目のマッチを見つけるために使用できます。let colon1 = stridx(line, ":")
let colon2 = stridx(line, ":", colon1 + 1){needle}が{haystack}に存在しない場合は-1が返されます。strridx()も参照してください。例echo stridx("An Example", "Example") " 3
echo stridx("Starting point", "Start") " 0
echo stridx("Starting point", "start") " -1{haystack} (文字列){needle} (文字列){start} (integer?)integer){expr}) string(){expr}を文字列に変換して返します。{expr}が数値、浮動小数点数、文字列、Blob、またはそれらの組み合わせである場合、結果はeval()で解析できます。{expr} 型 結果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(){文字列}のバイト単位の長さを示す数値です。引数が数値の場合は、最初に文字列に変換されます。他の型の場合はエラーが発生し、0が返されます。マルチバイト文字の数をカウントする場合はstrchars()を使用してください。len()、strdisplaywidth()、strwidth()も参照してください。{string} (string)integer){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?)文字列){format}, {timestring}) strptime(){timestring}の日付と時刻を表すUnixタイムスタンプを示す数値です。{timestring}は、{format}で指定された形式に一致することが想定されています。{format}はシステムによって異なるため、これは移植可能ではありません!フォーマットについては、C関数のstrptime()のマニュアルページを参照してください。特に「%c」は避けてください。$TZの値も重要です。{timestring}を{format}で解析できない場合は、0が返されます。{timestring}の形式が不明な場合は、0以外の結果が得られるまでさまざまな{format}値を試すことができます。echo strptime("%Y %b %d %X", "1997 Apr 27 11:49:23")echo strftime("%c", strptime("%y%m%d %T", "970427 11:53:55"))echo strftime("%c", strptime("%Y%m%d%H%M%S", "19970427115355") + 3600){format} (文字列){timestring} (文字列)integer){haystack}, {needle} [, {start}]) strridx(){needle}の最後の出現位置を示す、{haystack}内のバイトインデックスを示す数値です。{start}が指定されている場合、このインデックスを超える一致は無視されます。これは、以前の一致の前に一致を見つけるために使用できます。let lastcomma = strridx(line, ",")
let comma2 = strridx(line, ",", lastcomma - 1){needle}が{haystack}に存在しない場合は-1が返されます。{needle}が空の場合、{haystack}の長さが返されます。stridx()も参照してください。例echo strridx("an angry armadillo", "an") 3{haystack} (文字列){needle} (文字列){start} (integer?)integer){string}) strtrans(){string}です。ウィンドウに表示されるように。echo strtrans(@a){string} (string)文字列){string} [, {countcc}]) strutf16len(){string}(UTF-16に変換した後)のUTF-16コードユニット数を示す数値です。{countcc}がTRUEの場合、合成文字は個別にカウントされます。{countcc}が省略されているかFALSEの場合、合成文字は無視されます。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){string}) strwidth(){string}が占める表示セルの数を示す数値です。タブ文字は1セルとしてカウントされます。代わりにstrdisplaywidth()を使用してください。{string}に東アジア文字幅クラスが曖昧な文字が含まれている場合、この関数の戻り値は'ambiwidth'に依存します。エラーの場合は0を返します。strlen()、strdisplaywidth()、strchars()も参照してください。{string} (string)integer){nr} [, {list}]) submatch() E935 :substituteコマンドまたはsubstitute()関数の式の場合のみ。一致したテキストの{nr}番目の部分一致を返します。{nr}が0の場合、一致したテキスト全体が返されます。文字列内のNLは、複数行の一致の改行またはテキスト内のNUL文字を表す場合があります。sub-replace-expressionも参照してください。{list} が存在し、かつゼロでない場合、submatch() は文字列のリストを返します。これは、2 つの引数を持つ getline() と同様です。テキスト内の NL 文字は、テキスト内の NUL 文字を表します。 :substitute の場合にのみ複数の項目を返します。 substitute() の内部では、実際の改行文字がないため、このリストには常に 1 つまたは 0 個の項目が含まれます。s/\d\+/\=submatch(0) + 1/
echo substitute(text, '\d\+', '\=submatch(0) + 1', ''){nr} (integer){list} (nil?)文字列){string}, {pat}, {sub}, {flags}) substitute(){string} のコピーです。その中で、{pat} の最初のマッチが {sub} で置き換えられます。{flags} が "g" の場合、{string} 内の {pat} のすべてのマッチが置き換えられます。それ以外の場合は、{flags} は "" でなければなりません。{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, ",\\=[^,]*$", "", "")echo substitute("testing", ".*", "\\U\\0", ""){sub} が "\=" で始まる場合、残りの部分は式として解釈されます。sub-replace-expression を参照してください。例echo substitute(s, '%\(\x\x\)',
\ '\=nr2char("0x" .. submatch(1))', 'g'){sub} が Funcref の場合、その関数は、オプションで 1 つの引数を使用して呼び出されます。例echo substitute(s, '%\(\x\x\)', SubNr, 'g')echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g'){string} (string){パターン} (文字列){sub} (string){flags} (string)文字列) 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){buf}) swapname(){buf} のスワップファイルのパスです。{buf} の使用方法については、上記の bufname() を参照してください。バッファ {buf} が現在バッファの場合、結果は :swapname と等しくなります(スワップファイルがない場合を除く)。バッファ {buf} にスワップファイルがない場合は、空の文字列を返します。{buf} (integer|string)文字列){lnum}, {col}, {trans}) synID(){lnum} と {col} の位置にある構文 ID です。構文 ID は、synIDattr() と synIDtrans() と共に使用して、テキストに関する構文情報を取得できます。{col} は、左端の列を 1 とし、{lnum} は最初の行を 1 とします。'synmaxcol' が適用され、長い行では 0 が返されます。位置が最後の文字の後にある場合(挿入モードでカーソルが存在できる位置)、synID() は 0 を返します。{lnum} は getline() と同様に使用されます。{trans} が TRUE の場合、透過的な項目は、それらが表示する項目に減らされます。これは、有効な色を知りたい場合に役立ちます。{trans} が FALSE の場合、透過的な項目が返されます。これは、どの構文項目が有効であるかを知りたい場合(たとえば、括弧内)に役立ちます。 **警告:**この関数は非常に遅くなる可能性があります。最速の速度は、ファイルを順方向に処理することで得られます。echo synIDattr(synID(line("."), col("."), 1), "name"){lnum} (integer){col} (integer){trans} (0|1)integer){synID}, {what} [, {mode}]) synIDattr(){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?)文字列){synID}) synIDtrans(){synID} の変換された構文 ID です。これは、文字のハイライトに使用されている構文グループ ID です。":highlight link" で指定されたハイライトリンクが追跡されます。{synID} (integer)integer){lnum}, {col}) synconcealed(){lnum} と {col} の位置にある文字が非表示領域の一部でない場合は 0、一部の場合は 1 です。{lnum} は getline() と同様に使用されます。2. リストの 2 番目の項目は文字列です。最初の項目が 1 の場合、2 番目の項目には、'conceallevel' と 'listchars' の現在の設定に応じて、非表示テキストの代わりに表示されるテキストが含まれます。3. リストの 3 番目の項目は、行で一致した特定の構文領域を表す数値です。文字が非表示でない場合、値は 0 です。これにより、同じ置換文字を持つ 2 つの連続した領域がある場合、新しい非表示領域の開始を検出できます。例として、テキストが "123456" であり、"23" と "45" の両方が非表示になって文字 "X" で置き換えられる場合、{lnum} (integer){col} (integer)[integer, string, integer]){lnum}, {col}) synstack(){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)整数配列){cmd} の出力を string として取得します(systemlist() は List を返します)。そして、v:shell_error をエラーコードに設定します。{cmd} は jobstart() と同様に処理されます。{cmd} が List の場合、直接実行されます('shell' は使用されません)。{cmd} が String の場合、次のように 'shell' で実行されます。call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])<CR><NL> は <NL> で置き換えられます。echo system(['ls', expand('%:h')]){input} が文字列の場合、パイプに書き込まれ、コマンドへの stdin として渡されます。文字列はそのまま書き込まれ、行区切り文字は変更されません。{input} が List の場合、{binary} を "b" に設定した writefile() と同様にパイプに書き込まれます(つまり、各リスト項目間に改行文字があり、リスト項目内の改行文字は NUL に変換されます)。{input} が指定されていて有効なバッファ ID の場合、バッファの内容は行ごとにファイルに書き込まれ、各行は NL で終了します(テキストに NL がある場合は NUL も追加されます)。E5677echo system("cat - &", "foo")$ echo foo | bash -c 'cat - &'
echo system('ls '..shellescape(expand('%:h')))
echo system('ls '..expand('%:h:S')){cmd} (string|string[]){input} (string|string[]|integer?)文字列){cmd} [, {input} [, {keepempty}]]) systemlist()system() と同じですが、改行で区切られた出力の部分(NLで区切られた部分)をリストで返し、NULはNLに変換されます。出力は、{binary}引数を "b" に設定した場合のreadfile() の出力と同じですが、{keepempty} がゼロ以外でない限り、最後の改行は保持されません。MS-Windows では、末尾にCR文字が付く場合があります。system() と split() を使用します。echo split(system('echo hello'), '\n', 1){cmd} (string|string[]){input} (string|string[]|integer?){keepempty} (integer?)文字列配列){arg}]) tabpagebuflist(){arg} は使用するタブページの番号を指定します。省略された場合は、現在のタブページが使用されます。{arg} が無効な場合は、0 が返されます。すべてのタブにあるすべてバッファのリストを取得するには、これを使用します。let buflist = []
for i in range(tabpagenr('$'))
call extend(buflist, tabpagebuflist(i + 1))
endfor{arg} (integer?)any){arg}は、以下の値をサポートします: $ 最後のタブページの数(タブページの数)。 # 最後にアクセスしたタブページの数(g<Tab> が移動する場所)。前のタブページがない場合は、0 が返されます。この番号は、:tab コマンドで使用できます。{arg} ('$'|'#'?)integer){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)文字列配列){filename} が渡された場合、:tselect と同じ方法で結果の優先順位が付けられます。tag-priority を参照してください。{filename} はファイルのフルパスである必要があります。{expr} でアンカー '^' と '$' を使用する必要があります。これにより、関数の動作も高速になります。tag-regexp で、タグ検索正規表現パターンの詳細を参照してください。{expr} (any){filename} (string?)any){expr}) tan(){expr}のタンジェントを、[-inf, inf] の範囲の Float として返します。{expr} は Float または Number に評価される必要があります。{expr} が Float でも Number でもない場合は 0.0 を返します。例echo tan(10)echo tan(-4.01){expr} (number)number){expr}) tanh(){expr} の双曲線タンジェントを返します。{expr} は Float または Number に評価される必要があります。{expr} が Float でも Number でもない場合は 0.0 を返します。例echo tanh(0.5)echo tanh(-1){expr} (number)number)let tmpfile = tempname()
exe "redir > " .. tmpfile文字列){cmd} [, {opts}]) termopen(){cmd}を生成します。パラメータと動作はjobstart() と同じですが、"pty"、"width"、"height"、"TERM" は無視されます。"height" と "width" は現在のウィンドウから取得されます。termopen() は jobstart() に "pty" 引数を意味し、そのため jobstart() に記載されている意味合いがあります。jobstart() と同じ値を返します。{cmd} (string|string[]){opts} (table?)any)garbagecollect() と似ていますが、すぐに実行されます。これは、内部に構造体が存在しないようにするために、直接呼び出す必要があり、v:testing は関数を呼び出す前に設定されている必要があります。E1142any){id}]) timer_info(){id} が指定されている場合、このタイマーに関する情報のみが返されます。タイマー{id}が存在しない場合は、空のリストが返されます。{id} が省略された場合は、すべてのタイマーに関する情報が返されます。{id} (integer?)any){timer}, {paused}) timer_pause(){paused} がゼロ以外の数値または空でない文字列に評価される場合、タイマーは一時停止され、それ以外の場合は一時停止解除されます。non-zero-arg を参照してください。{timer} (integer){paused} (boolean)any){time} はミリ秒単位の待機時間です。これは、コールバックを呼び出す前の最小時間です。システムがビジー状態であるか、Vim が入力待ちをしていない場合、時間は長くなります。Vim がメインループに戻ったときにコールバックを実行するには、0 を使用できます。{callback} は呼び出す関数です。関数の名前または Funcref にすることができます。1 つの引数(タイマー ID)を使用して呼び出されます。コールバックは、Vim が入力待ちをしている場合にのみ呼び出されます。{options} はディクショナリです。サポートされているエントリ: "repeat" コールバックを繰り返す回数。-1 は無限ループを意味します。デフォルトは 1 です。タイマーが連続して 3 回エラーを起こすと、繰り返しはキャンセルされます。func MyHandler(timer)
echo 'Handler called'
endfunc
let timer = timer_start(500, 'MyHandler',
\ {'repeat': 3}){time} (number){callback} (string|function){options} (table?)any){timer}) timer_stop(){timer} は timer_start() によって返された ID であるため、数値である必要があります。{timer} が存在しない場合、エラーは発生しません。{timer} (integer)any)any){expr}) tolower(){expr} (string)文字列){expr}) toupper(){expr} (string)文字列){src}, {fromstr}, {tostr}) tr(){fromstr} に表示されるすべての文字が、{tostr} 文字列のその位置にある文字に置き換えられた {src} 文字列のコピーです。したがって、{fromstr} の最初の文字は {tostr} の最初の文字に変換され、以下同様です。unix の "tr" コマンドとまったく同じです。このコードは、マルチバイト文字も適切に処理します。echo tr("hello there", "ht", "HT")echo tr("<blob>", "<>", "{}"){src} (文字列){fromstr} (string){tostr} (string)文字列){mask} が指定されていない場合、または空の文字列の場合、{mask} は Tab、スペース、NL、CR、および改行不能スペース文字 0xa0 を含む 0x20 までのすべての文字になります。{dir} 引数は、文字を削除する場所を指定します: 0 {text} の先頭と末尾から削除する 1 {text} の先頭のみから削除する 2 {text} の末尾のみから削除する 省略した場合は、両端がトリムされます。echo trim(" some text ")echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL"echo trim("rm<Xrm<>X>rrm", "rm<>")echo trim(" vim ", " ", 2){text} (string){mask} (string?){dir} (0|1|2?)文字列){expr}) trunc(){expr} 以下の大きさを持つ最大の整数値を返します(0 に向けて切り捨て)。{expr} は Float または Number に評価される必要があります。{expr} が Float でも Number でもない場合は 0.0 を返します。例echo trunc(1.456)echo trunc(-5.456)echo trunc(4.0){expr} (number)integer){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:false と v: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) | endifif exists('v:t_number') | endif{expr} (any)integer){name}) undofile(){name}であるファイルで使用される元に戻すファイルの名前を返します。'undodir' オプションを使用して、存在するディレクトリを検索します。元に戻すファイルが存在するかどうかはチェックしません。{name}は常に完全パスに展開されます(内部で使用されるため)。{name}が空の場合、undofile()は空の文字列を返します。ファイル名のないバッファは元に戻すファイルを書き込まないためです。:wundo と :rundo と組み合わせて使用すると便利です。{name} (文字列)文字列){buf}]) undotree(){buf}が指定されている場合は特定のバッファの、元に戻すツリーの現在の状態を返します。結果は、次の項目を含むディクショナリです。「seq_last」 使用された最大の元に戻すシーケンス番号。「seq_cur」 元に戻すツリー内の現在の位置のシーケンス番号。一部の変更が元に戻された場合、「seq_last」とは異なります。「time_cur」 :earlier および関連コマンドで最後に使用された時刻。strftime() を使用して、読みやすい形式に変換します。「save_last」 最後のファイル書き込みの番号。まだ書き込みがない場合はゼロ。「save_cur」 元に戻すツリー内の現在の位置の番号。「synced」 最後の元に戻すブロックが同期された場合にゼロ以外になります。これは、ユーザーからの入力を待機している場合に発生します。undo-blocks を参照してください。「entries」 元に戻すブロックに関する情報を含むディクショナリのリスト。{buf} (整数|文字列?)vim.fn.undotree.ret){list} [, {func} [, {dict}]]) uniq() E882 隣接する繰り返し{list}項目の2番目以降のコピーをインプレースで削除します。{list}を返します。リストを変更せずに保持する場合は、最初にコピーを作成してください。let newlist = uniq(copy(mylist)){list}がリストでない場合、ゼロを返します。{list} (任意){func} (任意?){dict} (any?)any[]|0){string}, {idx} [, {countcc} [, {charidx}]]) utf16idx(){string}内の{idx}にあるバイトのUTF-16コードユニットインデックスを返します(UTF-16に変換した後)。{charidx}が存在し、TRUEの場合、{idx}はバイトインデックスではなく、文字列{string}内の文字インデックスとして使用されます。UTF-8シーケンスの中間にある{idx}は、そのシーケンスの先頭に丸められます。{string}に{idx}バイト未満しかない場合、-1を返します。{idx}バイトが正確にある場合、UTF-16コードユニットの文字列の長さを返します。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){dict}) values(){dict}のすべての値を含むリストを返します。リストの順序は任意です。items()とkeys()も参照してください。{dict}がディクショナリでない場合、ゼロを返します。{dict} (any)any){expr} [, {list} [, {winid}]]) virtcol(){expr}で指定されたファイル位置の画面列です。つまり、画面の幅が無制限である場合、その位置にある文字によって占められる最後の画面位置です。その位置に<Tab>がある場合、返される数値は<Tab>の終わりの列になります。たとえば、'ts'が8に設定されている場合、列1の<Tab>に対して8を返します。concealは無視されます。バイト位置については、col()を使用してください。{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 6echo max(map(range(1, line('$')), "virtcol([v:val, '$'])")){expr} (string|integer[]){list} (boolean?){winid} (integer?)any){winid}, {lnum}, {col}) virtcol2col(){winid}のバッファ行{lnum}と仮想列{col}にある文字のバイトインデックスです。{lnum}が空行の場合、0を返します。{col}が行{lnum}の最後の仮想列よりも大きい場合、最後の仮想列にある文字のバイトインデックスが返されます。{winid}引数は、ウィンドウ番号またはwindow-IDにすることができます。これがゼロの場合、現在のウィンドウが使用されます。{winid}が存在しない場合、またはバッファ行{lnum}または仮想列{col}が無効な場合、-1を返します。{winid}(整数){lnum} (integer){col} (integer)any){expr}]) visualmode()CTRL-V文字)をそれぞれ文字単位、行単位、ブロック単位のVisualモードとして返します。例exe "normal " .. visualmode(){expr}が提供され、ゼロ以外の数値または空でない文字列として評価される場合、Visualモードはクリアされ、古い値が返されます。non-zero-argを参照してください。{expr} (ブール値?)any){timeout}, {condition} [, {interval}]) wait(){condition}がTRUEになるまで待機します。ここで、{condition}は関数参照または式を含む文字列です。{timeout}はミリ秒単位の最大待機時間です。-1は永遠を意味します。{interval}ミリ秒ごと(デフォルト:200)に評価されます。{timeout} (整数){condition} (任意){interval} (数値?)any)<c-j>を<down>のように動作させるには、以下を使用します。cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"any){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){bufnr} (整数)整数配列){win} [, {tab}]]) win_getid(){win}が省略された場合は、現在のウィンドウを使用します。{win}を指定する場合は、ウィンドウ番号を指定します。最上位のウィンドウの番号は1です。{tab}が省略された場合は現在のタブを使用し、それ以外の場合は番号{tab}のタブを使用します。最初のタブの番号は1です。ウィンドウが見つからない場合は0を返します。{win} (integer?){tab} (整数?)integer){nr}]) win_gettype(){nr}が見つかりません{nr} (integer?)'autocmd'|'command'|''|'loclist'|'popup'|'preview'|'quickfix'|'unknown'){expr}) win_gotoid(){expr}のウィンドウに移動します。これにより、現在のタブページも変更される場合があります。成功した場合はTRUE、ウィンドウが見つからない場合はFALSEを返します。{expr} (整数)0|1){expr}) win_id2tabwin(){expr}のウィンドウのタブ番号とウィンドウ番号を含むリスト[タブ番号, ウィンドウ番号]を返します。ウィンドウが見つからない場合は[0, 0]を返します。{expr} (整数)any){expr} (整数)any){nr}, {offset}) win_move_separator(){nr}の垂直セパレータ(つまり、右端の境界線)を、マウスでドラッグした場合と同様に{offset}列移動します。{nr}はウィンドウ番号またはウィンドウIDにすることができます。正の{offset}は右に移動し、負の{offset}は左に移動します。ウィンドウの垂直セパレータを移動すると、ウィンドウの幅と、垂直セパレータに隣接する他のウィンドウの幅が変更されます。移動の大きさは、指定された値よりも小さくなる場合があります(例:'winminwidth'を維持するため)。ウィンドウが見つかった場合はTRUE、見つからない場合はFALSEを返します。これは、最右端のウィンドウと全幅ウィンドウでは失敗します。右側にセパレータがないためです。現在のタブページでのみ機能します。E1308{nr} (integer){offset} (整数)any){nr}, {offset}) win_move_statusline(){nr}のステータスライン(つまり、下端の境界線)を、マウスでドラッグした場合と同様に{offset}行移動します。{nr}はウィンドウ番号またはウィンドウIDにすることができます。正の{offset}は下に移動し、負の{offset}は上に移動します。ウィンドウのステータスラインを移動すると、ウィンドウの高さと、ステータスラインに隣接する他のウィンドウの高さが変更されます。移動の大きさは、指定された値よりも小さくなる場合があります(例:'winminheight'を維持するため)。ウィンドウが見つかった場合はTRUE、見つからない場合はFALSEを返します。現在のタブページでのみ機能します。{nr} (integer){offset} (整数)any){nr}) win_screenpos(){nr}の画面上の位置を、2つの数値を含むリスト[行, 列]として返します。最初のウィンドウの位置は常に[1, 1]ですが、タブラインがある場合は[2, 1]になります。{nr}はウィンドウ番号またはウィンドウIDにすることができます。現在のウィンドウには0を使用します。ウィンドウが見つからない場合は[0, 0]を返します。{nr} (integer)any){nr}, {target} [, {options}]) win_splitmove(){target}に一時的に切り替え、その後、ウィンドウ{nr}を{target}に隣接する新しい分割に移動します。:splitなどのコマンドとは異なり、新しいウィンドウは作成されません(移動後もウィンドウ{nr}のウィンドウIDは変わりません)。{options}は、次のオプションのエントリを含む辞書です: "vertical" TRUEの場合、:vsplitと同様に垂直に分割が作成されます。"rightbelow" TRUEの場合、分割は下または右(垂直の場合)に行われます。FALSEの場合、上または左(垂直の場合)に行われます。存在しない場合、'splitbelow'と'splitright'の値が使用されます。{nr} (integer){target} (整数){options} (table?)any){nr}) winbufnr(){nr}に関連付けられたバッファの番号である数値です。{nr}はウィンドウ番号またはウィンドウIDにすることができます。{nr}が0の場合、現在のウィンドウのバッファの番号が返されます。ウィンドウ{nr}が存在しない場合、-1が返されます。例echo "The file in the current window is " .. bufname(winbufnr(0)){nr} (integer)integer)integer)文字列){nr}) winheight(){nr}の高さである数値です。{nr}はウィンドウ番号またはウィンドウIDにすることができます。{nr}が0の場合、現在のウィンドウの高さが返されます。ウィンドウ{nr}が存在しない場合、-1が返されます。既存のウィンドウの高さは常に0以上になります。これは、ウィンドウのツールバー行を除きます。例echo "The current window has " .. winheight(0) .. " lines."{nr} (integer)integer){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)integer){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)let cmd = winrestcmd()
call MessWithWindowSizes()
exe cmdany){dict}) winrestview(){dict} には、winsaveview() が返すすべての値が含まれている必要はありません。値が欠けている場合、それらの設定は復元されません。そのため、以下のように使用できます。call winrestview({'curswant': 4}){dict} (vim.fn.winrestview.dict)any)vim.fn.winsaveview.ret){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{nr} (integer)any)any){object}, {fname} [, {flags}]) writefile(){object}がリストの場合、それをファイル{fname}に書き込みます。各リスト項目はNLで区切られます。各リスト項目は文字列または数値でなければなりません。すべてのNL文字はNUL文字に置き換えられます。CR文字を挿入する必要がある場合は、{list}をwritefile()に渡す前に実行する必要があります。{flags}は文字列でなければなりません。以下の文字が認識されます。call writefile(["foo"], "event.log", "a")
call writefile(["bar"], "event.log", "a")defer delete({fname}){flags}に"S"または"s"が含まれていない場合、'fsync' オプションが設定されているとfsync()が呼び出されます。let fl = readfile("foo", "b")
call writefile(fl, "foocopy", "b"){object} (any){fname} (string){flags} (string?)any){expr}, {expr}) xor()and()とor()も参照してください。例let bits = xor(bits, 0x80){expr} (number){expr1} (number)any)let a = "aaaa\nxxxx"
echo matchstr(a, "..\n..")
" aa
" xx
echo matchstr(a, "a.x")
" a
" x"^"は文字列の先頭文字のみに一致し、"$"は文字列の末尾文字のみに一致することに注意してください。"\n"の前後には一致しません。