builtin.txt For Vim バージョン 9.1. Last change: 2024 Dec 03
VIMリファレンスマニュアル by Bram Moolenaar
組み込み関数 builtin-functions
Note: 式の評価はコンパイル時に無効することができる。その場合、組み込み関数は使
用できない。+eval と no-eval-feature を参照。
使用目的別に分類された関数については、function-list を参照。
1. 概要 builtin-function-list
2. 詳細 builtin-function-details
3. 機能リスト feature-list
4. 文字列内でのパターンマッチング string-match
==============================================================================
1. 概要 builtin-function-list
関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる。
使用法 結果 説明
abs({expr}) 浮動小数点数または数値 {expr}の絶対値
acos({expr}) 浮動小数点数 {expr}のアークコサイン
add({object}, {item}) リスト/Blob {item}を{object}に追加する
and({expr}, {expr}) 数値 ビット論理積
append({lnum}, {text}) 数値 {lnum}行目に{text}を付け加える
appendbufline({buf}, {lnum}, {text})
数値 バッファ{buf}の{lnum}行目に{text}を付
け加える
argc([{winid}]) 数値 引数内のファイルの数
argidx() 数値 引数リスト内の現在のインデックス
arglistid([{winnr} [, {tabnr}]])
数値 引数リストID
argv({nr} [, {winid}]) 文字列 引数の第{nr}番目
argv([-1, {winid}]) リスト 引数リスト
asin({expr}) 浮動小数点数 {expr}のアークサイン
assert_beeps({cmd}) 数値 {cmd} がビープ音を鳴らすことをテストす
る
assert_equal({exp}, {act} [, {msg}])
数値 {exp}と{act}が等しいかどうかテストする
assert_equalfile({fname-one}, {fname-two} [, {msg}])
数値 ファイルの内容が等しいことをテストする
assert_exception({error} [, {msg}])
数値 v:exceptionが{error}であるかテストする
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
数値 {cmd}が失敗するかどうかテストする
assert_false({actual} [, {msg}])
数値 {actual}がfalseかどうかテストする
assert_inrange({lower}, {upper}, {actual} [, {msg}])
数値 {actual}が範囲内にあるかテストする
assert_match({pat}, {text} [, {msg}]) 数値 {pat}が{text}にマッチするかテス
トする
assert_nobeep({cmd}) 数値 {cmd} がビープ音を鳴らさないことをテス
トする
assert_notequal({exp}, {act} [, {msg}]) 数値 {exp}が{act}と等しくないことを
テストする
assert_notmatch({pat}, {text} [, {msg}]) 数値 {pat}が{text}とマッチしないこと
をテストする
assert_report({msg}) 数値 テストの失敗を報告する
assert_true({actual} [, {msg}])
数値 {actual}がtrueかどうかテストする
atan({expr}) 浮動小数点数 {expr}のアークタンジェント
atan2({expr1}, {expr2}) 浮動小数点数 {expr1} / {expr2} のアークタン
ジェント
autocmd_add({acmds}) 真偽値 自動コマンドとグループのリストを追加
autocmd_delete({acmds}) 真偽値 自動コマンドとグループのリストを削除
autocmd_get([{opts}]) リスト 自動コマンドのリストを返す
balloon_gettext() 文字列 バルーン内のカレントテキストを得る
balloon_show({expr}) なし {expr} をバルーン内に表示
balloon_split({msg}) リスト {msg} をバルーンで使われるように分割す
る
bindtextdomain({package}, {path})
なし 指定されたパスにテキストドメインをバイ
ンドする
blob2list({blob}) リスト {blob} を数値のリストに変換する
browse({save}, {title}, {initdir}, {default})
文字列 ファイル選択ダイアログを表示
browsedir({title}, {initdir}) 文字列 ディレクトリ選択ダイアログを表示
bufadd({name}) 数値 バッファリストにバッファを追加する
bufexists({buf}) 数値 バッファ{buf}が存在すればTRUE
buflisted({buf}) 数値 バッファ{buf}がリストにあるならTRUE
bufload({buf}) 数値 まだバッファ{buf}がロードされていなけ
ればバッファをロードする
bufloaded({buf}) 数値 バッファ{buf}がロード済みならTRUE
bufname([{buf}]) 文字列 バッファ{buf}の名前
bufnr([{buf} [, {create}]]) 数値 バッファ{buf}の番号
bufwinid({buf}) 数値 バッファ{buf}のウィンドウID
bufwinnr({buf}) 数値 バッファ{buf}のウィンドウ番号
byte2line({byte}) 数値 {byte}番目のバイトの行番号
byteidx({expr}, {nr} [, {utf16}])
数値 {expr}の{nr}文字目のバイトインデックス
byteidxcomp({expr}, {nr} [, {utf16}])
数値 {expr}の{nr}文字目のバイトインデックス
call({func}, {arglist} [, {dict}])
任意 引数{arglist}をつけて{func}を呼ぶ
ceil({expr}) 浮動小数点数 {expr} を切り上げる
ch_canread({handle}) 数値 何か読むものがあるかをチェックする
ch_close({handle}) なし {handle} を閉じる
ch_close_in({handle}) なし {handle} の入力を閉じる
ch_evalexpr({handle}, {expr} [, {options}])
任意 {handle} に {expr} を送り応答をJSONと
して評価する
ch_evalraw({handle}, {string} [, {options}])
任意 {handle} に {string} を送り応答を生の
文字列として評価する
ch_getbufnr({handle}, {what}) 数値 {handle}/{what} に割り当てられたバッ
ファ番号を得る
ch_getjob({channel}) ジョブ {channel} の Job を得る
ch_info({handle}) 文字列 チャネル {handle} に関する情報を得る
ch_log({msg} [, {handle}]) なし チャネルのログファイルに {msg} を書き
込む
ch_logfile({fname} [, {mode}]) なし チャネルの挙動ログ出力を開始する
ch_open({address} [, {options}])
チャネル {address} へのチャネルを開く
ch_read({handle} [, {options}]) 文字列 {handle} から読み込む
ch_readblob({handle} [, {options}])
Blob {handle} からBlobを読み込む
ch_readraw({handle} [, {options}])
文字列 {handle} から生の文字列を読み込む
ch_sendexpr({handle}, {expr} [, {options}])
任意 {expr}をJSONチャネル{handle}に送る
ch_sendraw({handle}, {expr} [, {options}])
任意 {expr}をrawチャネル{handle}に送る
ch_setoptions({handle}, {options})
なし {handle}にオプションを設定する
ch_status({handle} [, {options}])
文字列 チャネル{handle}の状態
changenr() 数値 現在の変更番号
char2nr({expr} [, {utf8}]) 数値 {expr}の先頭文字のASCII/UTF-8コード
charclass({string}) 数値 {string} の文字クラス
charcol({expr} [, {winid}]) 数値 カーソルかマークのカラム番号
charidx({string}, {idx} [, {countcc} [, {utf16}]])
数値 {string} のバイト {idx} の文字のイン
デックス
chdir({dir}) 文字列 現在の作業ディレクトリを変更する
cindent({lnum}) 数値 {lnum}行目のCインデント量
clearmatches([{win}]) なし 全マッチをクリアする
col({expr} [, {winid}]) 数値 カーソルかマークのカラムバイトインデッ
クス
complete({startcol}, {matches}) なし 挿入モード補完を設定する
complete_add({expr}) 数値 補完候補を追加する
complete_check() 数値 補完中に押されたキーをチェックする
complete_info([{what}]) 辞書 現在の補完情報を取得
confirm({msg} [, {choices} [, {default} [, {type}]]])
数値 ユーザーへの選択肢と番号
copy({expr}) 任意 {expr}の浅いコピーを作る
cos({expr}) 浮動小数点数 {expr} の余弦(コサイン)
cosh({expr}) 浮動小数点数 {expr}のハイパボリックコサイン
count({comp}, {expr} [, {ic} [, {start}]])
数値 {comp}中に{expr}が何個現れるか数える
cscope_connection([{num}, {dbpath} [, {prepend}]])
数値 cscope接続の存在を判定する
cursor({lnum}, {col} [, {off}])
数値 カーソルを{lnum}, {col}, {off}へ移動
cursor({list}) 数値 カーソルを{list}の位置へ移動
debugbreak({pid}) 数値 デバッグするプロセスへ割り込む
deepcopy({expr} [, {noref}]) 任意 {expr}の完全なコピーを作る
delete({fname} [, {flags}]) 数値 ファイルやディレクトリ{fname}を消す
deletebufline({buf}, {first} [, {last}])
数値 バッファ {buf} から行を削除する
did_filetype() 数値 FileTypeのautocommandが実行されたか?
diff({fromlist}, {tolist} [, {options}])
リスト 2 つの文字列のリストの差分
diff_filler({lnum}) 数値 差分モードで{lnum}に挿入された行
diff_hlID({lnum}, {col}) 数値 差分モードで{lnum}/{col}位置の強調
digraph_get({chars}) 文字列 {chars} のダイグラフ digraph を取得
digraph_getlist([{listall}]) リスト すべてのダイグラフ digraph を取得
digraph_set({chars}, {digraph}) 真偽値 ダイグラフ digraph の登録
digraph_setlist({digraphlist}) 真偽値 複数のダイグラフ digraph の登録
echoraw({expr}) なし {expr} をそのまま出力する
empty({expr}) 数値 {expr}が空ならTRUE
environ() 辞書 すべての環境変数を返す
err_teapot([{expr}]) なし {expr} が TRUE の場合、E418、または
E503 を与える
escape({string}, {chars}) 文字列 {string}内の{chars}を '\' でエスケープ
eval({string}) 任意 {string}を評価し、値を得る
eventhandler() 数値 イベントハンドラの内側ならTRUE
executable({expr}) 数値 実行可能な{expr}が存在するなら1
execute({command}) 文字列 {command}を実行し、出力を得る
exepath({expr}) 文字列 コマンド {expr} のフルパス
exists({expr}) 数値 変数{expr}が存在したらTRUE
exists_compiled({expr}) 数値 変数{var}がコンパイル時に存在したらTRUE
exp({expr}) 浮動小数点数 {expr}の指数
expand({expr} [, {nosuf} [, {list}]])
任意 {expr}内の特別なキーワードを展開
expandcmd({string} [, {options}])
文字列 :edit のように{string}を展開
extend({expr1}, {expr2} [, {expr3}])
リスト/辞書 {expr1}に{expr2}を要素として挿入
extendnew({expr1}, {expr2} [, {expr3}])
リスト/辞書 extend() と同じだが新しいリスト/
辞書を作る
feedkeys({string} [, {mode}]) 数値 先行入力バッファにキーシーケンスを追加
filecopy({from}, {to}) 数値 ファイル {from} を {to} へコピーできた
場合は TRUE
filereadable({file}) 数値 {file}が読み込み可能ならTRUE
filewritable({file}) 数値 {file}が書き込み可能ならTRUE
filter({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr2} が0となる要素を {expr1} からと
り除く
finddir({name} [, {path} [, {count}]])
文字列 {path}からディレクトリ{name}を探す
findfile({name} [, {path} [, {count}]])
文字列 {path}からファイル{name}を探す
flatten({list} [, {maxdepth}]) リスト リスト {list} を {maxdepth} の深さまで
平坦化する
flattennew({list} [, {maxdepth}])
リスト {list} のコピーを平坦化する
float2nr({expr}) 数値 浮動小数点数 {expr} を数値に変換する
floor({expr}) 浮動小数点数 {expr} を切り捨てる
fmod({expr1}, {expr2}) 浮動小数点数 {expr1} / {expr2} の余り
fnameescape({fname}) 文字列 {fname} 内の特殊文字をエスケープする
fnamemodify({fname}, {mods}) 文字列 ファイル名を変更
foldclosed({lnum}) 数値 {lnum}の折り畳みの最初の行(閉じている
なら)
foldclosedend({lnum}) 数値 {lnum}の折り畳みの最後の行(閉じている
なら)
foldlevel({lnum}) 数値 {lnum}の折り畳みレベル
foldtext() 文字列 閉じた折り畳みに表示されている行
foldtextresult({lnum}) 文字列 {lnum}で閉じている折り畳みのテキスト
foreach({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr1} の各項目に対して {expr2} を呼
び出す
foreground() 数値 Vimウィンドウを前面に移動する
fullcommand({name} [, {vim9}]) 文字列 {name} から完全なコマンドを取得
funcref({name} [, {arglist}] [, {dict}])
Funcref 関数{name}への参照
function({name} [, {arglist}] [, {dict}])
Funcref 名前による関数{name}への参照
garbagecollect([{atexit}]) なし メモリを解放する。循環参照を断ち切る
get({list}, {idx} [, {def}]) 任意 {list}や{def}から要素{idx}を取得
get({dict}, {key} [, {def}]) 任意 {dict}や{def}から要素{key}を取得
get({func}, {what}) 任意 funcref/partial {func}のプロパティ取得
getbufinfo([{buf}]) リスト バッファに関する情報
getbufline({buf}, {lnum} [, {end}])
リスト バッファ{buf}の{lnum}から{end}行目
getbufoneline({buf}, {lnum}) 文字列 バッファ{buf}の{lnum}行目
getbufvar({buf}, {varname} [, {def}])
任意 バッファ{buf}の変数 {varname}
getcellpixels() リスト 文字のセルのピクセルサイズを取得する
getcellwidths() リスト 文字のセル幅の上書き設定を取得
getchangelist([{buf}]) リスト 変更リスト要素のリスト
getchar([{expr}]) 数値/文字列 ユーザーから1文字を取得する
getcharmod() 数値 修飾キーの状態を表す数値を取得
getcharpos({expr}) リスト カーソル、マーク、その他のカーソル位置
getcharsearch() 辞書 最後の文字検索を取得
getcharstr([{expr}]) 文字列 ユーザーから1文字を取得する
getcmdcomplpat() 文字列 現在のコマンドライン補完の補完パターン
を返す
getcmdcompltype() 文字列 現在のコマンドライン補完のタイプを返す
getcmdline() 文字列 現在のコマンドライン入力を取得
getcmdpos() 数値 コマンドラインのカーソル位置を取得
getcmdprompt() 文字列 現在のコマンドラインプロンプトを取得
getcmdscreenpos() 数値 コマンドラインのカーソルのスクリーン位
置を返す
getcmdtype() 文字列 現在のコマンドラインの種類を取得
getcmdwintype() 文字列 現在のコマンドラインウィンドウの種類
getcompletion({pat}, {type} [, {filtered}])
リスト コマンドライン補完にマッチするリスト
getcurpos([{winnr}]) リスト カーソルの位置
getcursorcharpos([{winnr}]) リスト カーソルの位置の文字
getcwd([{winnr} [, {tabnr}]]) 文字列 現在の作業ディレクトリを取得
getenv({name}) 文字列 環境変数を返す
getfontname([{name}]) 文字列 使用しているフォントの名前
getfperm({fname}) 文字列 ファイル{fname}の許可属性を取得
getfsize({fname}) 数値 ファイル{fname}のバイト数を取得
getftime({fname}) 数値 ファイルの最終更新時間
getftype({fname}) 文字列 ファイル{fname}の種類の説明
getimstatus() 数値 IME がアクティブの場合は TRUE
getjumplist([{winnr} [, {tabnr}]])
リスト ジャンプリスト要素のリスト
getline({lnum}) 文字列 現在のバッファから行の内容を取得
getline({lnum}, {end}) リスト カレントバッファの{lnum}から{end}行目
getloclist({nr}) リスト locationリストの要素のリスト
getloclist({nr}, {what}) 辞書 指定したlocationリストのプロパティ
getmarklist([{buf}]) リスト グローバル/ローカルのマークのリスト
getmatches([{win}]) リスト 現在のマッチのリスト
getmousepos() 辞書 マウスの最新の位置
getmouseshape() 文字列 現在のマウス形状名
getpid() 数値 Vim のプロセス ID
getpos({expr}) リスト カーソル・マークなどの位置を取得
getqflist() リスト quickfixリストの要素のリスト
getqflist({what}) 辞書 指定したquickfixリストのプロパティ
getreg([{regname} [, 1 [, {list}]]])
文字列/リスト レジスタの中身を取得
getreginfo([{regname}]) 辞書 レジスタについての情報
getregion({pos1}, {pos2} [, {opts}])
リスト {pos1}から{pos2}までのテキストを取得
getregionpos({pos1}, {pos2} [, {opts}])
リスト 領域の位置のリストを取得
getregtype([{regname}]) 文字列 レジスタの種類を取得
getscriptinfo([{opts}]) リスト 読み込まれたスクリプトの一覧
gettabinfo([{expr}]) リスト タブページのリスト
gettabvar({nr}, {varname} [, {def}])
任意 タブ{nr}の変数{varname}または{def}
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
任意 タブページ{tabnr}の{winnr}の{name}
gettagstack([{nr}]) 辞書 ウィンドウ{nr}のタグスタックを取得
gettext({text} [, {package}]) 文字列 {text} の翻訳の検索
getwininfo([{winid}]) リスト 各ウィンドウに関する情報のリスト
getwinpos([{timeout}]) リスト Vim ウィンドウのピクセルでの X および
Y 座標
getwinposx() 数値 Vim ウィンドウのピクセルでの X 座標
getwinposy() 数値 Vim ウィンドウのピクセルでの Y 座標
getwinvar({nr}, {varname} [, {def}])
文字列 ウィンドウ{nr}の変数{varname}
glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
任意 {expr}内のfile wildcardを展開
glob2regpat({expr}) 文字列 globパターンを検索パターンに変換
globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
文字列 {path}の全ディレクトリに対し
glob({expr})を行う
has({feature} [, {check}]) 数値 機能{feature}がサポートならばTRUE
has_key({dict}, {key}) 数値 {dict}が要素{key}を持つならTRUE
haslocaldir([{winnr} [, {tabnr}]])
数値 現在のウィンドウで :lcd か :tcd が
実行されたならTRUE
hasmapto({what} [, {mode} [, {abbr}]])
数値 {what}のマッピングが存在するならTRUE
histadd({history}, {item}) 数値 ヒストリに追加
histdel({history} [, {item}]) 数値 ヒストリからitemを削除
histget({history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得
histnr({history}) 数値 ヒストリの数
hlID({name}) 数値 highlight group {name}のID
hlexists({name}) 数値 highlight group {name}が存在したらTRUE
hlget([{name} [, {resolve}]]) リスト highlight group の属性を取得
hlset({list}) 数値 highlight group の属性を設定
hostname() 文字列 vimが動作しているマシンの名前
iconv({expr}, {from}, {to}) 文字列 {expr}のエンコーディングを変換する
id({item}) 文字列 一意の ID 文字列を取得
indent({lnum}) 文字列 行{lnum}のインデントを取得
index({object}, {expr} [, {start} [, {ic}]])
数値 {object}中に{expr}が現れる位置
indexof({object}, {expr} [, {opts}]])
数値 {expr} が true となる {object} 内のイ
ンデックス
input({prompt} [, {text} [, {completion}]])
文字列 ユーザーからの入力を取得
inputdialog({prompt} [, {text} [, {cancelreturn}]])
文字列 input()と同様。GUIのダイアログを使用
inputlist({textlist}) 数値 ユーザーに選択肢から選ばせる
inputrestore() 数値 先行入力を復元する
inputsave() 数値 先行入力を保存し、クリアする
inputsecret({prompt} [, {text}]) 文字列 input()だがテキストを隠す
insert({object}, {item} [, {idx}])
リスト {object}に要素{item}を挿入 [{idx}の前]
instanceof({object}, {class}) 数値 {object} が {class} のインスタンスの場
合は TRUE
interrupt() なし スクリプトの実行を中断する
invert({expr}) 数値 ビット反転
isabsolutepath({path}) 数値 {path} が絶対パスならば TRUE
isdirectory({directory}) 数値 {directory}がディレクトリならばTRUE
isinf({expr}) 数値 {expr}が無限大の値(正または負)かどうか
を判定する
islocked({expr}) 数値 {expr}がロックされているならTRUE
isnan({expr}) 数値 {expr}がNaNならばTRUE
items({dict}) リスト {dict}のキーと値のペアを取得
job_getchannel({job}) チャネル {job}のチャネルハンドルを取得
job_info([{job}]) 辞書 {job}についての情報を取得
job_setoptions({job}, {options}) なし {job}のオプションを設定する
job_start({command} [, {options}])
ジョブ ジョブを開始する
job_status({job}) 文字列 {job}のステータスを取得する
job_stop({job} [, {how}]) 数値 {job}を停止する
join({list} [, {sep}]) 文字列 {list}の要素を連結して文字列にする
js_decode({string}) 任意 JS形式のJSONをデコードする
js_encode({expr}) 文字列 JS形式のJSONにエンコードする
json_decode({string}) 任意 JSONをデコードする
json_encode({expr}) 文字列 JSONにエンコードする
keys({dict}) リスト {dict}のキーを取得
keytrans({string}) 文字列 内部キーコードを :map で使用できる形
式に変換する
len({expr}) 数値 {expr}の長さを取得
libcall({lib}, {func}, {arg}) 文字列 ライブラリ{lib}の関数{func}をコール
libcallnr({lib}, {func}, {arg}) 数値 上と同じ。ただし数値を返す
line({expr} [, {winid}]) 数値 行番号の取得
line2byte({lnum}) 数値 行{lnum}のバイトカウント
lispindent({lnum}) 数値 {lnum}行目のLispインデント量を取得
list2blob({list}) Blob 数値のリスト {list} をBlobに変換する
list2str({list} [, {utf8}]) 文字列 数値のリスト {list} を文字列に変換する
listener_add({callback} [, {buf}])
数値 変更を監視するためのコールバックを追加
listener_flush([{buf}]) なし リスナーコールバックを呼び出す
listener_remove({id}) なし リスナーコールバックを削除する
localtime() 数値 現在時刻
log({expr}) 浮動小数点数 {expr}の自然対数(底e)
log10({expr}) 浮動小数点数 浮動小数点数 {expr} の 10 を底
とする対数
luaeval({expr} [, {expr}]) 任意 Lua の式を評価する
map({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr1} の各要素を {expr2} に変える
maparg({name} [, {mode} [, {abbr} [, {dict}]]])
文字列/辞書
モード{mode}でのマッピング{name}の値
mapcheck({name} [, {mode} [, {abbr}]])
文字列 {name}にマッチするマッピングを確認
maplist([{abbr}]) リスト 全マッピングのリスト、各要素は辞書
mapnew({expr1}, {expr2}) リスト/辞書/Blob/文字列
map() と同様だが新規のリストか辞書を
作る
mapset({mode}, {abbr}, {dict}) なし maparg() の結果からマッピングを復元
する
match({expr}, {pat} [, {start} [, {count}]])
数値 {expr}内で{pat}がマッチする位置
matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
数値 {pattern} を {group} で強調表示する
matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
数値 位置を {group} で強調表示する
matcharg({nr}) リスト :matchの引数
matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict})
リスト バッファ {buf} 内のすべての {pat} の
マッチ
matchdelete({id} [, {win}]) 数値 {id} で指定されるマッチを削除する
matchend({expr}, {pat} [, {start} [, {count}]])
数値 {expr}内で{pat}が終了する位置
matchfuzzy({list}, {str} [, {dict}])
リスト {list} 内について {str} でのファジー
マッチ
matchfuzzypos({list}, {str} [, {dict}])
リスト {list} 内について {str} でのファジー
マッチ
matchlist({expr}, {pat} [, {start} [, {count}]])
リスト {expr}内の{pat}のマッチと部分マッチ
matchstr({expr}, {pat} [, {start} [, {count}]])
文字列 {expr}内の{count}番目の{pat}のマッチ
matchstrlist({list}, {pat} [, {dict})
リスト {list} 内のすべての {pat} にマッチ
matchstrpos({expr}, {pat} [, {start} [, {count}]])
リスト {expr}内の{count}番目の{pat}のマッチ
max({expr}) 数値 {expr}内の要素の最大値
menu_info({name} [, {mode}]) 辞書 メニューの項目情報を取得する
min({expr}) 数値 {expr}内の要素の最小値
mkdir({name} [, {flags} [, {prot}]])
数値 ディレクトリ{name}を作成
mode([{expr}]) 文字列 現在の編集モード
mzeval({expr}) 任意 MzScheme の式を評価する
nextnonblank({lnum}) 数値 {lnum}行目以降で空行でない行の行番号
nr2char({expr} [, {utf8}]) 文字列 ASCII/UTF-8コード{expr}で示される文字
or({expr}, {expr}) 数値 ビット論理和
pathshorten({expr} [, {len}]) 文字列 path内の短縮したディレクトリ名
perleval({expr}) 任意 Perlの式を評価する
popup_atcursor({what}, {options}) 数値 カーソルの近くにポップアップウィンドウ
を作成する
popup_beval({what}, {options}) 数値 'balloon_eval' のポップアップウィンド
ウを作成する
popup_clear() なし すべてのポップアップウィンドウを閉じる
popup_close({id} [, {result}]) なし {id} のポップアップウィンドウを閉じる
popup_create({what}, {options}) 数値 ポップアップウィンドウを作成する
popup_dialog({what}, {options}) 数値 ダイアログとしてポップアップウィンドウ
を作成する
popup_filter_menu({id}, {key}) 数値 ポップアップウィンドウのメニューのフィ
ルター
popup_filter_yesno({id}, {key}) 数値 ポップアップウィンドウのダイアログの
popup_findecho() 数値 :echowin のポップアップのウィンドウ
ID を取得する
フィルター
popup_findinfo() 数値 情報ポップアップウィンドウの window ID
を取得する
popup_findpreview() 数値 プレビューポップアップウィンドウの
window ID を取得する
popup_getoptions({id}) 辞書 ポップアップウィンドウ {id} のオプショ
ンを取得する
popup_getpos({id}) 辞書 ポップアップウィンドウ {id} の位置を取
得する
popup_hide({id}) なし ポップアップメニュー {id} を隠す
popup_list() リスト 全ポップアップのウィンドウIDのリストを
取得する
popup_locate({row}, {col}) 数値 指定位置のポップアップのウィンドウIDを
取得する
popup_menu({what}, {options}) 数値 メニューとして使われるポップアップウィ
ンドウを作成する
popup_move({id}, {options}) なし ポップアップウィンドウ {id} の位置を
セットする
popup_notification({what}, {options})
数値 ポップアップウィンドウの通知を作成する
popup_setbuf({id}, {buf}) 真偽値 ポップアップウィンドウ {id} のバッファ
を設定する
popup_setoptions({id}, {options})
なし ポップアップウィンドウ {id} のオプショ
ンを設定する
popup_settext({id}, {text}) なし ポップアップウィンドウ {id} のテキスト
を設定する
popup_show({id}) なし ポップアップウィンドウ {id} を再表示す
る
pow({x}, {y}) 浮動小数点数 {x} の {y} 乗
prevnonblank({lnum}) 数値 {lnum}行目以前の空行でない行の行番号
printf({fmt}, {expr1}...) 文字列 文字列を組み立てる
prompt_getprompt({buf}) 文字列 プロンプト文字列の取得
prompt_setcallback({buf}, {expr}) なし プロンプトコールバック関数を設定する
prompt_setinterrupt({buf}, {text}) なし プロンプト割り込み関数を設定する
prompt_setprompt({buf}, {text}) なし プロンプトテキストを設定する
prop_add({lnum}, {col}, {props}) なし テキストプロパティ1つを追加
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
なし 複数のテキストプロパティを追加
prop_clear({lnum} [, {lnum-end} [, {props}]])
なし 全てのテキストプロパティを削除
prop_find({props} [, {direction}])
辞書 テキストプロパティを検索する
prop_list({lnum} [, {props}]) リスト {lnum}行目のテキストプロパティを取得
prop_remove({props} [, {lnum} [, {lnum-end}]])
数値 テキストプロパティを削除
prop_type_add({name}, {props}) なし 新しいプロパティタイプを定義
prop_type_change({name}, {props})
なし 既存のプロパティタイプを変更
prop_type_delete({name} [, {props}])
なし プロパティタイプを削除
prop_type_get({name} [, {props}])
辞書 プロパティタイプの値を取得
prop_type_list([{props}]) リスト プロパティタイプ一覧を取得
pum_getpos() 辞書 ポップアップメニューが表示されている場
合、位置とサイズを取得
pumvisible() 数値 ポップアップメニューが表示されているか
py3eval({expr} [, {locals}]) 任意 python3 の式を評価する
pyeval({expr} [, {locals}]) 任意 Python の式を評価する
pyxeval({expr} [, {locals}]) 任意 python_x の式を評価する
rand([{expr}]) 数値 疑似乱数を取得する
range({expr} [, {max} [, {stride}]])
リスト {expr}から{max}までの要素のリスト
readblob({fname} [, {offset} [, {size}]])
Blob {fname} から Blob を読む
readdir({dir} [, {expr} [, {dict}]])
リスト {expr}によって選択された{dir}内のファ
イル名を取得
readdirex({dir} [, {expr} [, {dict}]])
リスト {expr}によって選択された{dir}内のファ
イル情報を取得
readfile({fname} [, {type} [, {max}]])
リスト ファイル{fname}から行のリストを取得
reduce({object}, {func} [, {initial}])
任意 {func} を使って {object} の 畳み込み
(reduce) を行う
reg_executing() 文字列 実行中のレジスタ名を取得する
reg_recording() 文字列 記録中のレジスタ名を取得する
reltime([{start} [, {end}]]) リスト 時刻の値を取得
reltimefloat({time}) 浮動小数点数 時刻の値を浮動小数点に変換
reltimestr({time}) 文字列 時刻の値を文字列に変換
remote_expr({server}, {string} [, {idvar} [, {timeout}]])
文字列 式を送信する
remote_foreground({server}) 数値 Vimサーバーを前面に出す
remote_peek({serverid} [, {retvar}])
数値 返信文字列を確認する
remote_read({serverid} [, {timeout}])
文字列 返信文字列を読み込む
remote_send({server}, {string} [, {idvar}])
文字列 キーシーケンスを送信する
remote_startserver({name}) なし サーバー {name} になる
remove({list}, {idx} [, {end}]) 任意/リスト
{list}から{idx}と{end}間の要素を削除
remove({blob}, {idx} [, {end}]) 数値/Blob
{Blob}から{idx}と{end}間のバイトを削除
remove({dict}, {key}) 任意 {dict}から要素{key}を削除
rename({from}, {to}) 数値 {file}から{to}へファイル名変更
repeat({expr}, {count}) リスト/Blob/文字列
{expr}を{count}回繰り返す
resolve({filename}) 文字列 ショートカットが指す先のファイル名
reverse({obj}) リスト/Blob/文字列
{obj} を反転させる
round({expr}) 浮動小数点数 {expr} を四捨五入する
rubyeval({expr}) 任意 Ruby の式を評価
screenattr({row}, {col}) 数値 スクリーン位置の属性
screenchar({row}, {col}) 数値 スクリーン位置の文字
screenchars({row}, {col}) リスト スクリーン位置の文字のリスト
screencol() 数値 現在のカーソル列
screenpos({winid}, {lnum}, {col}) 辞書 スクリーン行と列のテキスト
screenrow() 数値 現在のカーソル行
screenstring({row}, {col}) 文字列 スクリーン位置の文字列
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
数値 {pattern} を検索する
searchcount([{options}]) 辞書 検索の統計の取得もしくは更新する
searchdecl({name} [, {global} [, {thisblock}]])
数値 変数の宣言を検索
searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
数値 開始/終端のペアの他方を検索
searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
リスト 開始/終端のペアの他方を検索
searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
リスト {pattern}を検索
server2client({clientid}, {string})
数値 返信文字列を送信する
serverlist() 文字列 利用可能なサーバーのリストを取得
setbufline({buf}, {lnum}, {text})
数値 バッファ {buf} の {lnum} 行目に {text}
を設定する
setbufvar({buf}, {varname}, {val}) バッファ{buf}内の変数{varname}に{val}を
セット
setcellwidths({list}) なし 文字のセル幅の上書き設定
setcharpos({expr}, {list}) 数値 {list} の {expr} 位置に設定
setcharsearch({dict}) 辞書 文字検索を{dict}に設定
setcmdline({str} [, {pos}]) 数値 コマンドラインを設定する
setcmdpos({pos}) 数値 コマンドライン内のカーソル位置を設定
setcursorcharpos({list}) 数値 {list} の位置へカーソルを移動
setenv({name}, {val}) なし 環境変数を設定
setfperm({fname}, {mode}) 数値 ファイル {fname} のパーミッションを
{mode} に設定
setline({lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット
setloclist({nr}, {list} [, {action}])
数値 {list}を使ってlocationリストを変更
setloclist({nr}, {list}, {action}, {what})
数値 指定したlocationリストのプロパティを
変更
setmatches({list} [, {win}]) 数値 マッチのリストを復元する
setpos({expr}, {list}) なし {expr}の位置を{list}にする
setqflist({list} [, {action}]) 数値 {list}を使ってquickfixリストを変更
setqflist({list}, {action}, {what})
数値 指定したquickfixリストのプロパティを
変更
setreg({n}, {v} [, {opt}]) 数値 レジスタの値とタイプを設定
settabvar({nr}, {varname}, {val}) なし タブページ{nr}の変数{varname}を{val}に
設定する
settabwinvar({tabnr}, {winnr}, {varname}, {val})
なし タブページ{tabnr}内のウィンドウ{winnr}
の変数{varname}に{val}をセット
settagstack({nr}, {dict} [, {action}])
数値 {dict}を使ってタグスタックを変更
setwinvar({nr}, {varname}, {val}) なし ウィンドウ{nr}の変数{varname}に{val}を
セット
sha256({string}) 文字列 {string}のSHA256チェックサム
shellescape({string} [, {special}])
文字列 {string}をシェルコマンド引数として使う
ためにエスケープする。
shiftwidth([{col}]) 数値 実際に使用される 'shiftwidth' の値
sign_define({name} [, {dict}]) 数値 目印を定義または更新する
sign_define({list}) リスト 目印のリストを定義または更新する
sign_getdefined([{name}]) リスト 定義されている目印のリストを取得する
sign_getplaced([{buf} [, {dict}]])
リスト 設置されている目印のリストを取得する
sign_jump({id}, {group}, {buf})
数値 目印に移動する
sign_place({id}, {group}, {name}, {buf} [, {dict}])
数値 目印を設置する
sign_placelist({list}) リスト 目印のリストを設置する
sign_undefine([{name}]) 数値 目印を削除する
sign_undefine({list}) リスト 目印のリストを削除する
sign_unplace({group} [, {dict}])
数値 目印を解除する
sign_unplacelist({list}) リスト 目印のリストを解除する
simplify({filename}) 文字列 ファイル名を可能なかぎり簡略化する
sin({expr}) 浮動小数点数 {expr} の正弦(サイン)
sinh({expr}) 浮動小数点数 {expr}のハイパボリックサイン
slice({expr}, {start} [, {end}]) 文字列、リスト、Blob
文字列、リスト、Blob のスライス
sort({list} [, {how} [, {dict}]])
リスト {list} を {how} で比較してソートする
sound_clear() なし すべてのサウンドの再生を停止する
sound_playevent({name} [, {callback}])
数値 イベントサウンドを再生する
sound_playfile({path} [, {callback}])
数値 サウンドファイル{path}を再生する
sound_stop({id}) なし サウンド{id}の再生を停止する
soundfold({word}) 文字列 {word}のsound-fold
spellbadword() 文字列 カーソル位置のスペルミスした単語
spellsuggest({word} [, {max} [, {capital}]])
リスト スペリング補完
split({expr} [, {pat} [, {keepempty}]])
リスト {expr}を{pat}で区切ってリストを作る
sqrt({expr}) 浮動小数点数 {expr} の平方根
srand([{expr}]) リスト rand() 用の種を取得する
state([{what}]) 文字列 Vimの現在の状態
str2float({expr} [, {quoted}]) 浮動小数点数 文字列を浮動小数点数に変換する
str2list({expr} [, {utf8}]) リスト {expr}の各文字をASCII/UTF-8値に変換する
str2nr({expr} [, {base} [, {quoted}]])
数値 文字列を数値に変換する
strcharlen({expr}) 数値 文字列 {expr} の文字の長さ
strcharpart({str}, {start} [, {len} [, {skipcc}]])
文字列 {str} 内 {start} 文字目 から {len} 文
字分
strchars({expr} [, {skipcc}]) 数値 文字列{expr}の文字の数
strdisplaywidth({expr} [, {col}]) 数値 文字列{expr}の表示幅
strftime({format} [, {time}]) 文字列 指定されたフォーマットで時刻を書式化
strgetchar({str}, {index}) 数値 {str} から {index} 番目の文字インデッ
クスを得る
stridx({haystack}, {needle} [, {start}])
数値 {haystack}内の{needle}のインデックス
string({expr}) 文字列 {expr}の値の文字列表現
strlen({expr}) 数値 文字列{expr}の長さ
strpart({str}, {start} [, {len} [, {chars}]])
文字列 {str}内{start}バイトから{len}バイト/
文字分
strptime({format}, {timestring})
数値 {timestring} を unix タイムスタンプに
変換
strridx({haystack}, {needle} [, {start}])
数値 {haystack}内の最後の{needle}のインデッ
クス
strtrans({expr}) 文字列 文字列を表示可能に変更
strutf16len({string} [, {countcc}])
数値 {string} の UTF-16 コード単位の数
strwidth({expr}) 数値 文字列{expr}の表示セル幅
submatch({nr} [, {list}]) 文字列/リスト
":s" やsubstitute()における特定のマッチ
substitute({expr}, {pat}, {sub}, {flags})
文字列 {expr}の{pat}を{sub}に置換え
swapfilelist() リスト 'directory' 内で見つかったスワップファイ
ルのリスト
swapinfo({fname}) 辞書 スワップファイル {fname} に関する情報
swapname({buf}) 文字列 バッファ{buf}のスワップファイル名
synID({lnum}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得
synIDattr({synID}, {what} [, {mode}])
文字列 syntax ID{synID}の属性{what}を取得
synIDtrans({synID}) 数値 {synID}の翻訳されたsyntax ID
synconcealed({lnum}, {col}) リスト Conceal の情報
synstack({lnum}, {col}) リスト {lnum}行{col}列目における構文IDの
スタック
system({expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果
systemlist({expr} [, {input}]) リスト シェルコマンド{expr}の出力結果
tabpagebuflist([{arg}]) リスト タブページ内のバッファ番号のリスト
tabpagenr([{arg}]) 数値 現在または最後のタブページの番号
tabpagewinnr({tabarg} [, {arg}])
数値 タブページ内の現在のウィンドウの番号
tagfiles() リスト 使用しているタグファイルのリスト
taglist({expr} [, {filename}]) リスト {expr}にマッチするタグのリスト
tan({expr}) 浮動小数点数 {expr}のタンジェント
tanh({expr}) 浮動小数点数 {expr}のハイパボリックタンジェ
ント
tempname() 文字列 テンポラリファイルの名前
term_dumpdiff({filename}, {filename} [, {options}])
数値 2 つのダンプ間の差分を表示する
term_dumpload({filename} [, {options}])
数値 スクリーンダンプの表示
term_dumpwrite({buf}, {filename} [, {options}])
なし 端末ウィンドウの内容をダンプする
term_getaltscreen({buf}) 数値 代替スクリーンフラグを取得する
term_getansicolors({buf}) リスト GUI カラーモードでの ANSI パレットを取
得する
term_getattr({attr}, {what}) 数値 属性 {what} の値を取得する
term_getcursor({buf}) リスト 端末のカーソル位置を取得する
term_getjob({buf}) ジョブ 端末に関連付けられているジョブを取得す
る
term_getline({buf}, {row}) 文字列 端末から 1 行のテキストを取得する
term_getscrolled({buf}) 数値 端末のスクロール数を取得する
term_getsize({buf}) リスト 端末のサイズを取得する
term_getstatus({buf}) 文字列 端末の状態を取得する
term_gettitle({buf}) 文字列 端末のタイトルを取得する
term_gettty({buf}, [{input}]) 文字列 端末の tty 名を取得する
term_list() リスト 端末バッファのリストを取得する
term_scrape({buf}, {row}) リスト 端末スクリーンの行を取得する
term_sendkeys({buf}, {keys}) なし キー入力を端末に送信する
term_setansicolors({buf}, {colors})
なし GUI カラーモードでの ANSI パレットを設
定する
term_setapi({buf}, {expr}) なし terminal-api の関数名プリフィックス
を設定する
term_setkill({buf}, {how}) なし 端末のジョブを停止するためのシグナルを
設定する
term_setrestore({buf}, {command}) なし 端末を復元するためのコマンドを設定する
term_setsize({buf}, {rows}, {cols})
なし 端末のサイズを設定する
term_start({cmd} [, {options}]) 数値 端末ウィンドウを開きジョブを実行する
term_wait({buf} [, {time}]) 数値 スクリーンが更新されるのを待つ
terminalprops() 辞書 端末のプロパティ
test_alloc_fail({id}, {countdown}, {repeat})
なし メモリの確保を失敗にさせる
test_autochdir() なし 起動時に 'autochdir' を有効にする
test_feedinput({string}) なし キー入力を入力バッファに追加する
test_garbagecollect_now() なし テスト用に直ちにメモリを解放する
test_garbagecollect_soon() なし テスト用にすぐにメモリを解放する
test_getvalue({string}) 任意 内部変数の値を取得する
test_gui_event({event}, {args}) 真偽値 テスト用の GUI イベントを発生させる
test_ignore_error({expr}) なし 特定のエラーを無視する
test_mswin_event({event}, {args})
真偽値 テスト用の MS-Windows イベントを生成
test_null_blob() Blob テスト用のnull値
test_null_channel() チャネル テスト用のnull値
test_null_dict() 辞書 テスト用のnull値
test_null_function() Funcref テスト用のnull値
test_null_job() ジョブ テスト用のnull値
test_null_list() リスト テスト用のnull値
test_null_partial() Funcref テスト用のnull値
test_null_string() 文字列 テスト用のnull値
test_option_not_set({name}) なし オプション設定フラグをリセットする
test_override({expr}, {val}) なし Vimの内部処理を置き換えてテストする
test_refcount({expr}) 数値 {expr}の参照カウントを取得
test_setmouse({row}, {col}) なし テスト用にマウス位置を設定する
test_settime({expr}) なし テスト用に現在の時刻を設定する
test_srand_seed([{seed}]) なし srand() のテスト用に種を設定する
test_unknown() 任意 テスト用のunknown値
test_void() 任意 テスト用のvoid値
timer_info([{id}]) リスト タイマーに関する情報
timer_pause({id}, {pause}) なし タイマーの一時停止または一時停止解除
timer_start({time}, {callback} [, {options}])
数値 タイマーを作成する
timer_stop({timer}) なし タイマーを停止する
timer_stopall() なし すべてのタイマーを停止する
tolower({expr}) 文字列 文字列{expr}を小文字にする
toupper({expr}) 文字列 文字列{expr}を大文字にする
tr({src}, {fromstr}, {tostr}) 文字列 {src}中に現れる文字{fromstr}を{tostr}
に変換する
trim({text} [, {mask} [, {dir}]])
文字列 {text} から {mask} 内の文字を切り取る
trunc({expr}) 浮動小数点数 浮動小数点数{expr}を切り詰める
type({expr}) 数値 変数{expr}の型
typename({expr}) 文字列 {expr}の型を表す
undofile({name}) 文字列 {name}に対するアンドゥファイルの名前
undotree([{buf}]) リスト バッファ {buf} のアンドゥファイルツリー
uniq({list} [, {func} [, {dict}]])
リスト リストから隣接した重複を削除
utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
数値 {string} のバイト {idx} の UTF-16 イン
デックス
values({dict}) リスト {dict}の値のリスト
virtcol({expr} [, {list} [, {winid}])
数値/リスト
カーソルまたはマークのスクリーン桁
virtcol2col({winid}, {lnum}, {col})
数値 スクリーン上の文字のバイトインデックス
visualmode([{expr}]) 文字列 最後に使われたビジュアルモード
wildmenumode() 数値 'wildmenu' モードが有効かどうか
win_execute({id}, {command} [, {silent}])
文字列 ウィンドウ{id}で{command}を実行する
win_findbuf({bufnr}) リスト {bufnr}を含むウィンドウを見つける
win_getid([{win} [, {tab}]]) 数値 {tab}の{win}のウィンドウIDを取得
win_gettype([{nr}]) 文字列 ウィンドウ {nr} の型
win_gotoid({expr}) 数値 ID {expr}のウィンドウに行く
win_id2tabwin({expr}) リスト ウィンドウIDからタブとウィンドウnr取得
win_id2win({expr}) 数値 ウィンドウIDからウィンドウnr取得
win_move_separator({nr}) 数値 ウィンドウの垂直セパレータの移動
win_move_statusline({nr}) 数値 ウィンドウのステータス行の移動
win_screenpos({nr}) リスト ウィンドウ {nr} のスクリーン位置を取得
する
win_splitmove({nr}, {target} [, {options}])
数値 ウィンドウ {nr} を {target} の分割へ移
動
winbufnr({nr}) 数値 ウィンドウ{nr}のバッファ番号
wincol() 数値 カーソル位置のウィンドウ桁
windowsversion() 文字列 MS-Windows OS のバージョン
winheight({nr}) 数値 ウィンドウ{nr}の高さ
winlayout([{tabnr}]) リスト タブ {tabnr} 内のウィンドウの配置
winline() 数値 カーソル位置のウィンドウ行
winnr([{expr}]) 数値 現在のウィンドウの番号
winrestcmd() 文字列 ウィンドウサイズを復元するコマンド
winrestview({dict}) なし 現在のウィンドウのビューを復元
winsaveview() 辞書 現在のウィンドウのビューを保存
winwidth({nr}) 数値 ウィンドウ{nr}の幅を取得
wordcount() 辞書 バイト/文字/単語の統計情報を取得
writefile({object}, {fname} [, {flags}])
数値 行の Blob または list をファイルに
書き込む
xor({expr}, {expr}) 数値 ビット排他的論理和
==============================================================================
2. 詳細 builtin-function-details
すべての関数はここにはなく、いくつかはそのカバーしている特別な機能のヘルプファ
イルへ移動している。
戻り値の型は Vim9-script の型を指定する。vim9-types を参照。
abs({expr}) abs()
{expr} の絶対値を返す。{expr} の値が浮動小数点数である場合は浮
動小数点数を返す。{expr} がNumberに変換可能な場合は数値が戻
り値になる。それ以外の場合はエラーメッセージを表示し、-1
を返す。
例:
method としても使用できる:
戻り値の型: Number または Float。{expr} による
acos({expr}) acos()
{expr} の逆余弦 (アークコサイン) をラジアンで返す。
値は [0, pi] の範囲の浮動小数点数 (Float)。
{expr} は [-1, 1] の範囲の浮動小数点数 (Float) か数値
(Number) でなければならない。それ以外の場合、acos() は "nan"
を返す。
例:
method としても使用できる:
戻り値の型: Float
add({object}, {expr}) add()
List または Blob {object}の末尾に項目{expr}を追加する。結
果の List か Blob を返す。例:
を連結するにはextend()を使う。
{object}が Blob の場合、{expr}は数値でなければならない。
他の位置に要素を追加するにはinsert()を使う。
{object} が List または Blob でない場合は 1 を返す。
method としても使用できる:
戻り値の型: list<{type}> (指定された Listによる) または
Blob
and({expr}, {expr}) and()
二つの引数のビット論理積。引数は数値に変換される。リスト、辞
書、浮動小数点数を指定するとエラーになる。
or() および xor() も参照。
例:
戻り値の型: Number
append({lnum}, {text}) append()
{text}がリストListのときは、各要素をカレントバッファの{lnum}
行目以降にテキストとして追加する。
リストでないときは、{text}をテキストとしてカレントバッファの
{lnum}行目以降にテキストとして追加する。
要素としてどの型でも受け入れて文字列に変換される。
{lnum}は0でもよく、その場合は1行目の前に行を挿入する。
{lnum}はgetline()と同様に扱われる。
失敗した場合は1を返す({lnum}が不正な範囲であるか、メモリ不足)。
成功なら0を返す。{text} が空のリストの場合、{lnum} の値に関係
なくゼロが返される。
Vim9 script では不正な引数であるか負数の場合は結果がエラーに
なる。例:
リストの後に method としても使用でき、ベースは第2引数として
渡される:
戻り値の型: Number
appendbufline({buf}, {lnum}, {text}) appendbufline()
append() と同様、ただしバッファ {buf} にテキストを追加する。
この関数は、ロードされたバッファに対してのみ機能する。必要であ
れば、最初に bufload() を呼び出すこと。
{buf} の使い方については bufname() を参照。
{lnum} は行番号をその下に追加する。Note: line() の使用は、追
加対象のバッファではなくカレントバッファに適用される。バッファ
の最後に追加するには "$" を使用する。他の文字列値はサポートさ
れない。
成功時には 0 が返り、失敗時には 1 が返る。
Vim9 script では不正な {lnum} を与えられた時エラーになる。
{buf} が有効なバッファでない、もしくは {lnum} が有効でない場
合、エラーメッセージが与えられる。例:
いため、無効な {lnum} に対してエラーは発生しない。
リストの後に method としても使用でき、ベースは第2引数として
渡される:
戻り値の型: Number
argc([{winid}]) argc()
引数リスト内の、ファイルの数を返す。arglistを参照。
{winid} が指定されていない場合は、カレントウィンドウの引数リス
トが使われる。
{winid} が -1 の場合、グローバル引数リストが使われる。
もしくは、{winid} は、引数リストが使用されるウィンドウを指定す
る: ウィンドウ番号またはウィンドウID。引数{winid} が無効な場合
は -1 を返す。
戻り値の型: Number
argidx()
argidx() 引数リスト内の現在のインデックスを返す。最初のファイルは0とな
る。argc() - 1が最後のファイルとなる。arglistを参照。
戻り値の型: Number
arglistid()
arglistid([{winnr} [, {tabnr}]])
引数リストの ID を返す。値は引数リストを区別するための数値であ
る。ゼロはグローバル引数リストを意味する。arglist 参照。
引数が無効な場合は -1 を返す。
引数を指定しなかった場合はカレントウィンドウが使われる。
{winnr} を指定した場合はカレントタブページ内のウィンドウが使わ
れる。
{winnr} と {tabnr} を指定した場合は指定したタブページ内のウィ
ンドウが使われる。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
戻り値の型: Number
argv()
argv([{nr} [, {winid}]])
結果は引数リスト内の、{nr}番目のファイル。arglist を参照。
"argv(0)" は一番最初のファイルを示す。例:
ト arglist 全体を返す。
引数{winid} はウィンドウIDを指定する。
Vimのコマンドライン引数については、v:argv を参照。
{nr} 番目の引数が引数リストに存在しない場合は、空の文字列を返
す。{winid} 引数が無効な場合は、空のリストを返す。
戻り値の型: String
asin({expr}) asin()
{expr} の逆正弦 (アークサイン) をラジアンで返す。
値は [-pi/2, pi/2] の範囲の浮動小数点数 (Float)。
{expr} は [-1, 1] の範囲の浮動小数点数 (Float) か数値
(Number) でなければならない。
{expr} が [-1, 1] の範囲外の場合は "nan" を返す。{expr} が
Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
assert_ 関数群はここに文書化されている: assert-functions-details
atan({expr}) atan()
{expr} の逆正接(アークタンジェント)の主値を浮動小数点数
Float で返す。主値はラジアンで[-pi/2, +pi/2]の範囲内にある。
{expr} は Float か Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
atan2({expr1}, {expr2}) atan2()
{expr1} / {expr2} の逆正接 (アークタンジェント) をラジアンで返
す。値は [-pi, pi] の範囲の浮動小数点数 (Float)。
{expr1} と {expr2} は浮動小数点数 (Float) か数値 (Number)
でなければならない。
{expr} または {expr2} が Float または Number でない場合は
0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
autocmd_add({acmds}) autocmd_add()
自動コマンドと自動コマンドグループを追加する。
引数 {acmds} は、各項目が以下のオプション項目を持つ辞書のリス
トである:
bufnr バッファローカルな自動コマンドを追加するための
バッファ番号。この項目を指定した場合、
"pattern" 項目は無視される。
cmd この自動コマンドイベントに対して実行する Ex コ
マンド
event 自動コマンドイベント名。autocmd-events を参
照。これは、単一のイベント名の文字列またはイベ
ント名のリストのどちらかである。
group 自動コマンドグループ名。autocmd-groups を参
照。グループが存在しない場合は作成される。指定
しない場合、または空の場合は、デフォルトのグ
ループが使用される。
nested 真偽値フラグ。v:true に設定すると、ネストされ
た自動コマンドを追加する。autocmd-nested を
参照。
once 真偽値フラグ。v:true に設定すると、一度だけ実
行される自動コマンドが追加される。
autocmd-once を参照。
pattern 自動コマンドパターン文字列。autocmd-patterns
を参照。"bufnr" 項目が存在する場合、この項目は
無視される。単一のパターンを持つ文字列またはパ
ターンのリストにすることができる。
replace 真偽値フラグ。v:true に設定すると、指定された
自動コマンドイベントおよびグループに関連付けら
れたすべてのコマンドが削除され、{cmd} が追加さ
れる。これは、グループ内の自動コマンドイベント
に対して同じコマンドを複数回追加することを避け
るのに役立つ。
成功した場合は v:true を返し、失敗した場合は v:false を返す。
例:
method としても使用できる:
戻り値の型: vim9-boolean
autocmd_delete({acmds}) autocmd_delete()
自動コマンドと自動コマンドグループを削除する。
引数 {acmds} は、各項目が以下のオプション項目を持つ辞書のリス
トである:
bufnr バッファローカルな自動コマンドを削除するための
バッファ番号。この項目を指定した場合、
"pattern" 項目は無視される。
cmd この自動コマンドイベントに対して実行する Ex コ
マンド
event 自動コマンドイベント名。autocmd-events を参
'*' の場合、このグループ内のすべての自動コマン
ドイベントが削除される。
group 自動コマンドグループ名。autocmd-groups を参
照。指定なし、または空の場合は、デフォルトのグ
ループが使用される。
nested ネストされた自動コマンドの場合は v:true に設定
する。autocmd-nested を参照。
once 一度だけ実行される自動コマンドの場合は v:true
に設定する。autocmd-once を参照。
pattern 自動コマンドパターン文字列。autocmd-patterns
を参照。"bufnr" 項目が存在する場合、この項目は
無視される。
{acmds} エントリで {group} のみが指定されており、{event}、
{pattern}、および {cmd} が指定されていない場合、その自動コマン
ドグループは削除される。
成功した場合は v:true を返し、失敗した場合は v:false を返す。
例:
method としても使用できる:
戻り値の型: vim9-boolean
autocmd_get([{opts}]) autocmd_get()
自動コマンドの List を返す。{opts} が指定されていない場合は、
すべてのグループのすべてのイベントの自動コマンドを返す。
オプションの {opts} 辞書引数は、以下の項目をサポートする:
group 自動コマンドグループ名。指定した場合、このグ
ループで定義されている自動コマンドのみを返す。
指定したグループが存在しない場合は、エラーメッ
セージが表示される。空の文字列を設定すると、デ
フォルトの自動コマンドグループが使用される。
event 自動コマンドイベント名。指定した場合、このイベ
ントに定義された自動コマンドのみを返す。"*" を
設定すると、すべてのイベントの自動コマンドが返
される。指定したイベントが存在しない場合は、エ
ラーメッセージが表示される。
pattern 自動コマンドパターン。指定した場合、このパター
ンに定義されている自動コマンドのみを返す。
上記 3 つの組み合わせを {opts} で指定できる。
返されたリストの各辞書には次の項目が含まれる:
bufnr バッファローカルな自動コマンドの場合、自動コマ
ンドが定義されているバッファ番号。
cmd 自動コマンドに対して実行されたコマンド。
event 自動コマンドイベント名。
group 自動コマンドグループ名。
nested Booleanフラグ。ネストされた自動コマンドの場合、
v:true が設定される。autocmd-nested を参照。
once Booleanフラグ。自動コマンドが 1 回だけ実行され
る場合は、v:true に設定する。autocmd-once を
参照。
pattern 自動コマンドパターン。バッファローカルな自動コ
マンドの場合、"<buffer=n>" の形式になる。
グループ内の自動コマンドイベントに複数のコマンドがある場合、コ
マンドごとに個別の項目が返される。
指定されたグループ、イベント、またはパターンを持つ自動コマンド
が見つからない場合は、空のリストを返す。
例:
method としても使用できる:
戻り値の型: list<dict<any>>
balloon_gettext() balloon_gettext()
バルーン内の現在のテキストを返す。文字列に対してのみ使用され、
リストには使用されない。バルーンが存在しない場合は空の文字列を
返す。
戻り値の型: String
balloon_show({expr}) balloon_show()
{expr} をバルーン内に表示する。GUI では {expr} は文字列として
扱われる。端末では {expr} をバルーンの行を含むリストとしてもよ
い。{expr} がリストでない場合、balloon_split() で分割される。
{expr} が空文字列の場合、既存のバルーンは削除される。
例:
想定される使用方法は、バルーンの内容の取得が 'balloonexpr' か
ら開始されることである。そこから非同期メソッドを呼び出し、コー
ルバックから balloon_show() を呼び出す。'balloonexpr' 自身は
空文字列かプレースホルダーを返すことができる。例えば、
"loading..."。
バルーンを表示できないときは何も起こらず、エラーメッセージも表
示されない。
{Vimが +balloon_eval もしくは +balloon_eval_term 機能付き
でコンパイルされたときのみ有効}
戻り値の型: Number
balloon_split({msg}) balloon_split()
文字列 {msg} をバルーン内で表示される行に分割する。カレントウィ
ンドウサイズ用に分割され、デバッガ出力を表示するために最適化さ
れる。
分割された行の List を返す。エラーが発生した場合は空のリスト
を返す。
method としても使用できる:
{+balloon_eval_term 機能付きでコンパイルされたときのみ有効}
戻り値の型: list<any> または list<string>
bindtextdomain({package}, {path}) bindtextdomain()
特定の {package} を {path} にバインドし、gettext() 関数を使っ
てパッケージの言語固有の翻訳を取得できるようにする。{path} は
翻訳のディレクトリ名である。package-create を参照。
成功した場合は v:true を返し、失敗した場合 (メモリ不足) は
v:false を返す。
戻り値の型: vim9-boolean
blob2list({blob}) blob2list()
Blob {blob} の各バイトを数値として保持するリストを返す。例:
method としても使用できる:
戻り値の型: list<any> または list<number>
browse()
browse({save}, {title}, {initdir}, {default})
ファイル選択ダイアログを起動。"has("browse")" がTRUEを返すと
き (幾つかのGUIバージョンに限定)だけ利用可能。
入力フィールドの意味は:
{save} TRUEならば書込み用ファイルの選択
{title} ダイアログのタイトル
{initdir} ダイアログの始まるディレクトリ
{default} ファイル名の省略値
ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ
ラウジングが不可能ならば、空文字列が戻ってくる。
戻り値の型: String
browsedir({title}, {initdir}) browsedir()
ディレクトリ選択ダイアログを起動。"has("browse")" がTRUEを返
すとき(幾つかのGUIバージョンに限定)だけ利用可能。
ディレクトリ選択ダイアログがないシステムにおいてはファイル選択
ダイアログが使われる。その場合は、指定したいディレクトリの中の
ファイルを選択すること。
入力フィールドの意味は:
{title} ダイアログのタイトル
{initdir} ダイアログの始まるディレクトリ
ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ
ラウジングが不可能ならば、空文字列が戻ってくる。
戻り値の型: String
bufadd({name}) bufadd()
バッファリストに {name} (文字列でなければならない) という名前
でバッファを追加する。
もし、ファイル {name} 用のバッファが既に存在した場合、そのバッ
ファの番号を返す。そうでなければ、新しく作られたバッファの番号
を返す。{name} が空の文字列だったときは新しいバッファが常に作
成される。
バッファには 'buflisted' が設定されず、まだロードされない。
バッファにテキストを追加するにはこれを使用する:
method としても使用できる:
戻り値の型: Number
bufexists({buf}) bufexists()
結果は数値で、{buf}と呼ばれるバッファが存在すればTRUEとなる。
{buf}が数値の場合、バッファ番号とみなされる。数値の 0 はカレン
トウィンドウの代替バッファである。
{buf}が文字列の場合、バッファ名に正確にマッチしなければならな
い。名前として以下のものが許される:
- カレントディレクトリからの相対パス。
- フルパス。
- 'buftype' が "nofile" であるバッファの名前
- URL名。
バッファリストにないバッファも検索される。
Note :buffersの出力で、ヘルプファイルは短い名前でリストされ
ているが、bufexists()は長い名前でないと見つけることができない。
ある名前を bufexists() に与えて非零になったとしても、その名前
をコマンド :buffer に与える際には expand() を使って展開し
なければならない場合がある。特に MS-Windows の "c:\DOCUME~1"
という 8.3 名形式において。
代替ファイル名が存在するかを判定するには "bufexists(0)" を使う。
method としても使用できる:
戻り値の型: Number
buffer_exists()
以前の名前: buffer_exists().
buflisted({buf}) buflisted()
戻り値は数値で、{buf}と呼ばれるバッファが存在しリストされてい
る ('buflisted' オプションがオンになっている) ならば結果は
TRUEとなる。引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
戻り値の型: Number
bufload({buf}) bufload()
バッファ{buf}がロードされていることを保証する。バッファの名前
が既存のファイルを参照しているときは、そのファイルが読み込まれ
る。そうでなければバッファは空になる。もし既にバッファが読み込
まれていれば、変更はない。バッファがファイルに関連していない場
合、ファイルは読み取られない (例: 'buftype' が "nofile" の場
合)。
バッファのファイルに対して既存のスワップファイルがある場合、ダ
イアログなしで、バッファはロードされる。
引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
戻り値の型: Number
bufloaded({buf}) bufloaded()
戻り値は数値で、{buf}と呼ばれるバッファが存在しロード済み(ウィ
ンドウに表示されているか、隠されているかは問わない)ならば結果
はTRUEとなる。引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
戻り値の型: Number
bufname([{buf}]) bufname()
戻り値はバッファの名前。バッファ名はコマンド :ls で表示され
るものとほとんど同じだが、例えば "[No Name]" などの特殊名は使
用しない。
{buf}が省略された場合は、カレントバッファが使われる。
{buf}が数値ならば、その番号のバッファ名が返される。0は現在の
ウィンドウの代替バッファを意味する。{buf}が文字列ならば、バッ
ファ名に対してファイル名マッチング file-pattern を行うパター
ンとなる。このマッチングは常に、'magic' をセットし 'cpoptions'
を空にした状態で行われる。複数マッチしてしまった場合には空文字
列が返される。
"" や "%" は現在のバッファを意味し、"#" は代替バッファを意味す
る。
完全マッチのものが優先され、完全マッチがなければ、バッファ名の
先頭でのマッチ、末尾でのマッチ、中間でのマッチが探される。完全
マッチのみを探すには、パターン先頭に "^" を、末尾に "$" をつけ
る。
まずバッファリストにあるバッファが探される。そこで1個だけマッ
チが見つかればそれを返す。次にバッファリストにないものが探され
る。
{buf}が文字列のときに、それをバッファ番号として使いたいならば、
0を足すことによって強制的に数値にすることができる:
バッファが存在しないか名前を持っていない場合には、空文字列が返
される。
戻り値の型: String
buffer_name()
以前の名前: buffer_name().
bufnr([{buf} [, {create}]]) bufnr()
結果はバッファの番号。バッファ番号はコマンド :ls で表示され
るものと同様。{buf}の使い方は前述の bufname() を参照。
バッファが存在しない場合-1が返される。ただし、{create}が与えら
れて真であるときは、バッファリストに載せない新しいバッファを作
成し、その番号を返す。例:
新しいバッファを作成するには、bufadd() を使用する。
bufnr("$")は最後のバッファを意味する:
となる。Note そのバッファ番号より小さいバッファ番号を持つ(ハズ
の)バッファが、必ずしも全て存在するとは限らない。なぜなら
":bwipeout" がバッファを消すことができるからだ。バッファが存在
するかテストするにはbufexists()を使う。
method としても使用できる:
戻り値の型: Number
以前の名前: buffer_number(). buffer_number()
last_buffer_nr()
bufnr("$")の以前の名前: last_buffer_nr().
bufwinid({buf}) bufwinid()
その結果は数値で、バッファ{buf}に関連付けられた最初のウィンド
ウの window-ID。{buf}の使い方は前述のbufname()を参照。バッ
ファ{buf}が存在しないか、ウィンドウが無い場合は、-1が返される。
例:
現在のタブページのみを処理する。さらにウィンドウを探すために
は、win_findbuf() を参照。
method としても使用できる:
戻り値の型: Number
bufwinnr({buf}) bufwinnr()
bufwinid() と同様だが、バッファの window-ID ではなくウィン
ドウ番号を返す。バッファ{buf} が存在しないか、ウィンドウが無い
場合には-1を返す。例:
この番号はCTRL-W_wや ":wincmd w" :wincmdで使える。
method としても使用できる:
戻り値の型: Number
byte2line({byte}) byte2line()
カレントバッファの先頭から{byte}番目の文字が、何行目に含まれる
かを返す。これにはカレントバッファの 'fileformat' に依存した、
改行文字も含まれる。先頭の文字にはバイトカウント1が与えられる。
line2byte()とgoと:gotoも参照。
{byte} 値が無効な場合は -1 を返す。
method としても使用できる:
戻り値の型: Number
{+byte_offset 機能付きでコンパイルされたときのみ有効}
byteidx({expr}, {nr} [, {utf16}]) byteidx()
文字列{expr}の{nr}番目の文字のバイトインデックスを返す。最初の
文字の{nr}は0であり、そして戻り値は0となる。
マルチバイト文字がない時は{nr}に等しい値を返す。
合成文字はまとめて計算される。合成文字のバイト数はそれが合成さ
れているベース文字のバイト数に合算される。合成文字を別々に数え
るには byteidxcomp() を参照。
{utf16} が存在し、TRUE の場合、{nr} は文字インデックスとしてで
はなく、文字列 {expr} 内の UTF-16 インデックスとして使用され
る。UTF-16 インデックスは、文字列が 16 ビットワードでエンコー
ドされたときのインデックスである。指定された UTF-16 インデック
スが文字の途中 (例: 4 バイト文字) にある場合、その文字の最初の
バイトのバイトインデックスが返される。詳細は
string-offset-encoding を参照。
例 :
{expr}が{nr}文字以下の場合は-1を返す。
{expr}がちょうど{nr}文字の場合は文字列の長さ(バイト単位)を返す。
バイトインデックスから文字インデックスと UTF-16 インデックスを
それぞれ取得する方法については、charidx() と utf16idx() を
参照。
例:
method としても使用できる:
戻り値の型: Number
byteidxcomp({expr}, {nr} [, {utf16}]) byteidxcomp()
byteidx() と同じだが、合成文字は個別にカウントされる。例:
足すと 3 バイト)。2 番目は 1 が出力される ('e' は 1 バイト)。
'encoding' に Unicode が設定されているときのみ byteidx() と違っ
た動作になる。
method としても使用できる:
戻り値の型: Number
call({func}, {arglist} [, {dict}]) call() E699
リストList{arglist}の要素を引数として関数{func}を呼ぶ。
{func}はFuncrefでも関数の名前でもよい。
a:firstlineとa:lastlineにはカレント行が代入される。
呼び出した関数の戻り値を返す。
{dict}は "dict" 属性つきの関数用で、これがローカル変数 "self"
に代入される。Dictionary-functionを参照。
method としても使用できる:
戻り値の型: any。{func} による
ceil({expr}) ceil()
{expr} 以上となる最小の整数を浮動小数点数 Float で返す
(切り上げる)。
{expr} は Float か Number に評価されなければならない。
例:
{expr} が Float または Number でない場合は 0.0 を返す。
method としても使用できる:
戻り値の型: Float
ch_ 関数群はここに文書化されている: channel-functions-details
changenr() changenr()
最も最近の変更の番号を返す。:undolistで表示される番号と同じ
であり、:undoコマンドの引数として使うことができる。
変更を行った直後ではその変更の番号となる。redoを行った直後は
redoされた変更の番号となる。undoを行った直後はundoされた変更よ
り1小さい番号になる。
undo リストが空の場合は 0 を返す。
戻り値の型: Number
char2nr({string} [, {utf8}]) char2nr()
{string}の最初の文字のASCIIコードを返す。例:
用される。"utf-8" の場合の例:
合成文字は個別の文字として扱われる。
nr2char() はこの逆を行う。
文字列を文字の番号のリストに変換するには:
{string} が String でない場合は 0 を返す。
method としても使用できる:
戻り値の型: Number
charclass({string}) charclass()
{string} 内の最初の文字の文字クラスを返す。
文字クラスは次のいずれか:
0 空白
1 区切り文字
2 単語文字 ('iskeyword' に依存)
3 絵文字
その他 Unicode 固有のクラス
クラスはパターンと単語単位の移動で使われる。
{string} が String でない場合は 0 を返す。
戻り値の型: Number
charcol({expr} [, {winid}]) charcol()
col() と同様だが {expr} で返す桁位置がバイトインデックスでは
なく文字インデックスになる。
例:
5行目のテキスト "여보세요" の '세' にカーソルがある状態:
method としても使用できる:
戻り値の型: Number
charidx()
charidx({string}, {idx} [, {countcc} [, {utf16}]])
{string} 内の {idx} バイト目の文字インデックスを返す。最初の文
字のインデックスは0。
マルチバイト文字がない時は {idx} に等しい値を返す。
{countcc} がないもしくは FALSE の場合、合成文字は分割して文
字としてカウントせず、先行する基底文字に合成文字のバイト長が足
される。
{countcc} が TRUE の場合、合成文字は分割した文字としてカウン
トされる。
{utf16} が存在し、TRUE の場合、{idx} はバイトインデックスとし
てではなく、文字列 {expr} 内の UTF-16 インデックスとして使用さ
れる。
引数が無効な場合、または {idx} バイト未満の場合は -1 を返す。
ちょうど {idx} バイトの場合は、文字列の長さが文字数で返される。
第 1 引数が文字列でない場合、第 2 引数が数値でない場合、第 3
引数が 0 または 1 でない場合、エラーが発生し、-1 が返される。
文字インデックスからバイトインデックスを取得するには
byteidx()と byteidxcomp() を、文字インデックスから UTF-16
インデックスを取得するには、utf16idx() を参照。
詳細については string-offset-encoding を参照。
例:
method としても使用できる:
戻り値の型: Number
chdir({dir}) chdir()
{dir}は文字列でなければならない。
現在の作業ディレクトリを {dir} に変更する。ディレクトリの変更
範囲は、カレントウィンドウのディレクトリによって異なる:
- カレントウィンドウにウィンドウローカルディレクトリ
(:lcd)がある場合は、ウィンドウローカルディレクトリ
を変更する。
- それ以外の場合、カレントタブページにローカルディレク
トリ(:tcd)がある場合は、タブページのローカルディレ
クトリを変更する。
- それ以外の場合、グローバルディレクトリを変更する。
成功した場合は、前の作業ディレクトリを返す。ディレクトリを復元
するには、これを別の chdir() に渡すこと。
失敗した場合は、空の文字列を返す。
例:
method としても使用できる:
戻り値の型: String
cindent({lnum}) cindent()
'cindent' で使われるのと同じC言語用のインデント規則に従った場
合の{lnum}行目のインデント量を返す。
インデント量はスペースで数えられ、'tabstop' の値は関係ない。
{lnum}はgetline()の場合と同様に扱われる。
{lnum}が無効な場合は -1 を返す。
C-indentingを参照。
method としても使用できる:
戻り値の型: Number
clearmatches([{win}]) clearmatches()
matchadd() と コマンド :match によりカレントウィンドウに定
義されたマッチをすべて消去する。
{win} が指定されれば、カレントウィンドウではなく指定されたウィ
ンドウあるいはウィンドウID を対象にする。
method としても使用できる:
戻り値の型: Number
col({expr} [, {winid}]) col()
戻り値は数値で、{expr} で与えられる位置の桁番号(バイトインデッ
クス)。
受け入れられる位置については、getpos() を参照。
{expr} が "$" の場合、カーソル行の末尾を意味するため、結果は
カーソル行のバイト数に 1 を加えた数になる。
さらに {expr} は [lnum, col] という行番号と桁番号のリストで
あってもよい。col に "$" を指定して、ある行の最後の桁を取得す
るのにとても便利である。"lnum" か "col" が範囲外である場合は
0 を返す。
オプションの {winid} 引数を指定すると、カレントウィンドウでは
なく、そのウィンドウの値が取得される。
行番号を取得するにはline()を使う。行番号と桁番号両方を取得す
るにはgetpos()を使う。
画面上の桁番号を取得するにはvirtcol()を使う。文字の位置を取
得するには charcol() を使う。
Note 現在のファイルのマークしか使えないことに注意。
例:
先頭の桁は1になる。{expr} が無効な場合か、{winid} のウィンドウ
が見つからない場合は 0 を返す。
大文字のマークは他のバッファを指しているかもしれない。
'virtualedit' が有効なとき、カーソルが行末を越えていると、桁番
号は行の長さより 1 大きい値を返す。また、<Cmd> マッピングを使
うとカーソルが移動しないので、挿入モードで桁を取得するのに使え
る:
method としても使用できる:
戻り値の型: Number
complete({startcol}, {matches}) complete() E785
挿入モード補完の候補を設定する。
挿入モードでのみ使用できる。CTRL-R = (i_CTRL-R を参照)と組み
合わせてマッピングを作る必要がある。CTRL-Oの後や、<expr>マッピ
ングの中では正しく動作しない。
{startcol}は補完すべき単語の開始位置を示す、行内のバイトオフセッ
トである。その位置からカーソルまでのテキストが補完すべき単語と
なる。
{matches}はリストListでなければならない。リストの各要素が1つ
の候補となる。この要素として許される値については
complete-itemsを参照。
'completeopt' の "longest" は無視される。
Note この関数を呼んだ後は補完を停止させるようなテキストの挿入
をしないように注意しなければならない。
この関数で設定した候補は普通の挿入モード補完と同じ様にCTRL-Nと
CTRL-Pで選択できる。設定されていればポップアップメニューが表示
される。ins-completion-menuを参照。
例:
挿入されてしまわないように空文字列を返していることに注意。
method としても使用でき、ベースは第2引数として渡される:
戻り値の型: Number
complete_add({expr}) complete_add()
候補のリストに{expr}を追加する。'completefunc' で指定された関
数の中でのみ使われる。
失敗したときは0を返す(空文字列かメモリ不足)。候補が追加された
ときは1を返し、その候補が既にリストに存在するときは2を返す。
{expr}の説明についてはcomplete-functionsを参照。'omnifunc'
が返すリストと同じである。
method としても使用できる:
戻り値の型: Number
complete_check() complete_check()
補完候補を探している間にキーがタイプされたかどうか確認する。補
完の検索に時間がかかる場合に使われる。候補の検索を中断しようと
しているときはTRUEを返す。そうでないときは0を返す。
'completefunc' で指定された関数の中でのみ使われる。
戻り値の型: Number
complete_info([{what}]) complete_info()
挿入モードの補完に関する情報を辞書 Dictionary で返す。
ins-completion を参照。
要素は以下の通り:
mode 現在の補完モード名の文字列。
値は complete_info_mode を参照。
pum_visible ポップアップメニューが表示されているなら TRUE
pumvisible() を参照。
items 補完マッチのリスト。各要素は "word", "abbr",
"menu", "kind", "info", "user_data" を含む辞書。
complete-items を参照。
selected 選択された補完候補のインデックス。最初のイン
デックスが 0。どの補完候補も選択されていなけれ
ば -1 (入力したテキストのみ表示、もしくは <Up>
や <Down> キーを利用した最後の補完後に選択しな
かった場合)。
inserted 入力された文字列。[現時点では未実装]
complete_info_mode
mode の値は:
"" 補完モードでない
"keyword" キーワード補完 i_CTRL-X_CTRL-N
"ctrl_x" CTRL-X のみが入力された i_CTRL-X
"scroll" i_CTRL-X_CTRL-E か i_CTRL-X_CTRL-Y
でのスクロール
"whole_line" 行全体補完 i_CTRL-X_CTRL-L
"files" ファイル名補完 i_CTRL-X_CTRL-F
"tags" タグ補完 i_CTRL-X_CTRL-]
"path_defines" 定義補完 i_CTRL-X_CTRL-D
"path_patterns" インクルード補完 i_CTRL-X_CTRL-I
"dictionary" 辞書補完 i_CTRL-X_CTRL-K
"thesaurus" 同義語補完 i_CTRL-X_CTRL-T
"cmdline" Vim コマンドライン補完 i_CTRL-X_CTRL-V
"function" ユーザー定義補完 i_CTRL-X_CTRL-U
"omni" オムニ補完 i_CTRL-X_CTRL-O
"spell" スペル補完 i_CTRL-X_s
"eval" complete() 補完
"unknown" その他の内部モード
オプショナル引数としてリスト {what} が与えられると、 {what} に
ある項目のみが返る。{what} 内のサポートされていない項目は無視
される。
ポップアップメニューの位置とサイズを取得するには、
pum_getpos() を参照。CompleteChanged イベント中に v:event
でも利用可能である。
エラー時は空の Dictionary を返す。
例:
method としても使用できる:
戻り値の型: dict<any>
confirm()
confirm({msg} [, {choices} [, {default} [, {type}]]])
confirm()はユーザーに選択させるためのダイアログを提供する。戻
り値は選択した番号になる。最初の選択肢が1である。
Note: confirm()は、ダイアログサポートを有効にしてコンパイルし
た時にだけ動作する。+dialog_con, +dialog_con_gui と
+dialog_gui を参照。
ダイアログには{msg}に加えて{choices}の選択肢が表示される。
{choices}が指定されない、または空の場合は選択肢 "&OK" が表示さ
れる(使用している言語に翻訳される)。
{msg}は文字列で '\n' を改行として使用できる。幾つかのシステム
では、長すぎる行は自動的に折り返される。
{choices}は文字列で、個々の選択肢は '\n' によって区切られる。
例:
"Cancel" を選択するのに 'c' をタイプすることができる。ショート
カットキーは最初の文字である必要は無い:
の最初の文字が使われる。大文字小文字は区別されない。
省略可能な引数{default}は<CR>キーを叩いた時に選択される選択肢
の番号を指定する。最初の選択肢をデフォルトにするならば1を使用
する。デフォルトを設定したくないのならば0を使用する。
{default}を省略した場合、1が使用される。
省略可能な文字列引数{type}はダイアログの種類を指定する。これは
GTK, Mac, Motif, Win32 の GUI でアイコンを指定するのに使われ
る。"Error", "Question", "Info", "Warning", "Generic" のうちど
れか一つを指定する。以上のうちの先頭の文字だけで指定できる。
{type} が省略された場合、"Generic" が使用される。
ユーザーが<Esc>やCTRL-Cや、その他の割りこみキーでダイアログを
中断した場合、confirm()は0を返す。
例:
'guioptions' の 'v' フラグに依存する。もしも 'v' フラグが含ま
れているのなら、ボタンは常に垂直に配置される。そうでなければ水
平に配置しようと試みられる。水平配置がうまくマッチしない場合
は、垂直配置が使われる。幾つかのシステムでは常に水平配置が使わ
れる。
method としても使用できる:
戻り値の型: Number
copy({expr}) copy()
{expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ
ピーの間に違いはない。
{expr}がリストListの場合は浅いコピーを作る。つまり元のリスト
を変更してもコピーは変更されず、逆も同じである。しかし要素は共
通で、片方の要素に対し変更を加えると、もう一方の要素も変更され
る。
辞書はリストと同様な方法でコピーされる。
deepcopy()も参照。
method としても使用できる:
戻り値の型: any。{expr} による
cos({expr}) cos()
{expr} の余弦(コサイン)をラジアンで浮動小数点数 Float で返す。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
cosh({expr}) cosh()
{expr} の双曲線余弦 (ハイパボリックコサイン) を返す。
値は [1, inf] の範囲の浮動小数点数 (Float)。
{expr} は浮動小数点数 (Float) か 数値 (Number) でなければ
ならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
count({comp}, {expr} [, {ic} [, {start}]]) count() E706
文字列String、リストListまたは辞書Dictionary {comp} の中
に値 {expr} が何回現れるかを返す。
{start} が指定されたときはそのインデックスの要素から検索を開始
する。{start} は {comp} がリストの場合のみ使用できる。
{ic} が指定され、TRUEの場合は大文字・小文字は区別されない。
{comp} が文字列の場合、オーバーラップしていない {expr} の回数
が返される。{expr} が空文字列の場合は 0 が返る。
method としても使用できる:
戻り値の型: Number
cscope_connection()
cscope_connection([{num} , {dbpath} [, {prepend}]])
cscope接続が存在するかどうか判定する。引数が1個も指定されな
かった場合、戻り値は以下のようになる:
0, cscopeが利用できない(コンパイル時に無効化されている)
またはcscope接続が存在しない場合
1, 1個以上のcscope接続が存在する場合
引数が与えられた場合は次のようになる。{num}は、接続の存在を確
認する際のマッチング方法を指定する。
{num} 存在確認の方法
----- ------------------------------
0 引数なしの場合と同じ (例: "cscope_connection()")。
1 {prepend}を無視し、{dbpath}に部分マッチを行う。
2 {prepend}を無視し、{dbpath}に部分マッチを行う。
3 {prepend}を使用し、{dbpath}と{prepend}に部分マッチを行
う。
4 {prepend}を使用し、{dbpath}と{prepend}に完全マッチを行
う。
Note: 以上のどの場合も文字列の比較は大文字・小文字を区別する。
例: ":cs show" の表示が以下のようになったとする:
実行 戻り値
---------- ----------
戻り値の型: Number
cursor({lnum}, {col} [, {off}]) cursor()
cursor({list})
{lnum}行目の{col}桁目(バイトで数える)にカーソルを移動させる。
桁番号{col}は1から始まる。
引数に {list} が 1 つだけ指定された場合は、それは要素が 2 個か
3 個、または 4 個の List として解釈される:
[{lnum}, {col}]
[{lnum}, {col}, {off}]
[{lnum}, {col}, {off}, {curswant}]
これは getpos() や getcurpos() の戻り値とほぼ同じである。
違いは最初の要素がないこと。
{col} を文字数として使用してカーソルを配置するには、
setcursorcharpos() を使う。
この関数を呼んでもジャンプリストは変更されない。
{lnum} は getline() と同様に使用されるが、{lnum} がゼロの場
合、カーソルはカレント行に留まる。
{lnum}がバッファの行数よりも大きい場合は、最後の行へ移動する。
{col}がその行のバイト数より大きい場合は、その行の最後の文字へ
移動する。
{col}が0の場合は、カレント桁に留まる。
{curswant} が与えられた場合は、縦方向移動の優先的列番号として
使われる。指定がない場合は {col} が使われる。
'virtualedit' が有効のとき、{off}は文字の先頭からの画面上のオ
フセットを指定する。例えば、<Tab>の中の位置や最後の文字より後
などへも移動できる。
カーソルを移動できたときは 0 を、できなかったときは-1 を返す。
method としても使用できる:
戻り値の型: Number
debugbreak({pid}) debugbreak()
主にデバッグしているプログラムに割り込むために使用される。プロ
セス {pid} に対して SIGTRAP を発生させる。関係のないプロセスへ
の振る舞いは未定義である。terminal-debugger を参照。
{MS-Windows 上でのみ有効}
正常にプログラムが中断された場合、TRUE を返す。それ以外の場
合は FALSE を返す。
method としても使用できる:
戻り値の型: Number
deepcopy({expr} [, {noref}]) deepcopy() E698
{expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ
ピーの間に違いはない。
{expr}がリストListの場合は完全なコピーを作る。つまり元のリス
トを変更してもコピーは変更されず、逆も同じである。要素の1つが
リストまたは辞書であるときは、再帰的にコピーが作成される。
よってコピーの要素に変更を加えても元のリストの要素は変更を受け
ない。
辞書はリストと同様な方法でコピーされる。
{noref}が省略された、または0のとき、含まれているリストや辞書は
1度だけコピーされる。全ての参照はこのただ1つのコピーを指す。
{noref}が1の場合、リストや辞書は現れるたびに新しいコピーが作ら
れる。そのため循環参照があるとdeepcopy()は失敗する。
E724
ネストは100レベルまで可能である。それ以上参照を繰り返している
要素があると、{noref}が1の場合は失敗する。
copy()も参照。
method としても使用できる:
戻り値の型: any。{expr} による
delete({fname} [, {flags}]) delete()
{flags}を指定しないもしくは{flags}を空で指定した場合: ファイル
{fname}を削除する。
これは{fname}がシンボリックリンクの時でも動作し、シンボリック
リンクは、それが示すものではなく、リンク自身が削除される。
{flags}が "d" の場合: ディレクトリ{fname}を削除する。
これはディレクトリ{fname}が空でない場合は失敗する。
{flags}が "rf" の場合: ディレクトリ{fname}、その中に含むすべて
のものを再帰的に削除する。気をつけて!
Note: MS-Windowsでは、使用中のディレクトリを削除することはでき
ない。
結果は数値であり、削除に成功すれば 0/false、削除に(部分的にで
も)失敗すれば -1/true である。
リスト List から項目を削除するには remove() を使う。
バッファから行を削除するには:deleteもしくはdeletebufline()
を使う。
method としても使用できる:
戻り値の型: Number
deletebufline({buf}, {first} [, {last}]) deletebufline()
{first} から {last} (を含む) までの行をバッファ {buf} から削除
する。{last} が省略されている場合、{first} 行だけを削除する。
成功時には 0 が返され、失敗時には 1 が返される。
この関数は、ロードされたバッファに対してのみ機能する。必要であ
れば、最初に bufload() を呼び出すこと。
{buf} の使い方は前述の bufname() を参照。
{first} および {last} は getline() と同様に扱われる。Note:
line() の使用はカレントバッファを参照する。バッファ {buf} 内
の最後の行を参照するには "$" を使用する。
method としても使用できる:
戻り値の型: Number
did_filetype()
did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれば、
TRUEが返る。スクリプトのFileTypeイベントが、複数回呼び出され
るのを回避するのに使える。 FileType
:setf FALLBACK が使用されている場合は FALSE を返す。
他のファイルへ移動すると、このカウンタはリセットされる。よって
実際は、カレントバッファに対してFileTypeイベントが発生したかど
うかを判定する。他のバッファを開く自動コマンドの中でこの関数を
使って 'filetype' を設定し、構文ファイルを読み込むために使え
る。
戻り値の型: Number
diff({fromlist}, {tolist} [, {options}]) diff()
{fromlist} と {tolist} の文字列の差分を含む文字列またはリスト
を返す。Vim の内部 diff ライブラリを使用して差分を計算する。
E106
{options} のオプションの "output" 項目は、返される diff 形式を
指定する。次の値がサポートされている:
indices 開始インデックスと終了インデックスのリストと、
各 diff hunk (差分の塊) 内の文字列数を返す。
unified unified diff 出力を文字列として返す。
これがデフォルトである。
{options} の "output" 項目が "indices" の場合、リストが返され
る。各リスト項目には、各 diff hunk (差分の塊) の以下の項目を含
む辞書が含まれている:
from_idx この diff hunk の {fromlist} 内の開始インデッ
クス。
from_count この diff hunk で追加/削除/変更された
{fromlist} 内の文字列数。
to_idx この diff hunk の {tolist} 内の開始インデック
ス。
to_count この diff hunk で追加/削除/変更された {tolist}
内の文字列数。
{options} 辞書引数は diff オプション ('diffopt' と同様) も指定
し、以下の項目をサポートする:
algorithm 使用する diff アルゴリズムを指定する辞
書。サポートされている真偽値項目は
"myers", "minimal", "patience",
"histogram"。
context diff context の長さ。デフォルトは 0。
iblank 行がすべて空白の変更は無視する。
icase テキストの大小文字の変更を無視する。
indent-heuristic 内部 diff ライブラリのインデントヒュー
リスティックを使用する。
iwhite 空白の量の変化を無視する。
iwhiteall すべての空白の変更を無視する。
iwhiteeol 行末の空白の変更を無視する。
これらのオプションの詳細については、'diffopt' を参照。
Unified diff を計算するために、{fromlist} のすべての項目は改行
区切りを用いてひとつの文字列に連結される。{tolist} も同様であ
る。Unified diff の出力は行番号を用いる。
{fromlist} と {tolist} が同一の場合、空のリストまたは文字列を
返す。
例:
その他の例については、diff-func-examples を参照
method としても使用できる:
戻り値の型: String または list<dict<number>> または
list<any>。{options} による
diff_filler({lnum}) diff_filler()
{lnum}行目より上にある削除行の数を返す。削除行とは、差分モード
で他方のウィンドウにテキストが挿入されていることを表す行のこと
である。削除行は表示はされているが、実際にはバッファに存在しな
い。
{lnum}はgetline()と同様に扱われる。つまり "." はカレント行と
なり、"'m" はマークmを表す。
カレントウィンドウが差分モードでないときは0を返す。
method としても使用できる:
戻り値の型: Number
diff_hlID({lnum}, {col}) diff_hlID()
差分モードで{lnum}行{col}桁(バイト単位)の位置のハイライトIDを
返す。カレント行に変更がないときは0を返す。
{lnum}はgetline()と同様に扱われる。つまり "." はカレント行と
なり、"'m" はマークmを表す。
先頭の桁の{col}は1となり、最初の行の{lnum}は1となる。
ハイライトIDはsynIDattr()を使って構文情報を得るために使える。
method としても使用できる:
戻り値の型: Number
digraph_get({chars}) digraph_get() E1214
{chars} のダイグラフを返す。これは正確に2文字の文字列である必
要がある。もし {chars} が2文字ちょうどでない、もしくは {chars}
のダイグラフがないなら、エラーとなり空文字列を返す。
必要であれば文字はUnicodeから 'encoding' に変換される。変換が
利用可能である必要があり、失敗することがある。
digraph_getlist() も参照。
例:
method としても使用できる:
戻り値の型: String
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_getlist([{listall}]) digraph_getlist()
ダイグラフのリストを返す。引数 {listall} が真で与えられたとき、
デフォルトのダイグラフを含む全ダイグラフを返す。それ以外はユー
ザー定義のダイグラフのみを返す。
必要であれば文字はUnicodeから 'encoding' に変換される。変換が
利用可能である必要があり、失敗することがある。
digraph_get() も参照。
例:
method としても使用できる:
戻り値の型: list<list<string>>
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_set({chars}, {digraph}) digraph_set()
ダイグラフ {chars} をリストに追加する。{chars} は2文字の文字列
の必要がある。{digraph} はUTF-8でエンコードされた1文字の文字
列。 E1215
合成文字は無視されないことに注意。この関数は :digraphs と同
様だがスペース始まりのダイグラフを登録するのに便利である。
この関数はダイグラフ digraph が登録されたなら v:true を返す。
もし失敗したなら、エラーメッセージとともに v:false を返す。
一度に複数のダイグラフを登録したいなら、digraph_setlist() が
使える。
例:
method としても使用できる:
戻り値の型: vim9-boolean
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_setlist({digraphlist}) digraph_setlist()
digraph_set() と同じだが複数のダイグラフを一度に追加できる。
{digraphlist} はリストのリストで、各リストは digraph_set()
と同じ {chars} と {digraph} の2つの文字列を持つ。 E1216
例:
これは以下と似ている:
フは追加されない点が異なる。
method としても使用できる:
戻り値の型: vim9-boolean
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
echoraw({string}) echoraw()
{string}を表示不可能な文字を含み、そのまま出力する。これは端末
コードを出力するために使える。例えば、modifyOtherKeysを無効に
するためには:
こと。
戻り値の型: Number
empty({expr}) empty()
{expr}が空なら1を、そうでなければ0を返す。
- リストListまたは辞書Dictionaryは要素を1個も持たないとき
空とみなされる。
- 文字列 String はその長さが0のとき空とみなされる。
- 数値と浮動小数点数は値が0のとき空とみなされる。
- v:false, v:none, v:null は空であり、v:true は空では
ない。
- ジョブ Job は開始に失敗したときは空である。
- チャネル Channel は閉じられていると空である。
- Blob はその長さが0のときは空である。
- Object はオブジェクトの empty() メソッドが (もし存在し) 真
を返すとき空である。object-empty()
長いリストに対しては長さを0と比較するよりこちらの方がずっと高
速である。
method としても使用できる:
戻り値の型: Number
environ() environ()
すべての環境変数を辞書として返す。このように環境変数が存在する
かどうかを確認できる:
文字を区別しないためにこれを使用すること:
戻り値の型: dict<string>
err_teapot([{expr}]) err_teapot()
RFC 2324 の実装に必要な 418 番のエラーを生成する。
{expr} が提示され、それが TRUE である場合、エラー 503 が与えら
れ、コーヒーが一時的に使用できないことを示す。
{expr} が提示される場合は文字列でなければならない。
戻り値の型: Number
escape({string}, {chars}) escape()
{string}内に現れる{chars}の文字をバックスラッシュでエスケープ
する。例:
method としても使用できる:
戻り値の型: String
eval()
eval({string}) {string}を評価し、値を返す。string()の戻り値を元の値に戻すの
に非常に便利である。数値、浮動小数点数、文字列、Blob およびそ
れらの複合に対して動作する。実際に存在する関数への Funcref
に対しても動作する。Vim9 script においては、完全修飾名から
enum の値を取得するのに使用できる。
method としても使用できる:
戻り値の型: any。{string} による
eventhandler() eventhandler()
イベントハンドラの中では1を返す。つまり、ユーザーの文字入力を
待っている間に、ファイルをドラッグ&ドロップするなど割り込みさ
れたことを表す。このときは対話的なコマンドは使えない。イベント
ハンドラの中でないときは0を返す。
戻り値の型: Number
executable({expr}) executable()
{expr}という名前の実行可能ファイルが存在するかどうか判定する。
{expr}は引数を何もつけないプログラム名でなければならない。
executable()は$PATHと通常のプログラム検索ディレクトリを参照す
る。
PATHEXT
MS-Windowsでは ".exe"、".bat" などの拡張子は含めても含めなくて
もよい。省略された場合は$PATHEXTの拡張子を検索する。よって
"foo.exe" が存在しなければ "foo.exe.bat" が見つかることもあり
うる。$PATHEXTが存在しなければ ".com;.exe;.bat;.cmd" が使われ
る。$PATHEXTにドットだけを含めると拡張子なしの名前を検索するこ
とができる。'shell' がUnixシェルのように思われるときは、{expr}
の後に拡張子をつけない名前も検索される。
MS-Windowsではファイルが存在するかどうかだけを判定し、それが
ディレクトリでないことや、それが本当に実行可能であるかどうかは
判定されない。
MS-Windows では、Vim の実行可能ファイルと同じディレクトリにあ
る実行可能ファイルは常に見つかる。このディレクトリは $PATH に
追加されているので、実行しても動作するはずだ win32-PATH。
NoDefaultCurrentDirectoryInExePath
MS-Windows では、通常、Vim のカレント作業ディレクトリにある実
行可能ファイルも見つかるが、
$NoDefaultCurrentDirectoryInExePath 環境変数を設定することでこ
れを無効にすることができる。
戻り値は数値:
1 存在する
0 存在しない
-1 このシステム上では実装されていない
exepath() は、実行可能ファイルの絶対パスを取得するのに使用す
ることができる。
method としても使用できる:
戻り値の型: Number
execute({command} [, {silent}]) execute()
単一あるいは複数のExコマンドを実行して、出力を文字列として返
す。
{command} は文字列かリストを使える。リストの場合はそれらの行は
1 行ずつ実行される。
これは多かれ少なかれ以下と同等である:
オプションの {silent} の引数は以下の値を取ることができる:
"" :silent を使わない
"silent" :silent を使う
"silent!" :silent!を使う
デフォルトは "silent" である。Note "silent!" は redir とは異
なり、エラーメッセージは削除されることに注意すること。もし外部
コマンドを使って画面がおかしくなる様であれば、代わりに
system()を使うことができる。
E930
{command} の中のどこかで:redirを使うことができない。
行のリストを得るために、出力に split() を使うことができる:
現在のウィンドウとは別のウィンドウでコマンドを実行するには
win_execute() を使用すること。
再帰的に使用されると、再帰呼び出しの出力は、上位呼び出しの出力
に含まれない。
method としても使用できる:
戻り値の型: String
exepath({expr}) exepath()
{expr} が実行可能ファイルで、それが絶対パス、相対パス、または
$PATH の中に存在する場合は、そのフルパスを返す。
Note: {expr} が "./" で開始している場合はカレントディレクトリ
が使われる。Vim のパスを得る場合に問題になるかもしれない:
はなかった場合は空文字列が返る。
method としても使用できる:
戻り値の型: String
exists({expr}) exists()
結果は数値で、変数{expr}が存在すればTRUEとなり、そうでなけれ
ば0となる。
Note: コンパイルされる :def 関数は実行時に評価が完了する。
exists_compiled() を使うことでコンパイル時に式が評価される。
ある機能がサポートされているか判定するにはhas()を使う。
ファイルが存在するかを判定するにはfilereadable()を使う。
引数{expr}は文字列で次のうちいずれかである。
varname 内部変数(internal-variables)
dict.key curly-braces-names, Dictionaryの要
list[i] 素、Listの要素、クラスとオブジェクト
import.Func のメソッド、import要素などに対しても動
class.Func 作する。
object.Func コンパイルされる :def 関数内のローカ
class.varname ル変数には動作しない。
object.varname また関数参照が使用できるため、Vim9
script の関数でも動作する。
インデックスの評価で無効な式であるとエ
ラーメッセージが出る可能性があることに
注意。例:
0
&option-name Vimオプション(存在するかだけを判定し、
本当に動作するかは判定しない)
+option-name 動作するVimオプション
$ENVNAME 環境変数(空文字列と比較することでも判
定できる)
*funcname 組み込み関数(functions参照)かユーザー
が定義した関数(user-functions参照)の
内、実装済みのもの。また Funcref であ
る変数に対しても動作する。
?funcname 実装されているかもしれない組み込み関数。
"funcname" が有効かチェックするのに利
用できる。
:cmdname exコマンド: 組み込みコマンド、ユーザー
定義コマンド、コマンド修飾子:command。
戻り値:
1 コマンド名の先頭に一致
2 コマンド名に完全一致
3 複数のユーザー定義コマンドに一致
コマンドが定義されているかどうかを判定
するには、必ず戻り値が2であるかを確認
すること。
:2match :2match コマンド。
:3match :3match コマンド (ただし、内部使用の
ために予約されているため、おそらく使用
すべきではない)
#event このイベントに対する自動コマンド定義
#event#pattern このイベントとパターンに対する自動コマ
ンド定義(パターンは文字そのままに解釈
され、自動コマンドのパターンと1文字ず
つ比較される)
#group 自動コマンドグループが存在するか
#group#event このグループとイベントに対して自動コマ
ンドが定義されているか
#group#event#pattern
このグループ、イベント、パターンに対す
る自動コマンド定義
##event このイベントに対する自動コマンドがサ
ポートされているか
例:
い。
ある少数の場合では無視されるが、名前の後に余計な文字があっては
ならない。将来はもっと厳格になる可能性があるので、現在許される
からといって頼ってはならない。
正しい例:
Note 引数は変数そのものではなく、文字列でなければならない。例
えば、次は動作しない:
を渡し、それが存在するかどうか判定してしまう。
method としても使用できる:
戻り値の型: String
exists_compiled({expr}) exists_compiled()
exists() と同様だがコンパイル時に評価を行う。関数にあるブロッ
クが使うとエラーになってしまう場合にスキップするのに便利である:
義だとエラーになる。
{expr} は文字列定数の必要がある。 E1232
:def 関数の中で使える。 E1233
引数やローカル変数のチェックには機能しない。
戻り値の型: String
exp({expr}) exp()
{expr} の指数を返す。
値は [0, inf] の範囲の浮動小数点数 (Float)。
{expr} は浮動小数点数 (Float) か数値 (Number) でなければな
らない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
expand({string} [, {nosuf} [, {list}]]) expand()
ワイルドカードと{string}内の特殊なキーワードを展開する。
'wildignorecase' が適用される。
{list} が指定されその値がTRUEなら、結果はリストで返される。
そうでない場合は結果は文字列で返される。その場合、複数のマッチ
があるときはそれらは文字 <NL> で区切られる。[Note: バージョン
5.0 では空白文字が用いられ、スペースを含むファイル名について問
題を引き起こしていた]
展開が失敗した場合、結果は空文字列となる。{string} が
'%'、'#'、'<' で始まらない限り、存在しないファイル名というの
は、結果の文字列には含まれない。下記を参照のこと。
:terminal のウィンドウに対しては、'%' は '!' とそれに続く実
行中のコマンドまたはシェルに展開される。 terminal-bufname
{string} が '%' か '#' か '<' で始まる場合には、展開は
cmdline-specialのように、変換子を受け付け、それらに関連付け
られた変換が施される。ここに簡単な概略を示す:
% 現在のファイル名
# 代替バッファのファイル名
#n n番の代替バッファのファイル名
<cfile> カーソルの下のファイル名
<afile> autocmdのファイル名
<abuf> autocmdのバッファ名
<amatch> autocmdのマッチした名称
<cexpr> カーソル下のC言語の式
<sfile> 取り込み(source)中のファイル名、関数名
<slnum> 取り込み(source)中の行番号または関数内
の行番号
<sflnum> スクリプトファイルの行番号。関数内でも
同様。
<SID> "<SNR>123_" ここで "123" は現在のスク
リプトのID <SID>
<script> 取り込み(source)中のファイル名、あるい
は現在の関数が定義されたスクリプトファ
イル名
<stack> コールスタック
<cword> カーソル下の単語(word)
<cWORD> カーソル下の単語(WORD)
<client> 最後に受け取ったメッセージの{clientid}
server2client()
変換子:
:p フルパス名を展開
:h ヘッド(ディレクトリ)
:t テイル(ファイル名だけ)
:r 拡張子が削除される
:e 拡張子だけ
例:
キストは無視されることに注意。従ってこれは正しくない:
い参照名であることにも注意が必要。もしも "<cfile>" が
"~/.cshrc" であった場合、"~/" を展開してホームディレクトリにす
るために、もう一度expand()を呼び出す必要がある:
変数と変換子の間には空白文字があってはならない。関数
fnamemodify()が通常のファイル名の変換には使用可能である。
カレントバッファや代替バッファの名前が未定義のときに '%' や
'#' を使うと空文字列になる。"%:p" を名無しのバッファに使用した
場合、結果はカレントディレクトリに '/' が付加されたものになる。
'verbose' が設定されていると、'%', '#' および <> の項目を展開
できない場合、エラーメッセージが表示される。
'%' や '#' や '<' で始まらない{string}は、コマンドラインのファ
イル名と同じように展開される。{nosuf}引数にTRUEを指定しない
限り、'suffixes' と 'wildignore' が使用される。
存在しないファイルの名前も結果の文字列に含まれる。"**" を使う
とディレクトリツリーを検索できる。例えば、カレントディレクトリ
以下にある全ての "README" を見つけるには次のようにする:
expand() はシェルの持っている変数や環境変数を展開できる。しか
し展開のためにシェルを起動するかもしれないので速度が遅くなるこ
とがある。expr-env-expand 参照。
展開された変数はファイル名のリストのように扱われる。環境変数を
展開できないときはそのままになる。よって、
":echo expand('$FOOBAR')" の結果は "$FOOBAR" となる。
存在するファイルを探すにはglob()を参照。外部コマンドの「生
の」実行結果を扱うにはsystem()を参照。
method としても使用できる:
戻り値の型: String または list<string>。{list} による
expandcmd({string} [, {options}]) expandcmd()
:edit などのExコマンドに対しておこなわれているように、文字列
{string} の特殊な項目を展開する。これは {string} の中のどこで
も、expand() のような特殊なキーワードと環境変数を展開する。
"~user" および "~/path" は冒頭でのみ展開される。
引数の辞書 {options} は以下の項目をサポートする:
errmsg TRUEに設定された場合、展開中に遭遇したエラーの
エラーメッセージを表示する。デフォルトでは、エ
ラーメッセージは表示されない。
展開された文字列を返す。展開中にエラーに遭遇した場合、変更され
ていない {string} を返す。
例:
method としても使用できる:
戻り値の型: String または list<string>。{list} による
extend({expr1}, {expr2} [, {expr3}]) extend()
{expr1}と{expr2}は両方ともリストListであるか、両方とも辞書
Dictionariesでなければならない。
両方ともリストであるなら、{expr2}を{expr1}に付け加える。
{expr3}が指定された場合は、{expr1}の第{expr3}番目の要素の前に
{expr2}の要素を挿入する。{expr3}が0のときは最初の要素の前に挿
入する。{expr3}がlen({expr1})に等しいときは末尾に{expr2}が付け
加えられる。
例:
数はリストの元の長さと同じである。
例として {expr3} が 1 のとき、最初の要素の N 個の新しいコピー
が挿入される(ここで N はリストの元の長さ)。
リストに1個の要素を加えるにはadd()を使う。2つのリストを連結
して新しいリストを作るには演算子+を使う:
両方とも辞書である場合:
{expr2}の全要素を{expr1}に加える。
{expr1}と{expr2}で共通のキーがある場合は、{expr3}によって動作
が決まる:
{expr3} = "keep" の場合: {expr1}の値そのままにする
{expr3} = "force" の場合: {expr2}の値で上書きする
{expr3} = "error" の場合: エラーメッセージを表示する E737
{expr3}が省略された場合は "force" と同じになる。
{expr2}が空でないならば{expr1}が変更される。必要ならば最初に
{expr1}のコピーを作ること。
{expr2}は変更されない。
{expr1} がロックされていて、かつ {expr2} が空でない場合は操作
は失敗する。
{expr1}を返す。エラー時は 0 を返す。
method としても使用できる:
戻り値の型: list<{type}> または dict<{type}>。{expr1} および
{expr2} による。エラーの場合: Number
extendnew({expr1}, {expr2} [, {expr3}]) extendnew()
extend() と同様だが、{expr1} へ要素を追加する代わりに、新し
いリストまたは辞書が作成されて返される。{expr1} は変更されな
い。
戻り値の型: list<{type}> または dict<{type}>。{expr1} および
{expr2} による。エラーの場合: Number
feedkeys({string} [, {mode}]) feedkeys()
{string}中の各文字を、あたかもマッピングまたはユーザーによって
タイプされたかのように、処理キューに入れる。
デフォルトではこれらの文字は先行入力バッファの末尾に付け足され
る。そのためマッピングを展開している途中であれば、これらの文字
はマッピングを展開した後に来ることになる。他の文字の前に挿入す
るには、'i' フラグを使用する。それらはマッピングからの任意の文
字の前の挿入の次に実行される。
この関数は、{string}中の文字が処理されるまでは待たない。
特殊なキーを{string}に含めるにはダブルクォートと "\..." 記法を
使う(expr-quoteを参照)。例えば、feedkeys("\<CR>")は<Enter>
キーの押下をシミュレートする。しかしfeedkeys('\<CR>')とすると、
この文字の通り5文字を挿入する。
役に立つかもしれない特別なコードは <Ignore> だ。それは何もせず
に文字の待機を終了する。 <Ignore>
{mode}は以下の文字フラグを含む文字列:
'm' キーをマップ展開する。これが既定である。{mode}が省略さ
れたときは、挿入されたキーはマップ展開の対象になる。
'n' キーをマップ展開しない。
't' キーをタイプされたかのように扱う。そうでない場合は
マッピングから展開されたかのように扱われる。これは
undoや折り畳みの展開などで違いが現れる。
'L' 低レベル入力。UnixまたはGUIを使用している場合にのみ機
能する。キーは端末から来ているかのように使われる。他の
フラグは使用されない。 E980
CTRL-C で割り込み時、かつ 't' が含まれていると内部
"got_int" フラグが設定される。
'i' 追加する代わりに文字を挿入する。(上記参照)
'x' 先行入力が空になるまでコマンドを実行する。
これは ":normal!" を使うのと似ている。
'x' なしで数回feedkeys()を呼んだ後、'x' ありで1回
({string}が空でも可能) feedkeys()を呼ぶことで先行入力
をすべて実行できる。Note Vimが挿入モードを終了したとき
は、スクリプト続行前の文字入力待ちによる立ち往生を避け
るために、<Esc>が入力されたかのように振る舞う。
Note コマンドの実行中に feedkeys() を再帰的に呼び出し
た場合、最後の呼び出しですべての先行入力が消費される。
'c' 実行時のスクリプトのコンテキストを削除し、旧来のスクリ
プトの構文が適用され、"s:var" が動作しないようにする。
Note 供給される文字列がスクリプトコンテキストを設定す
る場合でも、これは適用されることに注意。
'!' 'x' と一緒に使用すると挿入モードを終了しない。タイマー
が少し後で挿入モードを終了するように設定されているとき
にテストで使用できる。CursorHoldIのテストに便利である。
戻り値は常に0。
method としても使用できる:
戻り値の型: String または list<string>。{list} による
filecopy({from}, {to}) filecopy()
名前 {from} で指定されたファイルを {to} にコピーする。結果は数
値で、ファイルのコピーが成功した場合は TRUE、失敗した場合は
FALSE になる。
名前 {to} のファイルがすでに存在する場合は失敗する。
Note ディレクトリは処理されないことに注意 (まだ)。
この関数は sandbox では使用できない。
method としても使用できる:
戻り値の型: Number
filereadable({file}) filereadable()
結果は数値で、{file}というファイルが存在し、読み込むことが可能
ならばTRUEとなる。ファイル{file}が存在しないかディレクトリ
だった場合には、結果はFALSEとなる。引数{file}は文字列として
使えればどのような表現でもよい。
ファイルが読み込み可能でなくてもよい場合にはglob()を使う。
{file} はそのまま使用されるため、最初にワイルドカードを展開す
ることを推奨する:
method としても使用できる:
戻り値の型: Number
file_readable()
以前の名前: file_readable().
filewritable({file}) filewritable()
結果は数値で、{file}というファイルが存在し、書き込むことが可能
ならば1となる。ファイル{file}が存在しないか書き込み不可能であ
る場合には、結果は0となる。{file}がディレクトリであり、書き込
み可能な場合、結果は2となる。
method としても使用できる:
戻り値の型: Number
filter({expr1}, {expr2}) filter()
{expr1}はリスト List、文字列 String、Blob、辞書
Dictionary でなければならない。
{expr1}の各要素に対して{expr2}を評価し、その結果が0もしくは偽
ならばリストまたは辞書からその要素を削除する。Blob の各バイ
トや文字列 String の各文字も同様に行う。
{expr2}は文字列stringまたは関数参照Funcrefでなければならな
い。
{expr2}が文字列の場合、{expr2}の内部ではv:valが現在の要素の
値を保持している。辞書の場合はv:keyが現在の要素のキーを保持
しており、リストの場合はv:keyが現在の要素のインデックスを保
持している。Blob の場合は v:key が現在のバイトのインデック
スになる。文字列 String の場合は v:key が現在の文字のイン
デックスになる。
例:
Note {expr2}は式を表す文字列である。バックスラッシュを二重に
しなくても済むようにliteral-stringを使うとよいだろう。ただし
その場合はシングルクォートを二重にしなければならない。
{expr2}がFuncrefの場合は、2つの引数で呼び出される:
1. 現在の要素のキーまたはインデックス。
2. 現在の要素の値。
関数は、その要素を保持すべきときはTRUEを返さなければならな
い。リストの奇数版目の要素を保持する例:
Vim9 script では結果が true、false、0もしくは1になる。
それ以外の値では結果が型エラーになる。
リストや辞書でのこの操作はその場で(in-place)行われる。変更した
くない場合は最初にコピーを作ること:
{expr1}のリスト List または辞書 Dictionary をフィルターし
た結果、もしくは新規の Blob か文字列 String を返す。{expr2}
を評価している最中にエラーが発生した場合は、{expr1}内のそれ以
降の要素の処理は行われない。{expr2}が関数参照の場合、関数が
"abort" フラグつきで定義されていない限り、関数内のエラーは無視
される。
method としても使用できる:
戻り値の型: String, Blob, list<{type}> または
dict<{type}>。{expr1} による
finddir({name} [, {path} [, {count}]]) finddir()
{path}から{name}という名前のディレクトリを探す。ディレクトリを
上方・下方のどちらにも再帰的に検索できる。{path}の記法について
はfile-searchingを参照。
最初に見つかったディレクトリのパスを返す。そのディレクトリがカ
レントディレクトリの下にある場合は相対パスを返す。そうでなけれ
ば絶対パスを返す。
{path}が省略されたとき、または空のときはオプション 'path' の値
が使われる。
省略可能な引数{count}が指定されたときは、最初に見つかったディ
レクトリでなく、{count}番目に見つかったディレクトリを返す。
{count}が負の場合は、見つかったディレクトリ全てのリストList
を返す。
ディレクトリが見つからない場合は空の文字列を返す。
これはexコマンド:findによく似ている。
method としても使用できる:
戻り値の型: String
findfile({name} [, {path} [, {count}]]) findfile()
finddir()と同様だが、ディレクトリでなくファイルを検索する。
'suffixesadd' が適用される。
例:
"tags.vim" を見つけるまで再帰的に検索する。
method としても使用できる:
戻り値の型: String
flatten({list} [, {maxdepth}]) flatten()
リスト {list} を {maxdepth} の深さまで平坦化する。{maxdepth}
が無い場合の結果は {maxdepth} が非常に巨大な数であるのように、
リスト List からネストを除去する。
{list} は変更が入るので、それを望まないなら flattennew() を
使うこと。
Vim9 script では flatten() は使用できないため、常に
flattennew() を使う必要がある。
E900
{maxdepth} はリストのネストをどれだけ深く変更するかを意味する。
{maxdepth} が0なら {list} は変更されない。
{maxdepth} は正の数でなければならない。
エラーがあったときは数値の0を返す。
例:
method としても使用できる:
戻り値の型: list<{type}>
flattennew({list} [, {maxdepth}]) flattennew()
flatten() と同様だが最初に {list} のコピーを作る。
戻り値の型: list<{type}>
float2nr({expr}) float2nr()
{expr} の小数点以下を切り捨てて Number に変換する。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0 を返す。
{expr} の値が Number の範囲外の場合、結果は 0x7fffffff また
は -0x7fffffff になる(64ビット数値が有効化されている場合は
0x7fffffffffffffff または -0x7fffffffffffffff)。
NaN は -0x80000000 になる(64ビット数値が有効化されている場合は
-0x8000000000000000)。
例:
method としても使用できる:
戻り値の型: Number
floor({expr}) floor()
{expr} 以下の最大の整数を Float で返す(切り捨て)。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
fmod({expr1}, {expr2}) fmod()
{expr1} / {expr2} の余りを返す (割り算が表現できなくても)。
{expr2} が非ゼロなら {expr1} - i * {expr2} の結果を返す (i は
戻り値が {expr1} と同じ符号を持ちその絶対値が {expr2} よりも小
さくなるような値)。{expr2} がゼロならゼロが返る。戻り値の型は
浮動小数点数 (Float)。
{expr1} と {expr2} は浮動小数点数 (Float) か数値 (Number)
でなければならない。
{expr1} または {expr2} が Float または Number でない場合は
0.0 を返す。
例:
method としても使用できる:
戻り値の型: Float
fnameescape({string}) fnameescape()
コマンド引数のファイル名として使うために {string} をエスケープ
する。'%' や '|' など特別な意味を持つ全ての文字がバックスラッ
シュでエスケープされる。
特別な文字とは、ほとんどのシステムにおいて
" \t\n*?[{`$\\%#'\"|!<" である。ファイル名にバックスラッシュが
現れるシステムにおいては 'isfname' の値に依存する。
先頭の '+' と '>' もエスケープされる(:edit と :write の引
数では特別な意味を持つ)。{string} が "-" である場合もエスケー
プされる(:cd の引数では意味を持つ)。
エラー時は空文字列を返す。
例:
method としても使用できる:
戻り値の型: String
fnamemodify({fname}, {mods}) fnamemodify()
ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン
ドラインで使われるのと同様な文字列である。詳細は
filename-modifiersを参照。
例:
{fname} が返される。
{fname} が空の場合で {mods} が ":h" だと "." を返すので、:cd
を一緒に使うことができる。これは、空の文字列を返すバッファ名な
しの Expand('%:h') とは異なる。
Note: {fname}の中の環境変数は展開されない。環境変数を展開させ
るにはexpand()を使うこと。
method としても使用できる:
戻り値の型: String
foldclosed({lnum}) foldclosed()
結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り
畳みを構成する最初の行の行番号を返す。{lnum}行目が閉じた折り畳
みに入っていないなら-1を返す。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
戻り値の型: Number
foldclosedend({lnum}) foldclosedend()
結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り
畳みを構成する最後の行の行番号を返す。{lnum}行目が閉じた折り畳
みに入っていないなら-1を返す。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
戻り値の型: Number
foldlevel({lnum}) foldlevel()
カレントバッファの{lnum}行目の折り畳みレベルを表す数値を返す。
折り畳みがネストしているときは一番下のレベルを返す。{lnum}行目
に折り畳みがまったくないときは0を返す。折り畳みが開いているか
閉じているかは関係ない。('foldexpr' の中で)折り畳みを更新して
いる最中に呼ぶと、まだ折り畳みを更新していなく、折り畳みレベル
が未知の行に対しては-1を返す。特別な場合として、普通は1行前の
レベルは取得できる。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
戻り値の型: Number
foldtext()
foldtext() 閉じた折り畳みに表示する文字列を返す。これはオプション
'foldtext' のデフォルトの関数であり、'foldtext' を評価している
ときにだけ呼ぶようにすべきである。この関数は変数v:foldstart,
v:foldend, v:folddashesを使用する。
戻り値の文字列は次のようになる:
その折り畳みに含まれている行数である。"abcdef" はその折り畳み
の中の最初の空行でない行のテキストである。行頭の空白と、"//"
や "/*"、'foldmarker' と'commentstring' に設定されている文字列
は削除される。
実際に折り畳みテキストを表示するときには、行の残りは
'fillchars' で設定した折り畳み用の文字で埋められる。
折り畳みが無い場合は空文字列を返す。
戻り値の型: String
{+folding機能付きでコンパイルされたときのみ利用可能}
foldtextresult({lnum}) foldtextresult()
{lnum}行目の閉じた折り畳みに表示される文字列を返す。'foldtext'
を適切なコンテキストの中で評価する。{lnum}行目に閉じた折り畳み
がないときは空文字列を返す。
{lnum}はgetline()のときと同様に扱われる。つまり "." はカレン
ト行、"'m" はマークmを表す。
折り畳まれたテキストをHTMLなどにエクスポートするときに有用。
{+folding機能付きでコンパイルされたときのみ利用可能}
method としても使用できる:
戻り値の型: String
foreach({expr1}, {expr2}) foreach()
{expr1} は List, String, Blob または Dictionary でなけ
ればならない。
{expr1} の各項目に対して {expr2} を実行する。{expr1} は変更さ
れない。その値は :lockvar 1 と同様に変更されるかもしれない。
E741
{expr1} を変更するには map() および filter() を参照。
{expr2} は string か Funcref でなければならない。
{expr2} が string の場合、{expr2} 内では v:val は現在の項
目の値を持つ。Dictionary の場合、v:key は現在の項目のキー
を持ち、List の場合、v:key は現在の項目のインデックスを持
つ。
Blob の場合、v:key は現在のバイトインデックスを持つ。
String の場合、v:key は現在の文字インデックスを持つ。
例:
Note {expr2} は式の結果であり、コマンドとして使用されることに
注意。多くの場合、literal-string を使用するのが良い。バック
スラッシュを 2 重にする必要がないようにするためである。
{expr2} が Funcref の場合 2 つの引数を取る必要がある:
1. 現在の項目のキーまたはインデックス。
2. 現在の項目の値。
旧来のスクリプトの lambda では引数を 1 つだけ受け入れてもエラー
は発生しないが、Vim9 の lambda では "E1106: One argument too
many" になり、引数の数は一致する必要がある。
関数が値を返した場合、その値は無視される。
すべてのケースで {expr1} を返す。
{expr2} の実行中にエラーが発生した場合、{expr1} 内の項目はそれ
以上処理されない。
{expr2} が Funcref の場合、"abort" フラグを使用して定義されて
いない限り、関数内のエラーは無視される。
method としても使用できる:
戻り値の型: String, Blob list<{type}> または dict<{type}>。
{expr1} による
foreground()
foreground() Vimのウィンドウを前面に移動する。この関数はクライアントからVim
サーバーへ送ると便利である。remote_send()
Win32では自分自身のウィンドウを前面に持ってくることが必ずしも
許可されていないので、動作しないかもしれない。そのときは代わり
にremote_foreground()を使うこと。
戻り値の型: Number
{Win32, Motif, GTKいずれかのGUI版とWin32コンソール版でのみ利用
できる}
fullcommand({name} [, {vim9}]) fullcommand()
短縮コマンド名から完全なコマンド名を取得する。コマンドの短縮名
については 20.2 を参照。
文字列引数 {name} は : から始まっても [range] を含んでよい
が、それらはスキップされ戻り値には含まない。
コマンドが存在しない場合、曖昧な場合 (ユーザー定義コマンドの場
合)、またはこの方法で短縮できない場合は空文字列を返す。
vim9-no-shorten
引数 {vim9} がない場合は、現在のスクリプトのバージョンを使用す
る。
{vim9} が存在し、FALSE の場合、旧来のスクリプトルールが使用さ
れる。{vim9} が存在し、TRUE の場合、Vim9 のルールが使用される。
例えば、"en" は "endif" の短縮形ではない。
例えば fullcommand('s')、 fullcommand('sub')、
fullcommand(':%substitute') はすべて "substitute" を返す。
method としても使用できる:
戻り値の型: String
funcref({name} [, {arglist}] [, {dict}]) funcref()
function()と同様である。ただし、返されたFuncrefは、関数を名
前ではなく参照で検索する。これは関数{name}が後で再定義されると
きに重要である。
function()とは違い、{name}はユーザー定義関数として存在してい
なければならない。autoload関数ではすでにロード済みのときだけ機
能する(関数名のみを利用する場合にautoload関数を誤ってロードし
ないようにするには、代わりに function() を使用する)。{name}
は組込み関数であってはならない。
エラー時は 0 を返す。
method としても使用できる:
戻り値の型: func(...): any または、エラー時は Number
function() partial E700 E923
function({name} [, {arglist}] [, {dict}])
関数{name}を参照するFuncrefの変数を返す。{name}はユーザー定義
関数でも組み込み関数でもよい。
ここで{name}は関数の参照、もしくは部分適用である。部分適用であ
るとき、それに格納されている辞書が使用され、{dict}引数が使用で
きない。例:
Funcrefが利用されるとき、その関数は{name}から見つけられる。こ
れは後で再定義された場合も同様である。常に同じ関数を見つけるた
めにはfuncref()を使うこと。
{arglist}もしくは{dict}が与えられると、関数の部分適用が作られ
る。すなわち引数のリスト及び/または辞書はFuncrefに格納され、
そのFuncrefが呼ばれるときに使用される。
格納された引数は他の引数よりも前に関数に渡される。しかし、メ
ソッドからの任意の引数の後になる。例えば:
method の場合:
function()はFuncrefにより多くの引数を加えるためにネストして呼
び出すことができる。余分な引数は、引数のリストに追加される。
例えば:
辞書は "dict" 関数を呼び出すときのみ有用である。この場合、
{dict}は "self" として渡される。例えば:
Callback() が context.Callback() として定義されている場合、以
下の 2 つは同等である:
引数のリストと辞書を同時に使用することもできる:
エラー時は 0 を返す。
method としても使用できる:
戻り値の型: func(...): any または、エラー時は Number
garbagecollect([{atexit}]) garbagecollect()
循環参照を持ち、使われていないリストList、辞書
Dictionaries、チャネルChannels、ジョブJobs をクリーン
アップする。
これはメモリ不足に陥ったときや、'updatetime' 経過後ユーザーの
キー入力を待っているときに自動的に行われるので、この関数を呼ぶ
必要があることはほとんどない。循環参照を持たない要素は、使われ
なくなったとき必ず解放される。長時間実行されるスクリプトの中で
循環参照を持つ非常に大きなリストや辞書を削除したときに有用であ
る。
省略可能な引数 {atexit} に 1 を指定すると、Vim を終了するとき
にもガベージコレクションが行われる。これはメモリリークを発見す
るのに役に立つ。
ガベージコレクションはすぐには実行されず、安全な場合のみ実行さ
れる。これはユーザーが文字を入力するのを待っているときである。
ガベージコレクションを強制するには、すぐに
test_garbagecollect_now() を使用すること。
戻り値の型: String
get({list}, {idx} [, {default}]) get() get()-list
リストList {list}から{idx}番目の要素を取得する。この要素を取
得できないときは{default}を返す。{default}が省略されたときは0
を返す。
method として使用したいなら:
戻り値の型: any。{list} による
get({blob}, {idx} [, {default}]) get()-blob
Blob {blob}から{idx}番目のバイトを取得する。このバイトを取得
できないときは{default}を返す。{default}が省略されたときは -1
を返す。
method として使用したいなら:
戻り値の型: Number
get({dict}, {key} [, {default}]) get()-dict
辞書Dictionary {dict}からキー{key}に関連づけられた値を取得す
る。この要素を取得できないときは{default}を返す。{default}が省
略されたときは0を返す。便利な例:
い場合は 'default' を返す。
method として使用したいなら:
戻り値の型: any。{dict} による
get({func}, {what}) get()-func
Funcref {func} から項目 {what} を取得する。{what} の可能な値
は:
"name" 関数名
"func" 関数
"dict" 辞書
"args" 引数リスト
"arity" 関数が受け入れる引数の数({arglist} を除く)に関す
る情報を含む辞書。次のフィールドが含まれる:
required 位置引数の数
optional 必須引数に加え、オプション引数の
数
varargs 関数が可変数の引数 ... を受け入
れる場合、TRUE
Note: Funcref の {arglist} に Funcref が期待す
る以上の引数が含まれている場合、検証はされず、
エラーは発生しない。
エラー時はゼロを返す。
method として使用したいなら:
戻り値の型: any。{func} および {what} による
getbufinfo()
getbufinfo([{buf}])
getbufinfo([{dict}])
バッファの情報を辞書のリストとして取得する。
引数なしの場合、すべてのバッファに関する情報が返される。
引数が辞書 Dictionary の場合、指定された条件を満たすバッファ
のみが返される。{dict}には以下のキーを指定できる:
buflisted リストされたバッファのみを含む。
bufloaded ロードされたバッファのみを含む。
bufmodified 修正されたバッファのみを含む。
それ以外の場合、{buf}は情報を返す特定のバッファを指定する。
{buf}の使用については、上記のbufname()を参照。バッファが見つ
かった場合、返されるListには1つの項目がある。それ以外の場合、
結果は空のリストになる。
返される各List項目は、次のエントリを持つ辞書である:
bufnr バッファ番号。
changed バッファが変更されている場合はTRUE。
changedtick バッファに加えられた変更の数。
command バッファがコマンドラインウィンドウ
cmdwin に属する場合は TRUE。
hidden バッファが隠されている場合はTRUE。
lastused バッファが最後に使用されたときの
localtime() のような秒単位のタイムス
タンプ。
{+viminfo 機能付きでコンパイルされた
ときのみ有効}
listed バッファがリストされている場合はTRUE。
lnum バッファがカレントウィンドウに表示され
ていたときの現在行の行番号。
過去にバッファがカレントウィンドウに表
示されていた場合にのみ有効である。特定
のウィンドウの最後のカーソル位置の行番
号が必要な場合は line() を使うこと:
linecount バッファ内の行数 (ロードされているとき
のみ有効)
loaded バッファがロードされている場合はTRUE。
name バッファ内のファイルへのフルパス。
signs バッファに設置された目印のリスト。
各リスト項目は、次のフィールドを含む辞
書である:
id 目印ID
lnum 行番号
name 目印名
variables バッファローカル変数の辞書への参照。
windows バッファを表示するwindow-IDのリスト
popups バッファを表示するpopupwindow-idのリ
スト
例:
バッファローカルオプションを取得するには:
method としても使用できる:
戻り値の型: list<dict<any>>
getbufline()
getbufline({buf}, {lnum} [, {end}])
バッファ{buf}の{lnum}行目から{end}行目まで(両端含む)の行からな
るリストListを返す。{end}が省略されたときは{lnum}行目だけか
らなるリストを返す。1 行のみの取得については getbufoneline()
を参照。
{buf}の指定の仕方についてはbufname()を参照。
{lnum}と{end}では "$" でバッファの最後の行を表すことができる。
それ以外は数値でなければならない。
{lnum}が1より小さいときや、バッファの行数より大きいときは空リ
ストを返す。
{end}がバッファの行数より大きいときは、バッファの行数が設定さ
れたものとして扱う。{end}が{lnum}行目より前に設定された場合は
空リストを返す。
この関数は読み込まれているバッファに対してのみ動作する。既にア
ンロードされているバッファや存在しないバッファに対しては空リス
トを返す。
例:
method としても使用できる:
戻り値の型: list<string>
getbufoneline()
getbufoneline({buf}, {lnum})
getbufline() と似ているが、1 行だけを取得して文字列として返
す。
戻り値の型: String
getbufvar({buf}, {varname} [, {def}]) getbufvar()
バッファ{buf}のオプションの値やバッファローカル変数{varname}
の値を返す。Note "b:" をつけない変数名を指定すること。
{varname} が空文字列の場合、全てのバッファローカル変数からなる
辞書 Dictionary を返す。
{varname} が "&" に等しいとき、すべてのバッファローカルオプショ
ンを持つ辞書 Dictionary を返す。
そうでなく、{varname} が "&" で始まるとき、バッファローカルオ
プションの値を返す。
グローバルオプション、バッファローカルオプションのどちらに対し
ても動作するが、グローバル変数、ウィンドウローカル変数、ウィン
ドウローカルオプションに対しては動作しない。
{buf}の指定の仕方についてはbufname()を参照。
バッファや変数が存在しないときは{def}または空文字列を返し、エ
ラーメッセージは表示されない。
例:
method としても使用できる:
戻り値の型: any。{varname} による
getcellpixels() getcellpixels()
端末のセルのピクセルサイズの List を返す。
リストの形式は [xpixel, ypixel] である。
Unix (端末と gVim) および Windows (gVim のみ) でのみ動作する。
他のシステムまたは失敗した場合は [] を返す。
Note 端末によって異なる場合があることに注意。macOS では、シス
テムの Terminal.app はポイント単位でサイズを返す (Retina スケー
リング前)。一方、サードパーティの端末は生のピクセルサイズを返
す (Retina スケーリング後)。
戻り値の型: list<any>
getcellwidths() getcellwidths()
setcellwidths() によって上書きされた文字範囲のセル幅の
List を返す。形式は setcellwidths() の引数と同じである。セ
ル幅が上書きされた文字範囲がない場合、空のリストが返される。
戻り値の型: list<any>
getchangelist([{buf}]) getchangelist()
バッファ {buf} の changelist を返す。{buf} の使い方は前述の
bufname() を参照。バッファ {buf} が存在しない場合、空のリス
トが返される。
返されるリストは 2 つのエントリを含む: 変更位置のリストと、リ
スト内の現在地。変更リスト内のそれぞれの項目は、以下の項目を含
む辞書になっている:
col 列番号
coladd 'virtualedit' 用の列のオフセット
lnum 行番号
バッファ {buf} がカレントバッファの場合、現在地はリスト内の位
置を指す。それ以外のバッファではリストの長さに設定される。
method としても使用できる:
戻り値の型: list<any>
getchar([{expr}]) getchar()
ユーザーまたは入力ストリームから1文字を取得する。
{expr} が省略された場合、1文字を取得できるまで待つ。
{expr} が0の場合、1文字を取得できる時だけ取得する。取得できな
い時は0を返す。
{expr} が1の場合は、1文字を取得できるかを判定するだけである。
入力は消費されない。取得できないと判定された時は0を返
す。
常に文字列として取得したい場合は getcharstr() を使用する。
{expr} が省略されたときや {expr} が0のときは、文字全体または特
殊キーを返す。それが1文字なら戻り値は数値である。これを文字列
に戻すには nr2char() を使う。それ以外の場合にはエンコードし
て文字列にして返す。
特殊キーとは0x80(10進数で128)で始まるバイト列からなる文字列で
ある。これは文字列 "\<Key>" と同じ値である(例: "\<Left>")。戻
り値は文字列であり、修飾キー(shift, control, alt)は含まれない。
{expr} が0や Esc が入力された場合は、これがエスケープシーケン
スの始まりであるかどうかをVimが知るために待つ間、短い遅延があ
るだろう。
{expr} が1のときは最初のバイトだけを返す。1バイト文字の場合、
これはその文字そのものを表す数値である。これを文字列に変換する
にはnr2char()を使う。
修飾キーを取得するには getcharmod() を使う。
ユーザーがマウスをクリックしたときはマウスイベントを返す。クリッ
クした位置はv:mouse_col, v:mouse_lnum, v:mouse_winid,
v:mouse_winで得られる。getmousepos() も使える。マウスの移
動イベントは無視される。
以下の例は、普通にマウスがクリックされたときと同じようにカーソ
ルを移動させる。
bracketed pasteを使用しているときは最初の文字のみが返され、ペー
ストされた残りのテキストは切り捨てられる。
xterm-bracketed-paste.
この関数を呼んだときプロンプトは表示されない。文字入力を待って
いることをなんらかの方法でユーザーがわかるようにしなければなら
ないだろう。画面は再描画されない、例えばウィンドウのリサイズ。
ポップアップウィンドウを使っているなら popup-filter を使うと
よりよく動作する。
入力された文字に対してマッピングは適用されない。
キーコードは置換される。つまりユーザーが<Del>を押した場合、
「生の」文字シーケンスでなく<Del>キーに対応するコードが得られ
る。
例:
あなたは<CursorHold>のような合成文字も取得するかもしれない。
多くの場合、あなたはこれを無視して別の文字を取得することにな
る:
戻り値の型: Number または String
getcharmod() getcharmod()
最後にgetchar()などで得た文字に対する修飾キーの状態を表す数値
を返す。以下の値の和となる:
2 shift
4 control
8 alt (meta)
16 meta (ALT と META が区別される場合)
32 マウスのダブルクリック
64 マウスのトリプルクリック
96 マウスのクアドラプルクリック (== 32 + 64)
128 command (Mac) または super (GTK)
文字自身に含まれていない修飾キーのみ取得できる。つまり、
Shift-aは修飾キーなしの "A" となる。修飾なしの場合は 0 を返す。
戻り値の型: Number
getcharpos({expr}) getcharpos()
文字列 {expr} の位置を得る。getpos() と同様だが返すリスト内
の桁番号はバイトインデックスの代わりに文字インデックスになって
いる。
getpos() が v:maxcol と等しい非常に大きな桁番号を返す場合、
getcharpos() は最後の文字の文字インデックスを返す。
例:
5行目のテキスト "여보세요" の '세' にカーソルがある状態:
method としても使用できる:
戻り値の型: list<number>
getcharsearch() getcharsearch()
現在の文字検索の情報である{dict}を返し、この辞書は下記のエント
リを持つ:
char 文字検索(t, f, T, F)で以前に使われた文
字。
もし文字検索が実行されていないなら空文字列。
forward 文字検索の方向。1は前方、0は後方。
until 文字検索の種類。1はtもしくはTの文字検索、0は
fもしくはFの文字検索。
下記の設定は前回の文字検索の方向にかかわらず、; で前方検索、
, で後方検索を常に行えるようになり便利である:
戻り値の型: dict<any>
getcharstr([{expr}]) getcharstr()
ユーザーまたは入力ストリームから1文字を文字列として取得する。
{expr} が省略された場合、1文字を取得できるまで待つ。
{expr} が0もしくは偽の場合、1文字を取得できる時だけ取得する。
取得できない時は空文字列を返す。
{expr} が1もしくは真の場合は、1文字を取得できるかを判定するだ
けである。入力は消費されない。取得できないと判定された
時は空文字列を返す。
結果の数値が文字列に変換される以外は getchar() と同様に動作
する。
戻り値の型: String
getcmdcomplpat() getcmdcomplpat()
現在のコマンドラインの補完パターンを返す。
コマンドラインが編集されている場合にのみ機能するため、
c_CTRL-\_e または c_CTRL-R_= を使用する必要がある。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), getcmdcompltype() および setcmdline() も
参照。
補完が定義されていない場合は空の文字列を返す。
戻り値の型: String
getcmdcompltype() getcmdcompltype()
現在のコマンドライン補完のタイプを返す。
コマンドラインが編集時にのみ動作するので、c_CTRL-e または
c_CTRL-R_= を使用する必要がある。
返す文字列については :command-completion を参照のこと。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), getcmdcomplpat() および setcmdline() も
参照。
補完が定義されていない場合は空文字列を返す。
戻り値の型: String
getcmdline() getcmdline()
現在のコマンドライン入力の内容を取得する。コマンドラインを編集
しているときのみ動作する。つまり c_CTRL-\_e または
c_CTRL-R_= を使っているときのみ有効。
例:
および setcmdline() も参照。
パスワードを入力する時や inputsecret() を使う時は空文字列を
返す。
戻り値の型: String
getcmdpos() getcmdpos()
コマンドラインにおけるカーソル位置をバイト単位で取得する。最初
の桁は1となる。コマンドラインを編集しているときのみ動作する。
つまりc_CTRL-\_eまたはc_CTRL-R_=または式マッピングを使って
いるときのみ有効。そうでないときは 0 を返す。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), setcmdline() も参照。
戻り値の型: Number
getcmdprompt() getcmdprompt()
input() や confirm() の関数を使用時に、現在のコマンドライ
ンプロンプトを取得する。
コマンドラインが編集されている場合にのみ動作するため、
c_CTRL-\_e または c_CTRL-R_= を使用する必要がある。
getcmdtype(), getcmdline(), getcmdpos(), setcmdpos(),
および setcmdline() も参照。
戻り値の型: String
getcmdscreenpos() getcmdscreenpos()
コマンドラインのカーソルのスクリーン位置をバイト単位で返す。最
初の桁は 1 である。
getcmdpos() の代わりにプロンプトの位置を加える。
コマンドラインの編集時のみ動作するため、c_CTRL-e または
c_CTRL-R_= または式マッピングを使用する必要がある。それ以外
は 0 を返す。
getcmdpos(), setcmdpos(), getcmdline(), setcmdline()
も参照。
戻り値の型: Number
getcmdtype() getcmdtype()
現在のコマンドラインの種類を返す。戻り値は次のいずれか:
: 通常のexコマンド
> デバッグモードコマンド debug-mode
/ 前方検索コマンド
? 後方検索コマンド
@ input() コマンド
- :insert または :append コマンド
= i_CTRL-R_=
コマンドラインを編集しているときのみ動作する。つまり
c_CTRL-\_eまたはc_CTRL-R_=または式マッピングを使っていると
きのみ有効。そうでないときは空文字列を返す。
getcmdpos(), setcmdpos(), getcmdline()も参照。
戻り値の型: String
getcmdwintype() getcmdwintype()
現在のコマンドラインウィンドウ (command-line-window) の種類
を返す。戻り値の意味は getcmdtype() と同じ。コマンドライン
ウィンドウでなければ空文字列を返す。
戻り値の型: String
getcompletion({pat}, {type} [, {filtered}]) getcompletion()
コマンドライン補完のマッチするリストを返す。文字列 {type}は何
のためのものかを指定する。次の補完タイプがサポートされている:
arglist 引数リスト内のファイル名
augroup 自動コマンドグループ
buffer バッファ名
behave :behave サブオプション
breakpoint :breakadd および :breakdel サブオプション
color カラースキーム
command Exコマンド
cmdline cmdline-completion の結果
compiler コンパイラ
cscope :cscopeのサブオプション
custom,{func} {func} で定義されたカスタム補完
customlist,{func} {func} で定義されたカスタム補完
diff_buffer :diffget と :diffput の補完
dir ディレクトリ名
dir_in_path 'cdpath' 内のディレクトリ名
environment 環境変数名
event 自動コマンドのイベント
expression Vim式
file ファイルおよびディレクトリ名
file_in_path 'path'のファイルおよびディレクトリ名
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 ユーザー変数
{pat}が空文字列の場合、すべてのマッチが返される。それ以外の場
合、{pat}と一致する項目のみが返される。{pat}での特殊文字の使用
については、wildcardsを参照。
オプションの{filtered}フラグが1に設定されている場合、結果をフィ
ルタリングするために 'wildignore'が適用される。そうでなければ、
すべての一致が返される。'wildignorecase'オプションは常に適用さ
れる。
'wildoptions' オプションが 'fuzzy' を含む場合、補完のマッチ取
得にファジーマッチが使われる。そうでない場合は正規表現マッチが
使われる。その結果この関数はコマンドラインで何が起こるかという
ユーザー設定に従う。これを望まない場合、getcompletion() が呼ば
れる前に 'wildoptions' を空にしてその後元に戻すようにする。
{type}が "cmdline" ならば cmdline-completion の結果が返され
る。
例えば、":call" コマンドの後で補完できる値は:
一致するものがなければ、空のリストが返される。{type}の値が無効
だと、エラーが発生する。
method としても使用できる:
戻り値の型: list<string>
getcurpos()
getcurpos([{winid}])
カーソルの位置を返す。これは getpos('.') に似ているが、追加の
"curswant" 情報を含む:
[0, lnum, col, off, curswant]
"curswant" は縦方向移動の優先的列番号である。$ コマンド後は
非常に巨大な値として v:maxcol と同値を返す。
getcursorcharpos() と getpos() も参照。
最初の "bufnum" は常に0である。カーソルのバイトでの位置は
'col' に返される。文字の位置を得るには getcursorcharpos() を
使う。
オプションの {winid} 引数はウィンドウを指定する。これはウィン
ドウ番号か window-ID である。最後のカーソル位置を返すが、こ
れはバッファがカレントウィンドウでない場合、現在の値は無効にな
りうる。
{winid} が無効の場合、値がゼロのリストを返す。
次のようにしてカーソル位置の保存と復元ができる:
る方法については winrestview() を参照。
method としても使用できる:
戻り値の型: list<number>
getcursorcharpos([{winid}]) getcursorcharpos()
getcurpos() と同様だが返すリスト内の桁番号はバイトインデック
スの代わりに文字インデックスになっている。
Example:
3行目のテキスト "여보세요" の '보' にカーソルがある状態:
method としても使用できる:
戻り値の型: list<number>
getcwd([{winnr} [, {tabnr}]]) getcwd()
結果は現在の作業ディレクトリ名の文字列である。'autochdir' は無
視される。
{winnr} が指定された場合、現在のタブページ内の {winnr} のウィ
ンドウのローカルカレントディレクトリを返す。{winnr} にはウィン
ドウ番号またはwindow-IDが使える。
{winnr} が -1 の場合、グローバル作業ディレクトリ名を返す。
haslocaldir() も参照。
{winnr}と{tabnr}が指定された場合、{tabnr}のタブページ内の
{winnr}のウィンドウのローカルカレントディレクトリを返す。
{winnr}が -1 の場合、タブページの作業ディレクトリを返す。
{winnr}が 0 の場合、カレントウィンドウを使用し、{tabnr}が 0 の
場合はカレントタブページを使用する。
引数なしの場合は、カレントウィンドウの実際の作業ディレクトリを
返す。
もし引数が不正の場合、空文字列を返す。
例:
method としても使用できる:
戻り値の型: String
getenv({name}) getenv()
環境変数{name}の値を返す。引数 {name} は先行する '$' のない文
字列。例:
変数が存在しない場合は v:null が返される。これは、空の文字列
に設定された変数とは異なるが、一部のシステムは空の値を削除され
る変数として解釈する。expr-env も参照。
method としても使用できる:
戻り値の型: String または Number
getfontname([{name}]) getfontname()
引数なしで使われた場合には現在の通常のフォント名を返す。ハイラ
イトグループNormalに対して使われるものと同様hl-Normal。
引数が指定された場合には文字列{name}が有効なフォント名であるか
判定される。有効でないときは空文字列を返す。
有効なときは実際のフォント名を返す。またはGUIが実際の名前の取
得をサポートしていないときは{name}をそのまま返す。
GUIモードで実行しているときのみ動作する。よってvimrcやgvimrcの
中では使えない。GUIモードが起動した直後にこの関数を呼ぶには、
自動コマンドGUIEnterを使うこと。
Note GTKのGUIはどんなフォント名でも受け付けてしまうため、名前
が有効であるかのチェックは機能しない。
戻り値の型: String
getfperm({fname}) getfperm()
{fname}で指定されたファイルの読み込み、書き込み、実行の許可属
性を示す文字列を返す。
{fname}が存在しない、またはそのディレクトリが読み込み不可能な
ときは空文字列を返す。
戻り値は "rwxrwxrwx" の形で、"rwx" フラグの各グループは順にファ
イルの所有者、ファイルが所属するグループ、その他のユーザーを表
す。許可属性が与えられていないフラグは "-" で置き換えられる。
例:
ば) "rw-r--r--" あるいは "rw-------" と表示する。
method としても使用できる:
戻り値の型: String
許可属性を設定するにはsetfperm()を使用する。
getfsize({fname}) getfsize()
結果は数値で、{fname}で指定されるファイルのサイズをバイト単位
で返す。
{fname}がディレクトリのときは0を返す。
ファイル{fname}が見つからないときは-1を返す。
{fname} のサイズが Number の範囲外の場合は -2 を返す。
method としても使用できる:
戻り値の型: Number
getftime({fname}) getftime()
結果は{fname}で与えられたファイルの、最終更新時間を示す数値。
1970年1月1日からの経過時間(秒)で、strftime()に渡すことができる
だろう。localtime()とstrftime()も参照。
ファイル{fname}が見つからなかった場合には-1を返す。
method としても使用できる:
戻り値の型: Number
getftype({fname}) getftype()
{fname}で指定されたファイルの種別を示す文字列を返す。
{fname}が存在しないときは空文字列を返す。
ファイルの種別とそれらの結果の表を以下に示す:
通常ファイル "file"
ディレクトリ "dir"
シンボリックリンク "link"
ブロックデバイス "bdev"
キャラクタデバイス "cdev"
ソケット "socket"
FIFO "fifo"
それ以外 "other"
例:
される。"dir" と "file" しか返らないシステムもある。
MS-Windowsでは、ディレクトリへのシンボリックリンクは "link" の
代わりに "dir" を返す。
method としても使用できる:
戻り値の型: String
getimstatus() getimstatus()
結果は数値で、IMEステータスがアクティブの場合は TRUE で、そ
れ以外の場合は FALSE である。
'imstatusfunc' を参照。
戻り値の型: Number
getjumplist([{winnr} [, {tabnr}]]) getjumplist()
指定されたウィンドウの jumplist を返す。
引数なしの場合、カレントウィンドウを使用する。
{winnr} のみの場合、現在のタブページのこのウィンドウを使用す
る。{winnr} には window-ID も使用できる。
{winnr} と {tabnr} 両方の場合、指定されたタブページのウィンド
ウを使用する。{winnr} または {tabnr} が無効な場合、空のリスト
が返される。
返されるリストは 2 つのエントリを含む: ジャンプ位置のリストと、
リスト内の最後に使われたジャンプ位置番号。ジャンプ位置リスト内
のそれぞれの項目は、以下の項目を含む辞書になっている:
bufnr バッファ番号
col 列番号
coladd 'virtualedit' 用の列のオフセット
filename 利用可能ならばファイル名
lnum 行番号
method としても使用できる:
戻り値の型: list<any>
getline()
getline({lnum} [, {end}])
{end}が指定されない場合は、カレントバッファの{lnum}行目の内容
を文字列にして返す。例:
よってその文字列が数字に変換される。よって、カーソルのある行の
文字列を取得するには:
文字列が返される。
{end}が指定された場合は、カレントバッファの{lnum}行目から
{end}行目までを要素とするリストListを返す。
{end}は{lnum}と同様に解釈される。
存在しない行は省略され、エラーメッセージは表示されない。
{end}が{lnum}より前になる場合は空リストを返す。
例:
method としても使用できる:
戻り値の型: list<string> または String。{end} による
他のバッファの行を取得するには getbufline() および
getbufoneline() を参照。
getloclist({nr} [, {what}]) getloclist()
ウィンドウ{nr}のlocationリストの全項目からなるリスト List を
返す。{nr} にはウィンドウ番号または window-ID が使える。{nr}
に0を指定するとカレントウィンドウになる。
locationリストウィンドウに対して使用すると、そこに表示されてい
るlocationリストが返る。ウィンドウ番号{nr}が無効な場合は、空リ
ストが返る。それ以外は getqflist() と同じ。
オプションの{what}辞書引数が指定されている場合、{what}にリスト
されている項目を辞書として返す。{what}のサポートされている項目
については、getqflist()を参照。
getqflist() の{what}でサポートされている項目に加え、
getloclist() では次の項目もサポートされている:
filewinid ロケーションリストからファイルを表示す
るのに使われているウィンドウのID。この
フィールドはロケーションリストウィンド
ウから呼び出されたときのみ適用される。
詳細は location-list-file-window を
参照。
ウィンドウ {nr} にlocationリストがないなら、デフォルト値の辞書
Dictionary を返す。
ウィンドウが存在しない場合、空の辞書を返す。
例 (getqflist-examples もまた参照):
戻り値の型: list<dict<any>> または list<any>
getmarklist([{buf}]) getmarklist()
{buf} 引数が無い場合は全グローバルマークについての情報のリスト
を返す。mark
オプショナル引数 {buf} が指定されている場合、{buf} で指定され
たバッファのローカルマークの値を返す。{buf} の使い方は
bufname() を参照。{buf} が無効な場合、空のリストが返される。
戻り値のリストの各要素は以下の内容の辞書Dictになっている:
mark 接頭辞 "'" が付いたマークの名前
pos マークの位置のリストList:
[bufnum, lnum, col, off]
詳細は getpos() を参照。
file ファイル名
特定のマークについて取得した情報の詳細は getpos() を参照。
method としても使用できる:
戻り値の型: list<dict<any>> または list<any>
getmatches([{win}]) getmatches()
matchadd() と :match によりカレントウィンドウに定義された
全てのマッチの List を返す。setmatches() は getmatches()
で保存されたマッチのリストを復元できるので、getmatches() と
setmatches() は組み合わせて使うと便利である。
{win} が指定されたなら、カレントウィンドウの代わりに指定された
番号かウィンドウIDのウィンドウを使う。{win} が無効な場合、空の
リストが返される。
例:
'priority': 10, 'id': 1}, {'group': 'MyGroup2',
'pattern': 'FIXME', 'priority': 10, 'id': 2}]
'priority': 10, 'id': 1}, {'group': 'MyGroup2',
'pattern': 'FIXME', 'priority': 10, 'id': 2}]
戻り値の型: list<dict<any>> または list<any>
getmousepos() getmousepos()
マウスの最新の位置を示す辞書 Dictionary を返す。マウスクリッ
クのマッピングやポップアップウィンドウのフィルターで使うことが
できる。辞書の要素は:
screenrow 画面行
screencol 画面桁
winid クリックされたウィンドウ ID
winrow "winid" 内の行
wincol "winid" 内の桁
line "winid" 内のテキスト行
column "winid" 内のテキスト桁
coladd クリックされた文字の先頭からのオフセッ
ト (スクリーン桁)。
全ての数値は 1 ベースである。
ウィンドウの上ではない場合、例えばコマンドラインの中などでは
"screenrow" と "screencol" のみが有効で、残りは 0 になる。
ウィンドウの下のステータスラインやウィンドウの右の垂直セパレー
ターの場合、"line" と "column" は 0 になる。
位置がテキストより後の場合、"column" はテキストのバイト長+1に
なる。
マウスがポップアップウィンドウの上の場合、そのウィンドウが使わ
れる。
getchar() を使ったとき、Vim 変数 v:mouse_lnum,
v:mouse_col と v:mouse_winid もこれらの値を提供する。
戻り値の型: dict<number>
getmouseshape() getmouseshape()
現在表示されているマウスポインタの名前を返す。 +mouseshape
機能がサポートされていないか、形状が不明な場合は空文字列が返さ
れる。
この機能は主にテストを目的としている。
戻り値の型: String
getpid() getpid()
Vim のプロセス ID を数値で返す。Unix と MS-Windows では Vim が
終了するまでこれは一意な数値である。
戻り値の型: Number
getpos({expr}) getpos()
文字列{expr}の位置を返す。
{expr} に受け入れられる値は以下: E1209
. カーソルの位置。
$ カレントバッファの最終行。
'x マーク x の位置 (マークが設定されていない場合は、
すべての値に対して 0 が返される)。
w0 カレントウィンドウに表示される最初の行 (サイレント
Ex モード等、表示が更新されない場合は 1)。
w$ カレントウィンドウに表示されている最後の行 (行が表
示されていない場合は、"w0" より 1 少ない値)。
v ビジュアルモード以外の場合は、カーソルの位置を返
す。ビジュアルモードでは、ビジュアル領域のもう一方
の端を返す。これについて考える良い方法は、ビジュア
ルモードでは "v"と "." が互いに補完し合うというこ
とである。"." はカーソルの位置を参照するが、"v" は
v_o がカーソルを移動する場所を参照する。結果とし
て、"v" と "." を一緒に使用して、文字単位のビジュ
アルモードで選択範囲全体を操作できる。カーソルが文
字単位のビジュアル領域の末尾にある場合、"v" は同じ
ビジュアル領域の先頭を参照する。また、カーソルが文
字単位のビジュアル領域の先頭にある場合、"v" は同じ
ビジュアル領域の末尾を参照する。"v" は、すぐに更新
されるという点で、'< および '> とは異なる。
Note 別のファイルのマークも使用できることに注意。その場合、行
番号は別のバッファに適用される。
結果は次の4個の要素を持つリストList:
[bufnum, lnum, col, off]
"bufnum" は、'0 や 'A のようなマークが指定されたときは、その
マークのバッファ番号となる。それ以外では0となる。
"lnum" と "col" はバッファ中の位置。桁番号は1から始まる。
"off" の値は、'virtualedit' がオフのときは常に0で、オンのとき
はその文字の始点からの画面上の桁のオフセットである。つまり、
カーソルが<Tab>の中や、その行の最後の文字より後にあるとき意味
を持つ。
カーソル位置を取得するには、getcurpos() を参照。
桁番号は行内のバイト位置のリストとして返される。行内の文字での
位置を取得するなら、getcharpos() を使う。
Note: ビジュアルモードの '< と '> について: ビジュアルモードが
"V" (行選択モード) のとき、'< の桁番号はゼロ、'> の桁番号は大
きな値として v:maxcol と同値になる。
桁番号は v:maxcol と同値の非常に大きな値になり得る。これは
"行末の後" を意味する。
{expr} が無効な場合、すべてがゼロのリストが返される。
この関数はマークの位置を保存し、復元するために使われる:
getcharpos() と getcurpos() そして setpos() も参照。
method としても使用できる:
戻り値の型: list<number>
getqflist([{what}]) getqflist()
現在の全quickfixエラーのリスト List を返す。リストの各要素は
辞書で、以下の要素を持つ:
bufnr ファイル名を持つバッファの番号。その名前を取得
するにはbufname()を使う。
module モジュール名
lnum バッファ中の行番号(最初の行は1)
end_lnum
項目が複数行のときの最後の行番号
col 桁番号(最初の桁は1)
end_col 項目が範囲を持つときの最後の桁番号
vcol TRUE: "col" は画面上の桁
FALSE: "col" はバイトインデックス
nr エラー番号
pattern エラーの位置を特定するために使う検索パターン
text エラーの説明
type エラーメッセージの種類。'E', '1' など。
valid TRUE: エラーメッセージが認識されている
user_data
項目に関連付けられたカスタムデータは、任意の型
にすることができる。
エラーリストがまったくないか、空であるときは空リストを返す。
quickfixリストの項目が存在しないバッファ番号とともに返る場合は
"bufnr" を0にして返される。(Note: いくつかの関数はバッファ番号
0を代替バッファとして受け付けるので、明確に0チェックを行う必要
がある)。
役に立つ応用例: 複数のファイルから正規表現検索を行い、見つかっ
たものに対してなんらかの操作をする:
オプションの{what}辞書引数が指定されている場合は、{what}にリス
トされている項目のみを辞書として返す。{what}では、以下の文字列
項目がサポートされている:
changedtick リストに行われた変更の総数を取得
quickfix-changedtick
context quickfix-context を取得
efm "lines" をパースするときに使われるエラーフォー
マット。存在しない場合はオプション
'errorformat' の値が使用される。
id quickfix-IDに対応するquickfixリストの情報を
取得。0 は現在のリストもしくは "nr" で指定され
たリストのidを意味する
idx 'id' または 'nr' で指定されたquickfixリスト内
の情報を取得した最後のエントリのインデックス。
もし0なら、カレントのエントリが使われる。
quickfix-index を参照
items quickfixリストのエントリ
lines 'efm' を使用して行のリストをパースし、結果のエ
ントリを返す。List 型のみを受け付ける。現在
のquickfixリストは変更を受けない。
quickfix-parseを参照。
nr このquickfixリストの情報を取得。0 は現在の
quickfixリストを意味し、"$" は最後のquickfixリ
ストを意味する
qfbufnr quickfixウィンドウに表示されているバッファの番
号。quickfixバッファが存在しないなら 0 が返る。
quickfix-buffer を参照。
size quickfixリスト内のエントリの数
title リストタイトルを取得 quickfix-title
winid quickfixのwindow-IDを取得
all 上記のquickfixのすべてのプロパティ
{what} の文字列以外の項目は無視される。特定の項目の値を取得す
るには 0 を設定する。
"nr" が存在しない場合、現在のquickfixリストが使用される。"nr"
と 0 でない "id" が両方とも指定されていた場合、"id" で指定され
たリストが使用される。
quickfixスタック内のリストの数を取得するには、{what} 内で "nr"
に "$" を設定する。返される辞書内の "nr" の値がquickfixスタッ
クサイズである。
"lines" が指定された場合、"efm" を除くその他すべての項目は無視
される。返される辞書は、エントリのリストからなるエントリ
"items" を含む。
返される辞書には、次のエントリが含まれる:
changedtick リストに行われた変更の総数
quickfix-changedtick
context quickfixリストコンテキスト。quickfix-context
を参照。存在しない場合、"" に設定される。
id quickfixリストID quickfix-ID。存在しない場
合、0 に設定される。
idx リスト内のquickfixのエントリのインデックス。
存在しない場合、0 に設定される。
items quickfixリストのエントリ。存在しない場合、空リ
ストに設定される。
nr quickfixリスト番号。存在しない場合、0 に設定さ
れる。
qfbufnr quickfixウィンドウに表示されているバッファの番
号。存在しない場合、0 に設定される。
size quickfixリスト内のエントリの数。存在しない場
合、0 に設定される。
title quickfixリストのタイトルテキスト。存在しない場
合、"" に設定される。
winid quickfixのwindow-ID。存在しない場合、0 に設
定される。
例 (getqflist-examplesも参照):
戻り値の型: list<dict<any>> または list<any>
getreg([{regname} [, 1 [, {list}]]]) getreg()
レジスタ{regname}の中身を文字列にして返す。例:
となる。
引数 {regname} は文字列である必要がある。 E1162
getreg('=')は最後に評価した式レジスタの値を返す。(マップの中で
使用する)。
getreg('=', 1)はその式そのものを返す。これを使ってsetreg()で
復元することができる。他のレジスタの場合は、この引数は無視され
るので、常に指定していても害はない。
{list} が指定され、その値がTRUEのときは、戻り値はリスト
(List) になる。リストの各要素はテキスト 1 行である。これはレ
ジスタの中に値ゼロのバイトが含まれる場合に使用する。{list} を
指定しなかった場合は NL 文字と値ゼロのバイトは両方とも NL 文字
として扱われる (NL-used-for-Nul 参照)。
指定したレジスタがセットされていないときは、空のリストが返され
る。
{regname} が "" の場合、無名レジスタ '"' が使われる。
{regname}を指定しないときはv:registerが使われる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
戻り値の型: String
getreginfo([{regname}]) getreginfo()
レジスタ {regname} についての詳細情報として次の項目を持つ辞書
を返す:
regcontents レジスタ {regname} に格納されている行
の、getreg({regname}, 1, 1) と同様の
リスト。
regtype レジスタ {regname} の getregtype()
相当の種別。
isunnamed 真偽値フラグ、v:true は現在指している
レジスタが無名レジスタであることを示
す。
points_to 無名レジスタであれば、現在指しているレ
ジスタを示す単一文字 (quotequoteを参
照)。
例えば、行を dd で削除後、このフィー
ルドは "1" となりそのレジスタには削除
したテキストが入る。
引数 {regname} は文字列。{regname} が不正なレジスタ名もしくは
未設定の場合、空の辞書が返される。{regname} が "" か "@" の場
合、無名レジスタ '"' が使われる。
{regname} が未指定の場合、v:register が使われる。
戻り値の辞書は setreg() に渡すことができる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
戻り値の型: dict<any>
getregion({pos1}, {pos2} [, {opts}]) getregion()
バッファから、{pos1} から {pos2} までの文字列のリストを返す。
{pos1} と {pos2} はともに 4 つの整数からなる List でな
ければならない。このリストの形式については getpos() を参照。
他のバッファの位置を指定することができるが、getregion-notes
にある制限に注意すること。
オプショナル引数の {opts} は以下の項目をサポートする辞書である:
type 範囲の選択のタイプを指定する。可能な値
については getregtype() を参照。ただ
し、幅は省略可能で、空の文字列は使用で
きない。(デフォルト: "v")
exclusive TRUE の場合、末尾の位置に排他的な選
択を用いる。
(デフォルト: 'selection' に従う)
visualmode() で最後の選択のタイプを取得することができる。
ビジュアルモードがアクティブな場合は、現在のビジュアルモードを
mode() で取得する (例えば、:vmap の中)。
この関数は、characterwise-visual 選択のような、始まりと終わ
りが異なる桁のテキストを取得するのに便利である。
getregion-notes
Note:
- {pos1} と {pos2} の順序は重要ではなく、常に左上の位置から右
下の位置までの内容を返す。
- 'virtualedit' が有効で、領域が行末を越える場合、結果の行は空
白で埋められる。
- 領域が矩形単位で、複数セル文字の途中で開始または終了する場
合、その文字は含まれないが、その選択された部分は空白で置き換
えられる。
- {pos1} と {pos2} が同じバッファにない場合は、空のリストが返
される。
- {pos1} と {pos2} は必ず bufloaded() なバッファ上になければ
ならない。
- これはカレントウィンドウのコンテキストで評価されるので、バッ
ファが 'virtualedit' または 'list' の値が異なるウィンドウに
表示される場合に違いが生じる。
例:
method としても使用できる:
戻り値の型: list<string>
getregionpos({pos1}, {pos2} [, {opts}]) getregionpos()
getregion() と同じだが、{pos1} と {pos2} によって囲まれたバッ
ファのテキストセグメントを表す位置のリストを返す。
セグメントは、各行の位置のペアである:
位置は 4 つの数値の List である:
[bufnum, lnum, col, off]
"bufnum" はバッファ番号。
"lnum" と "col" はバッファ内の位置。最初の桁は 1 である。
開始位置の "off" の数値がゼロ以外の場合、それは文字の先頭から
の画面桁のオフセットである。例えば、<Tab> 内の位置、または最後
の文字の後の位置である。
終了位置の "off" の数値がゼロ以外の場合、それは選択範囲に含ま
れない文字の最初のセルのオフセットである。それ以外の場合は、そ
のすべてのセルが含まれる。
getregion() でサポートされているオプションとは別に、{opts}
は次のオプションもサポートしている:
eol TRUE の場合、行末を超える位置を、行
の長さより 1 大きい "col" 値で示す。
FALSE の場合、位置は行内に制限され、
行が空の場合、または選択範囲が行の末尾
を完全に超えている場合は、両方の位置に
対して "col" 値 0 が使用される。
(デフォルト: FALSE)
method としても使用できる:
戻り値の型: list<list<list<number>>>
getregtype([{regname}]) getregtype()
レジスタ{regname}の種類を表す文字列を返す。
戻り値は次のいずれかとなる:
"v" 文字単位characterwiseの場合
"V" 行単位linewiseの場合
"<CTRL-V>{width}" 矩形blockwise-visualの場合
"" 空、または未知のレジスタの場合
<CTRL-V>は値0x16の1文字である。
引数 {regname} は文字列。{regname} が "" の場合、無名レジスタ
'"' が使われる。{regname}を指定しないときはv:registerが使わ
れる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
戻り値の型: String
getscriptinfo([{opts}]) getscriptinfo()
:scriptnames が見せるように、読み込まれたすべての Vim script
に関する情報を読み込まれた順序で List として返す。
オプションの Dict 引数 {opts} は、以下のオプション項目をサポー
トする:
name スクリプト名の一致パターン。指定され、"sid" が
指定されていない場合は、パターン "name" に一致
する名前を持つスクリプトに関する情報が返され
る。
sid スクリプト ID <SID>。指定された場合、ID "sid"
のスクリプトに関する情報のみが返され、"name"
は無視される。
返されたリストの各項目は、以下の項目を持つ Dict である:
autoload import autoload で使用されたが、実際にはまだ
読み込まれていないスクリプトには TRUE を設定す
る (import-autoload を参照)。
functions スクリプト内で定義されているスクリプトローカル
関数名のリスト。特定のスクリプトが {opts} の
"sid" 項目を使って指定されている場合にのみ表示
される。
name Vim script ファイル名。
sid スクリプト ID <SID>。
sourced このスクリプト名がリンクしている実際に読み込ま
れたスクリプトが存在する場合はスクリプト ID、
それ以外の場合はゼロ
variables スクリプトローカル変数を含む辞書。{opts} の
"sid" 項目を使って特定のスクリプトを指定した場
合のみ存在する。
Note これはコピーであり、この辞書を使ってスク
リプトローカル変数の値を変更することはできない
ことに注意。
version Vim script バージョン (scriptversion)
例:
戻り値の型: list<dict<any>>
gettabinfo([{tabnr}]) gettabinfo()
{tabnr}を指定しないと、すべてのタブページに関する情報がリスト
List として返される。各リスト項目は辞書 Dictionary である。
それ以外の場合、{tabnr} はタブページ番号を指定し、それに関する
情報が返される。タブページが存在しない場合、空のリストが返され
る。
各リストアイテムは、次のエントリを持つ辞書 Dictionary である:
tabnr タブページ番号。
variables タブページローカル変数の辞書への参照。
windows タブページのwindow-IDのリスト。
method としても使用できる:
戻り値の型: list<dict<any>>
gettabvar({tabnr}, {varname} [, {def}]) gettabvar()
タブページ {tabnr} のタブローカル変数 {varname} を取得する。
t:var
タブの番号は 1 から始まる。
引数 {varname} は文字列。{varname} が空のときは全タブローカル
変数からなる辞書を返す。
Note: 指定する変数名は "t:" を除いた名前。
タブや変数が存在しないときは{def}または空文字列を返し、エラー
メッセージは表示されない。
method としても使用できる:
戻り値の型: any。{varname} による
gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) gettabwinvar()
タブページ{tabnr}内のウィンドウ{winnr}のウィンドウローカル変数
{varname}の値を取得する。
引数 {varname} は文字列。{varname}が空のときは全ウィンドウロー
カル変数からなる辞書を返す。
{varname}が "&" と等しい場合はすべてのウィンドウローカルオプ
ションの値を辞書 Dictionary に入れて返す。
{varname}が文字 "&" で始まるときはウィンドウローカルオプション
の値を取得する。
Note {varname}は "w:" をつけずに指定しなければならない。
タブページ番号は1から始まる。カレントタブページを指定するには
getwinvar()を指定する。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
{winnr}が0のときはカレントウィンドウとなる。
グローバルオプション、バッファローカルオプション、ウィンドウ
ローカルオプションに対しても動作するが、グローバル変数やバッ
ファローカル変数に対しては動作しない。
ウィンドウやタブや変数が存在しないときは{def}または空文字列を
返し、エラーメッセージは表示されない。
例:
すべてのウィンドウローカル変数を取得するには:
method としても使用できる:
戻り値の型: any。{varname} による
gettagstack([{winnr}]) gettagstack()
結果は辞書で、それはウィンドウ{winnr}のタグスタックである。
{winnr}にはウィンドウ番号または window-ID を指定できる。
{winnr}を指定しない時は、カレントウィンドウが使用される。
ウィンドウ{winnr}が存在しない場合、空の辞書が返される。
返される辞書には、次のエントリが含まれる:
curidx スタック内の現在のインデックス。スタッ
クの最上部にあるときは、(length + 1)
に設定される。スタックの最下部のイン
デックスは1である。
items スタック内の項目のリスト。各項目は、以
下で説明するエントリを含む辞書である。
length スタック内の項目数
スタック内の各項目は、次のエントリを持つ辞書である:
bufnr 現在のジャンプのバッファ番号
from タグジャンプの前のカーソル位置。返され
るリストの形式は getpos() を参照。
matchnr 現在の一致するタグ番号。名前に一致する
複数のタグが見つかった場合に使用され
る。
tagname タグの名前
タグスタックについての詳細は、tagstack を参照。
method としても使用できる:
戻り値の型: dict<any>
gettext({text} [, {package}]) gettext()
可能であれば文字列 {text} を翻訳する。
これは Vim script で使用するためのものである。メッセージの翻訳
を生成するときに、{text} は xgettext によって抽出され、翻訳
者は翻訳されたメッセージを .po ファイルに追加することができ、
Vim は gettext() が呼び出されたときに翻訳を検索する。
{text} にはダブルクォートの文字列が望ましい。なぜなら、
xgettext がシングルクォートのエスケープされたテキストをサポー
トしていないためである。
{package} が指定されると、その特定のパッケージの翻訳が検索され
る。これは主にサードパーティの Vim script で必要である。
gettext() 関数を使用する前に、bindtextdomain() 関数で翻訳へ
のパスを指定する必要がある。
戻り値の型: String
getwininfo([{winid}]) getwininfo()
ウィンドウに関する情報を、辞書のリスト List として返す。
{winid}が与えられた場合、そのIDを持つウィンドウに関する情報が
リスト List として1項目にして返される。ウィンドウが存在しな
い場合、結果は空のリストになる。
{winid}がなければすべてのタブページのすべてのウィンドウに関す
る情報が返される。
リストの各項目は次のエントリを持つ辞書 Dictionary である:
botline 最下の完全に表示されたバッファ行
bufnr ウィンドウ内のバッファ番号
height ウィンドウの高さ (winbarを除く)
leftcol 表示される最初の列。'wrap' がオフの場
合にのみ使用される
loclist locationリストを表示してる場合は1
{Vimが+quickfix機能付きでコンパイル
されたときのみ有効}
quickfix quickfixまたはlocationリストウィンドウ
の場合は1
{Vimが+quickfix機能付きでコンパイル
されたときのみ有効}
terminal 端末ウィンドウの場合は 1
{Vimが+terminal機能付きでコンパイル
されたときのみ有効}
tabnr タブページ番号
topline 最上に表示されたバッファ行
variables ウィンドウローカル変数の辞書への参照
width ウィンドウ幅
winbar ウィンドウがツールバーを持っていれば
1、そうでなければ 0
wincol ウィンドウの最も左のスクリーン列、
win_screenpos() の "col"
textoff テキストの前の'foldcolumn',
'signcolumn', 行番号が占める列数
winid window-ID
winnr ウィンドウ番号
winrow ウィンドウの最も上のスクリーン行、
win_screenpos() の "row"
method としても使用できる:
戻り値の型: list<dict<any>>
getwinpos([{timeout}]) getwinpos()
結果は、getwinposx() と getwinposy() の結果が組み合わされ
た 2 つの数字のリスト List:
[x-pos, y-pos]
{timeout} は端末からの応答をどれくらい待つかを、ミリ秒単位で指
定するのに使われる。省略された場合は 100 ミリ秒が使用される。
リモート端末にはより長い時間を指定すること。
10 より小さい値が使用され、かつその時間内に応答を受け取らなかっ
た場合、利用可能であれば前に報告された位置が返される。これは位
置をポーリングし、同時に何かを行う場合に使用することができる:
method としても使用できる:
戻り値の型: list<number>
getwinposx() getwinposx()
結果はGUIのVimウィンドウの左端の、デスクトップ上でのX座標値(数
値)。xtermでも機能する (100 ミリ秒のタイムアウトを使用して)。
情報が存在しない (例: Wayland バックエンド) 場合は-1となる。
この値は :winpos でも使用される。
戻り値の型: Number
getwinposy() getwinposy()
結果はGUIのVimウィンドウの上端の、デスクトップ上でのY座標値(数
値)。xtermでも機能する (100 ミリ秒のタイムアウトを使用して)。
情報が存在しない (例: Wayland バックエンド) 場合は-1となる。
この値は :winpos でも使用される。
戻り値の型: Number
getwinvar({winnr}, {varname} [, {def}]) getwinvar()
カレントタブページに対するgettabwinvar()と同様。
例:
method としても使用できる:
戻り値の型: any。{varname} による
glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) glob()
{expr}内のファイル名のワイルドカードを展開する。特殊文字につい
てはwildcardsを参照。
{nosuf} にTRUEを指定しない限り、'suffixes' と 'wildignore'
が適用される。つまり 'wildignore' のパターンにマッチする名前は
スキップされ、'suffixes' がマッチの順番に影響を与える。
'wildignorecase' は常に適用される。
{list} が指定されその値がTRUEなら、マッチしたすべてのファイ
ルがリスト List として返される。リストを使うことで、改行を含
むファイル名があっても結果を正しく受け取ることができる。
そうでない場合は結果は文字列で返される。その場合、複数のマッチ
があるときはそれらは文字 <NL> で区切られる。
展開が失敗した場合、空の文字列またはリストが返される。
マッチの数を制限するなど、複雑なことをする必要がある場合にも
readdir() を使用することができる。
存在しないファイル名は結果に含まれない。シンボリックリンクは、
それが存在するファイルを指す場合のみ含まれる。
ただし、{alllinks} 引数が存在し、それがTRUEである場合はすべ
てのシンボリックリンクが含まれる。
多くのシステムではバッククォート(「`」という文字のこと)を、外
部コマンドの実行結果からファイル名を取得するために使用できる。
例:
が含まれてなければならない。項目内のスペースは許容される。
特殊なVimの変数を展開するためにはexpand()を参照。外部コマン
ドの生の出力を得るためにはsystem()を参照。
method としても使用できる:
戻り値の型: String または list<string> または list<any>。
{list} による
glob2regpat({string}) glob2regpat()
glob()に使われるファイルパターンを検索パターンに変換する。
結果はファイル名の文字列とのマッチに使用できる。例えば、
る。結果はシステムによって異なることに注意すること。MS-Windows
では、バックスラッシュは通常、パス区切りを意味する。
method としても使用できる:
戻り値の型: String
globpath()
globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
{path}の中の全ディレクトリで文字列 {expr} に対してglob()を実
行し、結果を連結する。例:
{path}はコンマ区切りのディレクトリのリスト。各ディレクトリを
{expr}の前に付加し、glob()と同様にそれを展開する。必要に応じて
パスの区切り文字が挿入される。
ディレクトリ名の中にコンマを含めるには、バックスラッシュでエス
ケープすること。Note MS-Windowsではディレクトリ名の末尾にバッ
クスラッシュがつくことがある。その後に区切りのコンマを書くとエ
スケープと見なされてしまうので、バックスラッシュは削除すること。
どれかのディレクトリに対して展開が失敗してもエラーメッセージは
表示されない。
{nosuf} にTRUEが指定されない限り、オプション 'wildignore' が
適用される。つまり、'wildignore' のパターンにマッチする名前は
スキップされる。
{list} が指定され、その値がTRUEなら、マッチしたすべてのファ
イルがリスト List として返る。リストとして受け取る利点は、改
行文字を含んだファイル名も正しく扱えることである。{list} を指
定しなかった場合は、戻り値は文字列であり、マッチした複数のファ
イル名は <NL> 文字で連結されてしまう。例:
{alllinks} はglob()の場合と同様に扱われる。
"**" を使ってディレクトリツリーを再帰的に検索することができる。
例えば、'runtimepath' とそれ以下のディレクトリから全ての
"README.txt" を探すには次のようにする:
オプション 'path' の値をそのまま使うとうまく動かないことが
ある。
method としても使用でき、ベースは第2引数として渡される:
戻り値の型: String または list<string> または list<any>。
{list} による
has({feature} [, {check}]) has()
{check} がない、もしくは0: 結果は機能{feature}がサポートしてい
る場合1、されない場合0となる。引数{feature}は文字列で大文字/
小文字の区別が無視される。下記の feature-list を参照。
{check} があり、0でない: 結果は数値で、機能{feature}が既知であ
る場合1、そうでない場合0となる。これは {feature} の誤字のチェッ
クとデッドコードの検知に便利。古いバージョンの Vim は後で追加
される機能のことは知らず、現在のバージョンの Vim は放棄された
機能のことを知らないということに注意。
exists() と exists_compiled() も参照。
Note ある機能が無い時に文法エラーとなるコードをスキップするた
めには、Vim は行の残りをスキップし、後続の endif を見逃すか
もしれないことに注意。そのためには、endif を独立した行に置く
:
なくなる。
戻り値の型: Number
has_key({dict}, {key}) has_key()
結果は数値で、辞書Dictionary {dict}がキー{key}の要素を持つな
ら真、持たないなら偽となる。
引数 {key} は文字列。Vim9 script では数値も受け入れられる
(そして文字列に変換される) が、他の型は受け入れられない。
旧来のスクリプトでは、通常の文字列への自動変換が行われる。
method としても使用できる:
戻り値の型: Number
haslocaldir([{winnr} [, {tabnr}]]) haslocaldir()
結果は数値である:
1 ウィンドウが :lcd によってローカルディレクトリを設定
している時
2 タブページが :tcd によってローカルディレクトリを設定
している時
0 その他
引数が指定されない場合、現在のウィンドウを対象とする。
{winnr}が指定された場合、現在のタブページ内の{winnr}のウィンド
ウを対象とする。
{winnr}と{tabnr}が指定された場合、{tabnr}のタブページ内の
{winnr}のウィンドウを対象とする。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
{winnr}が -1 の場合は無視され、タブページのみが使用される。
もし引数が不正の場合、0 を返す。
例:
method としても使用できる:
戻り値の型: Number
hasmapto({what} [, {mode} [, {abbr}]]) hasmapto()
結果は数値。右辺側(マップした先)の一部分に{what}を含むマッピン
グが存在し、それが{mode}で指定されたモードのいずれかで定義され
ているなら真を返す。
引数 {what} と {mode} は文字列。
{abbr}が指定されていてTRUEのときはマッピングでなく短縮入力の
存在を判定する。挿入モードまたはコマンドモードを指定することを
忘れないように。
グローバルマップとバッファローカルマップの両方をチェックする。
マッピングが1個も見つからなかったときは偽を返す。
{mode}に対しては以下の文字が利用できる:
n ノーマルモード
v ビジュアルモードおよび選択モード
x ビジュアルモード
s 選択モード
o オペレータ待機モード (Operator-pending)
i 挿入モード
l Language-Argumentモード ("r", "f", "t" など)
c コマンドラインモード
{mode}が省略されたときは "nvo" となる。
この関数はVim scriptの中で、ある関数へのマッピングが既に存在す
るか判定するために有用である。例:
"\ABCdoit" へのマッピングを作成する。
method としても使用できる:
戻り値の型: Number
histadd({history}, {item}) histadd()
文字列{item}を履歴{history}に追加する。履歴{history}は以下のう
ちどれか一つから選択: hist-names
"cmd" or ":" コマンドライン履歴
"search" or "/" 検索パターン履歴
"expr" or "=" タイプされた式の履歴
"input" or "@" input()の履歴
"debug" or ">" デバッグコマンドの履歴
{history} 文字列はフルネームで指定する必要はありません。頭文字
だけでも構いません。
{item}が履歴内に既に存在する場合、それが最新の項目の位置へシフ
トされる。結果は数値:操作が成功した場合真、そうでなければ偽が
返る。
例:
method としても使用でき、ベースは第2引数として渡される:
戻り値の型: Number
histdel({history} [, {item}]) histdel()
{history}の内容を削除する。例えば全てのエントリを消すこともで
きる。{history}の部分に可能な値はhist-namesを参照。
パラメーター{item}が文字列に評価される場合、これは正規表現と
して扱われる。その表現にマッチする全てのエントリがhistoryから
削除される(複数あっても)。
"\c" をつけない場合、大文字・小文字が一致しなければならない。
/\c。
{item}が数値に評価される場合、インデックスとして解釈される。イ
ンデックスについては:history-indexingを参照。関連するエントリ
{訳注: The respective entry} も、存在すれば削除される。
結果は削除に成功すれば真、そうでなければ偽が返る。
例:
式レジスタの履歴を削除する:
検索履歴から、"*" で始まるエントリを全て削除する:
次の3つは等価である:
最後の検索パターンを削除し、一つ前のパターンを "n" コマンド(次
のマッチへ移動)と 'hlsearch' の為に設定する:
method としても使用できる:
戻り値の型: Number
histget({history} [, {index}]) histget()
結果は{history}の第{index}エントリを表わす文字列。{history} の
部分に可能な値はhist-namesを、{index}については
:history-indexingを参照。指定されたエントリが存在しない場合
は空文字列が返される。{index}が省略された場合には、履歴中の最
新のエントリが戻り値として使用される。
例:
2つ前に行われた検索をやり直す:
:historyによって出力される{num}番目のエントリを、再度実行す
るための ":H {num}" というコマンドを定義する。
method としても使用できる:
戻り値の型: String
histnr({history}) histnr()
結果は数値で{history}の現在のエントリ数。{history}の部分に可能
な値はhist-namesを参照。エラーが起こった場合、-1が返される。
例:
method としても使用できる:
戻り値の型: Number
hlexists({name}) hlexists()
結果は数値で、{name}という名のハイライトグループが存在すれば、
真が返される。これはなんらかの方法でそのグループが既に定義され
ている時にのみ起こる。これの為に実際に何らかのハイライティング
アイテムが設定されている必要はなく、単に構文アイテムとしても使
われるだろう。
highlight_exists()
以前の名前: highlight_exists().
method としても使用できる:
戻り値の型: Number
hlget([{name} [, {resolve}]]) hlget()
ハイライトグループの全属性のリストを返す。省略可能な引数 {name}
を指定したときは、指定したハイライトグループの属性だけのリスト
を返す。ハイライトグループの {name} が無いときは空のリストを返
す。
省略可能な引数 {resolve} が v:true に設定され、ハイライトグルー
プの {name} が他のグループにリンクしているなら、リンクを再帰的
に解決して解決したハイライトグループの属性を返す。
返されるリストの各要素は、以下を含む辞書になる:
cleared 真偽値フラグ、ハイライトグループがクリアされて
いたら v:true に設定され設定があればそうではな
い。highlight-clear を参照
cterm cterm 属性。highlight-cterm を参照。
ctermbg cterm の背景色。highlight-ctermbg を参照。
ctermfg cterm の前面色。highlight-ctermfg を参照。
ctermul cterm の下線色。highlight-ctermul を参照。
default 真偽値フラグ、ハイライトグループのリンクがデ
フォルトへのリンクだと v:true。
highlight-default を参照。
font ハイライトグループのフォント。
highlight-font を参照。
gui gui 属性。highlight-gui を参照。
guibg gui の背景色。highlight-guibg を参照。
guifg gui の前面色。highlight-guifg を参照。
guisp gui の特殊色。highlight-guisp を参照。
id ハイライトグループの ID。
linksto リンクしているハイライトグループ名。
:highlight-link を参照。
name ハイライトグループ名。group-name を参照。
start ターミナルの開始コード。highlight-start を参
照。
stop ターミナルの終了コード。highlight-stop を参
照。
term term 属性。highlight-term を参照。
上記の辞書の要素 'term', 'cterm', 'gui' の値は以下の省略可能な
真偽値の要素を持つ辞書: 'bold', 'standout', 'underline',
'undercurl', 'italic', 'reverse', 'inverse', 'strikethrough'。
例:
method としても使用できる:
戻り値の型: list<dict<any>>
hlset({list}) hlset()
ハイライトグループのリストの属性を作成もしくは変更する。{list}
の各要素はハイライトグループの属性を持つ辞書。この辞書内でサ
ポートされる要素のリストは hlget() を参照。
hlget() で説明されている要素に追加して、以下の追加の要素が辞
書内でサポートされる:
force 既存の属性のあるハイライトグループへの
リンクを強制的に作成する真偽値。
ハイライトグループは 'name' 要素によって識別され、'id' 要素
(提供されていれば) は無視される。ハイライトグループの指定した
名前が存在しない場合は、作成される。そうでなければ既存のハイラ
イトグループの属性を変更する。
'term', 'cterm', 'gui' の項については空の辞書が値として使え、
一致する属性の値をクリアする。'cleared' 要素に v:true を設定し
た場合、ハイライトグループのすべての属性をクリアする。
'linksto' 要素はハイライトグループを他のハイライトグループへリ
ンクさせることができる、:highlight-link を参照。
成功で0を返し、失敗で-1を返す。
例:
method としても使用できる:
戻り値の型: Number
hlID({name}) hlID()
結果は数値で、{name}という名前のハイライトグループのID番号。そ
のハイライトグループが存在しない場合は0が返される。
これはハイライトグループについての情報を獲得するために使用され
る。例えば "Comment" グループの背景色を取得するにはこのように
する:
以前の名前: highlightID()
method としても使用できる:
戻り値の型: Number
hostname() hostname()
結果は文字列で、現在Vimが実行されているマシンの名前。名前が256
文字を超える場合、超えた部分は切り捨てられる。
戻り値の型: String
iconv({string}, {from}, {to}) iconv()
文字列{string}をエンコーディング{from}からエンコーディング{to}
に変換した文字列を返す。
変換が完全に失敗したときは空文字列を返す。一部の文字が変換でき
なかった場合、その文字は "?" に置き換わる。
エンコーディング名はライブラリ関数iconv()が受け付けるものなら
なんでもよい。":!man 3 iconv" を参照。
ほとんどの変換は、Vimが+iconv機能つきでコンパイルされている
ときのみ利用可能。+iconvつきでないときもUTF-8からlatin1への
変換とその逆は行える。
オプション 'encoding' の値に関係なく、特殊な文字を含むメッセー
ジを表示するために使える。UTF-8でエンコードされたメッセージを
表示するには次のようにする:
UCS-2との変換を行おうとしても、自動的にUTF-8との変換に変更され
る。いずれにせよ、UCS-2はNULバイトを含むため、文字列にUCS-2を
使うことはできない。
method としても使用できる:
戻り値の型: String
id({item}) id()
結果は、{item} に関連付けられた一意の文字列であり、{item} の内
容に関連付けられたものではない。{item} が存在し参照されている
間のみ有効である。結果を生成する vim のインスタンスでのみ有効
である。全体的な考え方は、{item} の内容が変わっても
id({item}) は変わらないということである。これは、等価に基づ
くものよりもむしろ、ID 辞書を作成するための key として役立
つ。
この操作は {item} を参照せず、id を {item} に変換する関数は
ない。id を {item} にマップすると便利かもしれない。以下のよ
うに
を取得する方法を提供する。
{item} は、リスト、辞書、オブジェクト、ジョブ、チャネルまたは
Blob になる。アイテムが許可された型でない場合または null 値の
場合は、空の文字列が返される。
method としても使用できる:
戻り値の型: String
indent({lnum}) indent()
カレントバッファの{lnum}行目のインデント量を数値で返す。この
インデント量はスペース単位で数えられ、'tabstop' の値が関係する。
{lnum}はgetline()の場合と同様に扱われる。
{lnum}が無効なときは-1を返す。Vim9 script ではエラーになる。
method としても使用できる:
戻り値の型: Number
index({object}, {expr} [, {start} [, {ic}]]) index()
{object} から {expr} を探し、そのインデックスを返す。ラムダを
使って項目を選択する方法については indexof() を参照。
{object}が List の場合は、{expr}に等しい要素の最小のインデッ
クスを返す。自動的な変換は行われないので、文字列の "4" は数値
の 4 とは異なると判定される。そして数値の 4 は浮動小数点数の
4.0 とも異なる。'ignorecase' の値はここでは使用されない。大文
字・小文字は引数 {ic} で示されているように区別される。
{object}が Blob の場合は、{expr}に等しいバイト値の最小のイン
デックスを返す。
{start}が指定された場合はインデックス{start}から要素の検索を始
める(負数を指定すると末尾からの相対位置となる)。
{ic}にTRUEが指定された場合、大文字・小文字は区別されない。
そうでない場合は区別される。
{object}の中に{expr}が見つからない場合は-1を返す。
例:
method としても使用できる:
戻り値の型: Number
indexof({object}, {expr} [, {opts}]) indexof()
{expr} が v:true である {object} 内の項目のインデックスを返す。
{object} は List または Blob でなければならない。
{object} が List の場合、式が v:true になるまでリスト内の各
項目で {expr} を評価し、この項目のインデックスを返す。
{object} が Blob の場合、式が v:true になるまで Blob 内の各
バイトで {expr} を評価し、このバイトのインデックスを返す。
{expr} は string または Funcref でなければならない。
{expr} が string の場合: {object} が List であれば、{expr}
の内部では v:key は現在のリスト項目のインデックスを持ち、
v:val はその項目の値を持つ。{object} が Blob の場合、{expr}
の内部では v:key は現在のバイトのインデックスを持ち、v:val
は項目の値を持つ。
{expr} が Funcref の場合は引数を 2 つ取らなければならない:
1. 現在の項目のキーまたはインデックス。
2. 現在の項目の値。
この関数は、項目が見つかれば TRUE を返し、検索を停止しなけれ
ばならない。
オプションの引数 {opts} は辞書で、以下の項目をサポートしている:
startidx このインデックスの項目から {expr} の評価を開
始する。末尾に相対する項目は負であってもよい。
すべての項目で {expr} が v:false と評価されたときに -1 を返す。
例:
method としても使用できる:
戻り値の型: Number
input({prompt} [, {text} [, {completion}]]) input()
結果は文字列で、ユーザーがコマンドラインに入力したものが返され
る。引数 {prompt} にはプロンプト文字列か空文字列を指定する。空
文字列の場合はプロンプトなしになる。'\n' を使ってプロンプトに
改行を含めることができる。
:echohlによるハイライトの設定がプロンプトに適用される。
入力はコマンドラインと同様に行え、同じ編集コマンドやキーマップ
が使用できる。input()に入力された文字列には、他の履歴とは独立
した履歴が与えられる。
例:
省略可能な引数{text}が与えられ、空でないならば、それが入力の初
期値として、ユーザーが入力したのと同じ様に表示される。例:
省略可能な引数{completion}はこの入力において利用できる補完の種
類を指定する。この引数がないときは補完は行われない。対応してい
&nbs
VIMリファレンスマニュアル by Bram Moolenaar
組み込み関数 builtin-functions
Note: 式の評価はコンパイル時に無効することができる。その場合、組み込み関数は使
用できない。+eval と no-eval-feature を参照。
使用目的別に分類された関数については、function-list を参照。
1. 概要 builtin-function-list
2. 詳細 builtin-function-details
3. 機能リスト feature-list
4. 文字列内でのパターンマッチング string-match
==============================================================================
1. 概要 builtin-function-list
関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる。
使用法 結果 説明
abs({expr}) 浮動小数点数または数値 {expr}の絶対値
acos({expr}) 浮動小数点数 {expr}のアークコサイン
add({object}, {item}) リスト/Blob {item}を{object}に追加する
and({expr}, {expr}) 数値 ビット論理積
append({lnum}, {text}) 数値 {lnum}行目に{text}を付け加える
appendbufline({buf}, {lnum}, {text})
数値 バッファ{buf}の{lnum}行目に{text}を付
け加える
argc([{winid}]) 数値 引数内のファイルの数
argidx() 数値 引数リスト内の現在のインデックス
arglistid([{winnr} [, {tabnr}]])
数値 引数リストID
argv({nr} [, {winid}]) 文字列 引数の第{nr}番目
argv([-1, {winid}]) リスト 引数リスト
asin({expr}) 浮動小数点数 {expr}のアークサイン
assert_beeps({cmd}) 数値 {cmd} がビープ音を鳴らすことをテストす
る
assert_equal({exp}, {act} [, {msg}])
数値 {exp}と{act}が等しいかどうかテストする
assert_equalfile({fname-one}, {fname-two} [, {msg}])
数値 ファイルの内容が等しいことをテストする
assert_exception({error} [, {msg}])
数値 v:exceptionが{error}であるかテストする
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
数値 {cmd}が失敗するかどうかテストする
assert_false({actual} [, {msg}])
数値 {actual}がfalseかどうかテストする
assert_inrange({lower}, {upper}, {actual} [, {msg}])
数値 {actual}が範囲内にあるかテストする
assert_match({pat}, {text} [, {msg}]) 数値 {pat}が{text}にマッチするかテス
トする
assert_nobeep({cmd}) 数値 {cmd} がビープ音を鳴らさないことをテス
トする
assert_notequal({exp}, {act} [, {msg}]) 数値 {exp}が{act}と等しくないことを
テストする
assert_notmatch({pat}, {text} [, {msg}]) 数値 {pat}が{text}とマッチしないこと
をテストする
assert_report({msg}) 数値 テストの失敗を報告する
assert_true({actual} [, {msg}])
数値 {actual}がtrueかどうかテストする
atan({expr}) 浮動小数点数 {expr}のアークタンジェント
atan2({expr1}, {expr2}) 浮動小数点数 {expr1} / {expr2} のアークタン
ジェント
autocmd_add({acmds}) 真偽値 自動コマンドとグループのリストを追加
autocmd_delete({acmds}) 真偽値 自動コマンドとグループのリストを削除
autocmd_get([{opts}]) リスト 自動コマンドのリストを返す
balloon_gettext() 文字列 バルーン内のカレントテキストを得る
balloon_show({expr}) なし {expr} をバルーン内に表示
balloon_split({msg}) リスト {msg} をバルーンで使われるように分割す
る
bindtextdomain({package}, {path})
なし 指定されたパスにテキストドメインをバイ
ンドする
blob2list({blob}) リスト {blob} を数値のリストに変換する
browse({save}, {title}, {initdir}, {default})
文字列 ファイル選択ダイアログを表示
browsedir({title}, {initdir}) 文字列 ディレクトリ選択ダイアログを表示
bufadd({name}) 数値 バッファリストにバッファを追加する
bufexists({buf}) 数値 バッファ{buf}が存在すればTRUE
buflisted({buf}) 数値 バッファ{buf}がリストにあるならTRUE
bufload({buf}) 数値 まだバッファ{buf}がロードされていなけ
ればバッファをロードする
bufloaded({buf}) 数値 バッファ{buf}がロード済みならTRUE
bufname([{buf}]) 文字列 バッファ{buf}の名前
bufnr([{buf} [, {create}]]) 数値 バッファ{buf}の番号
bufwinid({buf}) 数値 バッファ{buf}のウィンドウID
bufwinnr({buf}) 数値 バッファ{buf}のウィンドウ番号
byte2line({byte}) 数値 {byte}番目のバイトの行番号
byteidx({expr}, {nr} [, {utf16}])
数値 {expr}の{nr}文字目のバイトインデックス
byteidxcomp({expr}, {nr} [, {utf16}])
数値 {expr}の{nr}文字目のバイトインデックス
call({func}, {arglist} [, {dict}])
任意 引数{arglist}をつけて{func}を呼ぶ
ceil({expr}) 浮動小数点数 {expr} を切り上げる
ch_canread({handle}) 数値 何か読むものがあるかをチェックする
ch_close({handle}) なし {handle} を閉じる
ch_close_in({handle}) なし {handle} の入力を閉じる
ch_evalexpr({handle}, {expr} [, {options}])
任意 {handle} に {expr} を送り応答をJSONと
して評価する
ch_evalraw({handle}, {string} [, {options}])
任意 {handle} に {string} を送り応答を生の
文字列として評価する
ch_getbufnr({handle}, {what}) 数値 {handle}/{what} に割り当てられたバッ
ファ番号を得る
ch_getjob({channel}) ジョブ {channel} の Job を得る
ch_info({handle}) 文字列 チャネル {handle} に関する情報を得る
ch_log({msg} [, {handle}]) なし チャネルのログファイルに {msg} を書き
込む
ch_logfile({fname} [, {mode}]) なし チャネルの挙動ログ出力を開始する
ch_open({address} [, {options}])
チャネル {address} へのチャネルを開く
ch_read({handle} [, {options}]) 文字列 {handle} から読み込む
ch_readblob({handle} [, {options}])
Blob {handle} からBlobを読み込む
ch_readraw({handle} [, {options}])
文字列 {handle} から生の文字列を読み込む
ch_sendexpr({handle}, {expr} [, {options}])
任意 {expr}をJSONチャネル{handle}に送る
ch_sendraw({handle}, {expr} [, {options}])
任意 {expr}をrawチャネル{handle}に送る
ch_setoptions({handle}, {options})
なし {handle}にオプションを設定する
ch_status({handle} [, {options}])
文字列 チャネル{handle}の状態
changenr() 数値 現在の変更番号
char2nr({expr} [, {utf8}]) 数値 {expr}の先頭文字のASCII/UTF-8コード
charclass({string}) 数値 {string} の文字クラス
charcol({expr} [, {winid}]) 数値 カーソルかマークのカラム番号
charidx({string}, {idx} [, {countcc} [, {utf16}]])
数値 {string} のバイト {idx} の文字のイン
デックス
chdir({dir}) 文字列 現在の作業ディレクトリを変更する
cindent({lnum}) 数値 {lnum}行目のCインデント量
clearmatches([{win}]) なし 全マッチをクリアする
col({expr} [, {winid}]) 数値 カーソルかマークのカラムバイトインデッ
クス
complete({startcol}, {matches}) なし 挿入モード補完を設定する
complete_add({expr}) 数値 補完候補を追加する
complete_check() 数値 補完中に押されたキーをチェックする
complete_info([{what}]) 辞書 現在の補完情報を取得
confirm({msg} [, {choices} [, {default} [, {type}]]])
数値 ユーザーへの選択肢と番号
copy({expr}) 任意 {expr}の浅いコピーを作る
cos({expr}) 浮動小数点数 {expr} の余弦(コサイン)
cosh({expr}) 浮動小数点数 {expr}のハイパボリックコサイン
count({comp}, {expr} [, {ic} [, {start}]])
数値 {comp}中に{expr}が何個現れるか数える
cscope_connection([{num}, {dbpath} [, {prepend}]])
数値 cscope接続の存在を判定する
cursor({lnum}, {col} [, {off}])
数値 カーソルを{lnum}, {col}, {off}へ移動
cursor({list}) 数値 カーソルを{list}の位置へ移動
debugbreak({pid}) 数値 デバッグするプロセスへ割り込む
deepcopy({expr} [, {noref}]) 任意 {expr}の完全なコピーを作る
delete({fname} [, {flags}]) 数値 ファイルやディレクトリ{fname}を消す
deletebufline({buf}, {first} [, {last}])
数値 バッファ {buf} から行を削除する
did_filetype() 数値 FileTypeのautocommandが実行されたか?
diff({fromlist}, {tolist} [, {options}])
リスト 2 つの文字列のリストの差分
diff_filler({lnum}) 数値 差分モードで{lnum}に挿入された行
diff_hlID({lnum}, {col}) 数値 差分モードで{lnum}/{col}位置の強調
digraph_get({chars}) 文字列 {chars} のダイグラフ digraph を取得
digraph_getlist([{listall}]) リスト すべてのダイグラフ digraph を取得
digraph_set({chars}, {digraph}) 真偽値 ダイグラフ digraph の登録
digraph_setlist({digraphlist}) 真偽値 複数のダイグラフ digraph の登録
echoraw({expr}) なし {expr} をそのまま出力する
empty({expr}) 数値 {expr}が空ならTRUE
environ() 辞書 すべての環境変数を返す
err_teapot([{expr}]) なし {expr} が TRUE の場合、E418、または
E503 を与える
escape({string}, {chars}) 文字列 {string}内の{chars}を '\' でエスケープ
eval({string}) 任意 {string}を評価し、値を得る
eventhandler() 数値 イベントハンドラの内側ならTRUE
executable({expr}) 数値 実行可能な{expr}が存在するなら1
execute({command}) 文字列 {command}を実行し、出力を得る
exepath({expr}) 文字列 コマンド {expr} のフルパス
exists({expr}) 数値 変数{expr}が存在したらTRUE
exists_compiled({expr}) 数値 変数{var}がコンパイル時に存在したらTRUE
exp({expr}) 浮動小数点数 {expr}の指数
expand({expr} [, {nosuf} [, {list}]])
任意 {expr}内の特別なキーワードを展開
expandcmd({string} [, {options}])
文字列 :edit のように{string}を展開
extend({expr1}, {expr2} [, {expr3}])
リスト/辞書 {expr1}に{expr2}を要素として挿入
extendnew({expr1}, {expr2} [, {expr3}])
リスト/辞書 extend() と同じだが新しいリスト/
辞書を作る
feedkeys({string} [, {mode}]) 数値 先行入力バッファにキーシーケンスを追加
filecopy({from}, {to}) 数値 ファイル {from} を {to} へコピーできた
場合は TRUE
filereadable({file}) 数値 {file}が読み込み可能ならTRUE
filewritable({file}) 数値 {file}が書き込み可能ならTRUE
filter({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr2} が0となる要素を {expr1} からと
り除く
finddir({name} [, {path} [, {count}]])
文字列 {path}からディレクトリ{name}を探す
findfile({name} [, {path} [, {count}]])
文字列 {path}からファイル{name}を探す
flatten({list} [, {maxdepth}]) リスト リスト {list} を {maxdepth} の深さまで
平坦化する
flattennew({list} [, {maxdepth}])
リスト {list} のコピーを平坦化する
float2nr({expr}) 数値 浮動小数点数 {expr} を数値に変換する
floor({expr}) 浮動小数点数 {expr} を切り捨てる
fmod({expr1}, {expr2}) 浮動小数点数 {expr1} / {expr2} の余り
fnameescape({fname}) 文字列 {fname} 内の特殊文字をエスケープする
fnamemodify({fname}, {mods}) 文字列 ファイル名を変更
foldclosed({lnum}) 数値 {lnum}の折り畳みの最初の行(閉じている
なら)
foldclosedend({lnum}) 数値 {lnum}の折り畳みの最後の行(閉じている
なら)
foldlevel({lnum}) 数値 {lnum}の折り畳みレベル
foldtext() 文字列 閉じた折り畳みに表示されている行
foldtextresult({lnum}) 文字列 {lnum}で閉じている折り畳みのテキスト
foreach({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr1} の各項目に対して {expr2} を呼
び出す
foreground() 数値 Vimウィンドウを前面に移動する
fullcommand({name} [, {vim9}]) 文字列 {name} から完全なコマンドを取得
funcref({name} [, {arglist}] [, {dict}])
Funcref 関数{name}への参照
function({name} [, {arglist}] [, {dict}])
Funcref 名前による関数{name}への参照
garbagecollect([{atexit}]) なし メモリを解放する。循環参照を断ち切る
get({list}, {idx} [, {def}]) 任意 {list}や{def}から要素{idx}を取得
get({dict}, {key} [, {def}]) 任意 {dict}や{def}から要素{key}を取得
get({func}, {what}) 任意 funcref/partial {func}のプロパティ取得
getbufinfo([{buf}]) リスト バッファに関する情報
getbufline({buf}, {lnum} [, {end}])
リスト バッファ{buf}の{lnum}から{end}行目
getbufoneline({buf}, {lnum}) 文字列 バッファ{buf}の{lnum}行目
getbufvar({buf}, {varname} [, {def}])
任意 バッファ{buf}の変数 {varname}
getcellpixels() リスト 文字のセルのピクセルサイズを取得する
getcellwidths() リスト 文字のセル幅の上書き設定を取得
getchangelist([{buf}]) リスト 変更リスト要素のリスト
getchar([{expr}]) 数値/文字列 ユーザーから1文字を取得する
getcharmod() 数値 修飾キーの状態を表す数値を取得
getcharpos({expr}) リスト カーソル、マーク、その他のカーソル位置
getcharsearch() 辞書 最後の文字検索を取得
getcharstr([{expr}]) 文字列 ユーザーから1文字を取得する
getcmdcomplpat() 文字列 現在のコマンドライン補完の補完パターン
を返す
getcmdcompltype() 文字列 現在のコマンドライン補完のタイプを返す
getcmdline() 文字列 現在のコマンドライン入力を取得
getcmdpos() 数値 コマンドラインのカーソル位置を取得
getcmdprompt() 文字列 現在のコマンドラインプロンプトを取得
getcmdscreenpos() 数値 コマンドラインのカーソルのスクリーン位
置を返す
getcmdtype() 文字列 現在のコマンドラインの種類を取得
getcmdwintype() 文字列 現在のコマンドラインウィンドウの種類
getcompletion({pat}, {type} [, {filtered}])
リスト コマンドライン補完にマッチするリスト
getcurpos([{winnr}]) リスト カーソルの位置
getcursorcharpos([{winnr}]) リスト カーソルの位置の文字
getcwd([{winnr} [, {tabnr}]]) 文字列 現在の作業ディレクトリを取得
getenv({name}) 文字列 環境変数を返す
getfontname([{name}]) 文字列 使用しているフォントの名前
getfperm({fname}) 文字列 ファイル{fname}の許可属性を取得
getfsize({fname}) 数値 ファイル{fname}のバイト数を取得
getftime({fname}) 数値 ファイルの最終更新時間
getftype({fname}) 文字列 ファイル{fname}の種類の説明
getimstatus() 数値 IME がアクティブの場合は TRUE
getjumplist([{winnr} [, {tabnr}]])
リスト ジャンプリスト要素のリスト
getline({lnum}) 文字列 現在のバッファから行の内容を取得
getline({lnum}, {end}) リスト カレントバッファの{lnum}から{end}行目
getloclist({nr}) リスト locationリストの要素のリスト
getloclist({nr}, {what}) 辞書 指定したlocationリストのプロパティ
getmarklist([{buf}]) リスト グローバル/ローカルのマークのリスト
getmatches([{win}]) リスト 現在のマッチのリスト
getmousepos() 辞書 マウスの最新の位置
getmouseshape() 文字列 現在のマウス形状名
getpid() 数値 Vim のプロセス ID
getpos({expr}) リスト カーソル・マークなどの位置を取得
getqflist() リスト quickfixリストの要素のリスト
getqflist({what}) 辞書 指定したquickfixリストのプロパティ
getreg([{regname} [, 1 [, {list}]]])
文字列/リスト レジスタの中身を取得
getreginfo([{regname}]) 辞書 レジスタについての情報
getregion({pos1}, {pos2} [, {opts}])
リスト {pos1}から{pos2}までのテキストを取得
getregionpos({pos1}, {pos2} [, {opts}])
リスト 領域の位置のリストを取得
getregtype([{regname}]) 文字列 レジスタの種類を取得
getscriptinfo([{opts}]) リスト 読み込まれたスクリプトの一覧
gettabinfo([{expr}]) リスト タブページのリスト
gettabvar({nr}, {varname} [, {def}])
任意 タブ{nr}の変数{varname}または{def}
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
任意 タブページ{tabnr}の{winnr}の{name}
gettagstack([{nr}]) 辞書 ウィンドウ{nr}のタグスタックを取得
gettext({text} [, {package}]) 文字列 {text} の翻訳の検索
getwininfo([{winid}]) リスト 各ウィンドウに関する情報のリスト
getwinpos([{timeout}]) リスト Vim ウィンドウのピクセルでの X および
Y 座標
getwinposx() 数値 Vim ウィンドウのピクセルでの X 座標
getwinposy() 数値 Vim ウィンドウのピクセルでの Y 座標
getwinvar({nr}, {varname} [, {def}])
文字列 ウィンドウ{nr}の変数{varname}
glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
任意 {expr}内のfile wildcardを展開
glob2regpat({expr}) 文字列 globパターンを検索パターンに変換
globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
文字列 {path}の全ディレクトリに対し
glob({expr})を行う
has({feature} [, {check}]) 数値 機能{feature}がサポートならばTRUE
has_key({dict}, {key}) 数値 {dict}が要素{key}を持つならTRUE
haslocaldir([{winnr} [, {tabnr}]])
数値 現在のウィンドウで :lcd か :tcd が
実行されたならTRUE
hasmapto({what} [, {mode} [, {abbr}]])
数値 {what}のマッピングが存在するならTRUE
histadd({history}, {item}) 数値 ヒストリに追加
histdel({history} [, {item}]) 数値 ヒストリからitemを削除
histget({history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得
histnr({history}) 数値 ヒストリの数
hlID({name}) 数値 highlight group {name}のID
hlexists({name}) 数値 highlight group {name}が存在したらTRUE
hlget([{name} [, {resolve}]]) リスト highlight group の属性を取得
hlset({list}) 数値 highlight group の属性を設定
hostname() 文字列 vimが動作しているマシンの名前
iconv({expr}, {from}, {to}) 文字列 {expr}のエンコーディングを変換する
id({item}) 文字列 一意の ID 文字列を取得
indent({lnum}) 文字列 行{lnum}のインデントを取得
index({object}, {expr} [, {start} [, {ic}]])
数値 {object}中に{expr}が現れる位置
indexof({object}, {expr} [, {opts}]])
数値 {expr} が true となる {object} 内のイ
ンデックス
input({prompt} [, {text} [, {completion}]])
文字列 ユーザーからの入力を取得
inputdialog({prompt} [, {text} [, {cancelreturn}]])
文字列 input()と同様。GUIのダイアログを使用
inputlist({textlist}) 数値 ユーザーに選択肢から選ばせる
inputrestore() 数値 先行入力を復元する
inputsave() 数値 先行入力を保存し、クリアする
inputsecret({prompt} [, {text}]) 文字列 input()だがテキストを隠す
insert({object}, {item} [, {idx}])
リスト {object}に要素{item}を挿入 [{idx}の前]
instanceof({object}, {class}) 数値 {object} が {class} のインスタンスの場
合は TRUE
interrupt() なし スクリプトの実行を中断する
invert({expr}) 数値 ビット反転
isabsolutepath({path}) 数値 {path} が絶対パスならば TRUE
isdirectory({directory}) 数値 {directory}がディレクトリならばTRUE
isinf({expr}) 数値 {expr}が無限大の値(正または負)かどうか
を判定する
islocked({expr}) 数値 {expr}がロックされているならTRUE
isnan({expr}) 数値 {expr}がNaNならばTRUE
items({dict}) リスト {dict}のキーと値のペアを取得
job_getchannel({job}) チャネル {job}のチャネルハンドルを取得
job_info([{job}]) 辞書 {job}についての情報を取得
job_setoptions({job}, {options}) なし {job}のオプションを設定する
job_start({command} [, {options}])
ジョブ ジョブを開始する
job_status({job}) 文字列 {job}のステータスを取得する
job_stop({job} [, {how}]) 数値 {job}を停止する
join({list} [, {sep}]) 文字列 {list}の要素を連結して文字列にする
js_decode({string}) 任意 JS形式のJSONをデコードする
js_encode({expr}) 文字列 JS形式のJSONにエンコードする
json_decode({string}) 任意 JSONをデコードする
json_encode({expr}) 文字列 JSONにエンコードする
keys({dict}) リスト {dict}のキーを取得
keytrans({string}) 文字列 内部キーコードを :map で使用できる形
式に変換する
len({expr}) 数値 {expr}の長さを取得
libcall({lib}, {func}, {arg}) 文字列 ライブラリ{lib}の関数{func}をコール
libcallnr({lib}, {func}, {arg}) 数値 上と同じ。ただし数値を返す
line({expr} [, {winid}]) 数値 行番号の取得
line2byte({lnum}) 数値 行{lnum}のバイトカウント
lispindent({lnum}) 数値 {lnum}行目のLispインデント量を取得
list2blob({list}) Blob 数値のリスト {list} をBlobに変換する
list2str({list} [, {utf8}]) 文字列 数値のリスト {list} を文字列に変換する
listener_add({callback} [, {buf}])
数値 変更を監視するためのコールバックを追加
listener_flush([{buf}]) なし リスナーコールバックを呼び出す
listener_remove({id}) なし リスナーコールバックを削除する
localtime() 数値 現在時刻
log({expr}) 浮動小数点数 {expr}の自然対数(底e)
log10({expr}) 浮動小数点数 浮動小数点数 {expr} の 10 を底
とする対数
luaeval({expr} [, {expr}]) 任意 Lua の式を評価する
map({expr1}, {expr2}) リスト/辞書/Blob/文字列
{expr1} の各要素を {expr2} に変える
maparg({name} [, {mode} [, {abbr} [, {dict}]]])
文字列/辞書
モード{mode}でのマッピング{name}の値
mapcheck({name} [, {mode} [, {abbr}]])
文字列 {name}にマッチするマッピングを確認
maplist([{abbr}]) リスト 全マッピングのリスト、各要素は辞書
mapnew({expr1}, {expr2}) リスト/辞書/Blob/文字列
map() と同様だが新規のリストか辞書を
作る
mapset({mode}, {abbr}, {dict}) なし maparg() の結果からマッピングを復元
する
match({expr}, {pat} [, {start} [, {count}]])
数値 {expr}内で{pat}がマッチする位置
matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
数値 {pattern} を {group} で強調表示する
matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
数値 位置を {group} で強調表示する
matcharg({nr}) リスト :matchの引数
matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict})
リスト バッファ {buf} 内のすべての {pat} の
マッチ
matchdelete({id} [, {win}]) 数値 {id} で指定されるマッチを削除する
matchend({expr}, {pat} [, {start} [, {count}]])
数値 {expr}内で{pat}が終了する位置
matchfuzzy({list}, {str} [, {dict}])
リスト {list} 内について {str} でのファジー
マッチ
matchfuzzypos({list}, {str} [, {dict}])
リスト {list} 内について {str} でのファジー
マッチ
matchlist({expr}, {pat} [, {start} [, {count}]])
リスト {expr}内の{pat}のマッチと部分マッチ
matchstr({expr}, {pat} [, {start} [, {count}]])
文字列 {expr}内の{count}番目の{pat}のマッチ
matchstrlist({list}, {pat} [, {dict})
リスト {list} 内のすべての {pat} にマッチ
matchstrpos({expr}, {pat} [, {start} [, {count}]])
リスト {expr}内の{count}番目の{pat}のマッチ
max({expr}) 数値 {expr}内の要素の最大値
menu_info({name} [, {mode}]) 辞書 メニューの項目情報を取得する
min({expr}) 数値 {expr}内の要素の最小値
mkdir({name} [, {flags} [, {prot}]])
数値 ディレクトリ{name}を作成
mode([{expr}]) 文字列 現在の編集モード
mzeval({expr}) 任意 MzScheme の式を評価する
nextnonblank({lnum}) 数値 {lnum}行目以降で空行でない行の行番号
nr2char({expr} [, {utf8}]) 文字列 ASCII/UTF-8コード{expr}で示される文字
or({expr}, {expr}) 数値 ビット論理和
pathshorten({expr} [, {len}]) 文字列 path内の短縮したディレクトリ名
perleval({expr}) 任意 Perlの式を評価する
popup_atcursor({what}, {options}) 数値 カーソルの近くにポップアップウィンドウ
を作成する
popup_beval({what}, {options}) 数値 'balloon_eval' のポップアップウィンド
ウを作成する
popup_clear() なし すべてのポップアップウィンドウを閉じる
popup_close({id} [, {result}]) なし {id} のポップアップウィンドウを閉じる
popup_create({what}, {options}) 数値 ポップアップウィンドウを作成する
popup_dialog({what}, {options}) 数値 ダイアログとしてポップアップウィンドウ
を作成する
popup_filter_menu({id}, {key}) 数値 ポップアップウィンドウのメニューのフィ
ルター
popup_filter_yesno({id}, {key}) 数値 ポップアップウィンドウのダイアログの
popup_findecho() 数値 :echowin のポップアップのウィンドウ
ID を取得する
フィルター
popup_findinfo() 数値 情報ポップアップウィンドウの window ID
を取得する
popup_findpreview() 数値 プレビューポップアップウィンドウの
window ID を取得する
popup_getoptions({id}) 辞書 ポップアップウィンドウ {id} のオプショ
ンを取得する
popup_getpos({id}) 辞書 ポップアップウィンドウ {id} の位置を取
得する
popup_hide({id}) なし ポップアップメニュー {id} を隠す
popup_list() リスト 全ポップアップのウィンドウIDのリストを
取得する
popup_locate({row}, {col}) 数値 指定位置のポップアップのウィンドウIDを
取得する
popup_menu({what}, {options}) 数値 メニューとして使われるポップアップウィ
ンドウを作成する
popup_move({id}, {options}) なし ポップアップウィンドウ {id} の位置を
セットする
popup_notification({what}, {options})
数値 ポップアップウィンドウの通知を作成する
popup_setbuf({id}, {buf}) 真偽値 ポップアップウィンドウ {id} のバッファ
を設定する
popup_setoptions({id}, {options})
なし ポップアップウィンドウ {id} のオプショ
ンを設定する
popup_settext({id}, {text}) なし ポップアップウィンドウ {id} のテキスト
を設定する
popup_show({id}) なし ポップアップウィンドウ {id} を再表示す
る
pow({x}, {y}) 浮動小数点数 {x} の {y} 乗
prevnonblank({lnum}) 数値 {lnum}行目以前の空行でない行の行番号
printf({fmt}, {expr1}...) 文字列 文字列を組み立てる
prompt_getprompt({buf}) 文字列 プロンプト文字列の取得
prompt_setcallback({buf}, {expr}) なし プロンプトコールバック関数を設定する
prompt_setinterrupt({buf}, {text}) なし プロンプト割り込み関数を設定する
prompt_setprompt({buf}, {text}) なし プロンプトテキストを設定する
prop_add({lnum}, {col}, {props}) なし テキストプロパティ1つを追加
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
なし 複数のテキストプロパティを追加
prop_clear({lnum} [, {lnum-end} [, {props}]])
なし 全てのテキストプロパティを削除
prop_find({props} [, {direction}])
辞書 テキストプロパティを検索する
prop_list({lnum} [, {props}]) リスト {lnum}行目のテキストプロパティを取得
prop_remove({props} [, {lnum} [, {lnum-end}]])
数値 テキストプロパティを削除
prop_type_add({name}, {props}) なし 新しいプロパティタイプを定義
prop_type_change({name}, {props})
なし 既存のプロパティタイプを変更
prop_type_delete({name} [, {props}])
なし プロパティタイプを削除
prop_type_get({name} [, {props}])
辞書 プロパティタイプの値を取得
prop_type_list([{props}]) リスト プロパティタイプ一覧を取得
pum_getpos() 辞書 ポップアップメニューが表示されている場
合、位置とサイズを取得
pumvisible() 数値 ポップアップメニューが表示されているか
py3eval({expr} [, {locals}]) 任意 python3 の式を評価する
pyeval({expr} [, {locals}]) 任意 Python の式を評価する
pyxeval({expr} [, {locals}]) 任意 python_x の式を評価する
rand([{expr}]) 数値 疑似乱数を取得する
range({expr} [, {max} [, {stride}]])
リスト {expr}から{max}までの要素のリスト
readblob({fname} [, {offset} [, {size}]])
Blob {fname} から Blob を読む
readdir({dir} [, {expr} [, {dict}]])
リスト {expr}によって選択された{dir}内のファ
イル名を取得
readdirex({dir} [, {expr} [, {dict}]])
リスト {expr}によって選択された{dir}内のファ
イル情報を取得
readfile({fname} [, {type} [, {max}]])
リスト ファイル{fname}から行のリストを取得
reduce({object}, {func} [, {initial}])
任意 {func} を使って {object} の 畳み込み
(reduce) を行う
reg_executing() 文字列 実行中のレジスタ名を取得する
reg_recording() 文字列 記録中のレジスタ名を取得する
reltime([{start} [, {end}]]) リスト 時刻の値を取得
reltimefloat({time}) 浮動小数点数 時刻の値を浮動小数点に変換
reltimestr({time}) 文字列 時刻の値を文字列に変換
remote_expr({server}, {string} [, {idvar} [, {timeout}]])
文字列 式を送信する
remote_foreground({server}) 数値 Vimサーバーを前面に出す
remote_peek({serverid} [, {retvar}])
数値 返信文字列を確認する
remote_read({serverid} [, {timeout}])
文字列 返信文字列を読み込む
remote_send({server}, {string} [, {idvar}])
文字列 キーシーケンスを送信する
remote_startserver({name}) なし サーバー {name} になる
remove({list}, {idx} [, {end}]) 任意/リスト
{list}から{idx}と{end}間の要素を削除
remove({blob}, {idx} [, {end}]) 数値/Blob
{Blob}から{idx}と{end}間のバイトを削除
remove({dict}, {key}) 任意 {dict}から要素{key}を削除
rename({from}, {to}) 数値 {file}から{to}へファイル名変更
repeat({expr}, {count}) リスト/Blob/文字列
{expr}を{count}回繰り返す
resolve({filename}) 文字列 ショートカットが指す先のファイル名
reverse({obj}) リスト/Blob/文字列
{obj} を反転させる
round({expr}) 浮動小数点数 {expr} を四捨五入する
rubyeval({expr}) 任意 Ruby の式を評価
screenattr({row}, {col}) 数値 スクリーン位置の属性
screenchar({row}, {col}) 数値 スクリーン位置の文字
screenchars({row}, {col}) リスト スクリーン位置の文字のリスト
screencol() 数値 現在のカーソル列
screenpos({winid}, {lnum}, {col}) 辞書 スクリーン行と列のテキスト
screenrow() 数値 現在のカーソル行
screenstring({row}, {col}) 文字列 スクリーン位置の文字列
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
数値 {pattern} を検索する
searchcount([{options}]) 辞書 検索の統計の取得もしくは更新する
searchdecl({name} [, {global} [, {thisblock}]])
数値 変数の宣言を検索
searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
数値 開始/終端のペアの他方を検索
searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
リスト 開始/終端のペアの他方を検索
searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
リスト {pattern}を検索
server2client({clientid}, {string})
数値 返信文字列を送信する
serverlist() 文字列 利用可能なサーバーのリストを取得
setbufline({buf}, {lnum}, {text})
数値 バッファ {buf} の {lnum} 行目に {text}
を設定する
setbufvar({buf}, {varname}, {val}) バッファ{buf}内の変数{varname}に{val}を
セット
setcellwidths({list}) なし 文字のセル幅の上書き設定
setcharpos({expr}, {list}) 数値 {list} の {expr} 位置に設定
setcharsearch({dict}) 辞書 文字検索を{dict}に設定
setcmdline({str} [, {pos}]) 数値 コマンドラインを設定する
setcmdpos({pos}) 数値 コマンドライン内のカーソル位置を設定
setcursorcharpos({list}) 数値 {list} の位置へカーソルを移動
setenv({name}, {val}) なし 環境変数を設定
setfperm({fname}, {mode}) 数値 ファイル {fname} のパーミッションを
{mode} に設定
setline({lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット
setloclist({nr}, {list} [, {action}])
数値 {list}を使ってlocationリストを変更
setloclist({nr}, {list}, {action}, {what})
数値 指定したlocationリストのプロパティを
変更
setmatches({list} [, {win}]) 数値 マッチのリストを復元する
setpos({expr}, {list}) なし {expr}の位置を{list}にする
setqflist({list} [, {action}]) 数値 {list}を使ってquickfixリストを変更
setqflist({list}, {action}, {what})
数値 指定したquickfixリストのプロパティを
変更
setreg({n}, {v} [, {opt}]) 数値 レジスタの値とタイプを設定
settabvar({nr}, {varname}, {val}) なし タブページ{nr}の変数{varname}を{val}に
設定する
settabwinvar({tabnr}, {winnr}, {varname}, {val})
なし タブページ{tabnr}内のウィンドウ{winnr}
の変数{varname}に{val}をセット
settagstack({nr}, {dict} [, {action}])
数値 {dict}を使ってタグスタックを変更
setwinvar({nr}, {varname}, {val}) なし ウィンドウ{nr}の変数{varname}に{val}を
セット
sha256({string}) 文字列 {string}のSHA256チェックサム
shellescape({string} [, {special}])
文字列 {string}をシェルコマンド引数として使う
ためにエスケープする。
shiftwidth([{col}]) 数値 実際に使用される 'shiftwidth' の値
sign_define({name} [, {dict}]) 数値 目印を定義または更新する
sign_define({list}) リスト 目印のリストを定義または更新する
sign_getdefined([{name}]) リスト 定義されている目印のリストを取得する
sign_getplaced([{buf} [, {dict}]])
リスト 設置されている目印のリストを取得する
sign_jump({id}, {group}, {buf})
数値 目印に移動する
sign_place({id}, {group}, {name}, {buf} [, {dict}])
数値 目印を設置する
sign_placelist({list}) リスト 目印のリストを設置する
sign_undefine([{name}]) 数値 目印を削除する
sign_undefine({list}) リスト 目印のリストを削除する
sign_unplace({group} [, {dict}])
数値 目印を解除する
sign_unplacelist({list}) リスト 目印のリストを解除する
simplify({filename}) 文字列 ファイル名を可能なかぎり簡略化する
sin({expr}) 浮動小数点数 {expr} の正弦(サイン)
sinh({expr}) 浮動小数点数 {expr}のハイパボリックサイン
slice({expr}, {start} [, {end}]) 文字列、リスト、Blob
文字列、リスト、Blob のスライス
sort({list} [, {how} [, {dict}]])
リスト {list} を {how} で比較してソートする
sound_clear() なし すべてのサウンドの再生を停止する
sound_playevent({name} [, {callback}])
数値 イベントサウンドを再生する
sound_playfile({path} [, {callback}])
数値 サウンドファイル{path}を再生する
sound_stop({id}) なし サウンド{id}の再生を停止する
soundfold({word}) 文字列 {word}のsound-fold
spellbadword() 文字列 カーソル位置のスペルミスした単語
spellsuggest({word} [, {max} [, {capital}]])
リスト スペリング補完
split({expr} [, {pat} [, {keepempty}]])
リスト {expr}を{pat}で区切ってリストを作る
sqrt({expr}) 浮動小数点数 {expr} の平方根
srand([{expr}]) リスト rand() 用の種を取得する
state([{what}]) 文字列 Vimの現在の状態
str2float({expr} [, {quoted}]) 浮動小数点数 文字列を浮動小数点数に変換する
str2list({expr} [, {utf8}]) リスト {expr}の各文字をASCII/UTF-8値に変換する
str2nr({expr} [, {base} [, {quoted}]])
数値 文字列を数値に変換する
strcharlen({expr}) 数値 文字列 {expr} の文字の長さ
strcharpart({str}, {start} [, {len} [, {skipcc}]])
文字列 {str} 内 {start} 文字目 から {len} 文
字分
strchars({expr} [, {skipcc}]) 数値 文字列{expr}の文字の数
strdisplaywidth({expr} [, {col}]) 数値 文字列{expr}の表示幅
strftime({format} [, {time}]) 文字列 指定されたフォーマットで時刻を書式化
strgetchar({str}, {index}) 数値 {str} から {index} 番目の文字インデッ
クスを得る
stridx({haystack}, {needle} [, {start}])
数値 {haystack}内の{needle}のインデックス
string({expr}) 文字列 {expr}の値の文字列表現
strlen({expr}) 数値 文字列{expr}の長さ
strpart({str}, {start} [, {len} [, {chars}]])
文字列 {str}内{start}バイトから{len}バイト/
文字分
strptime({format}, {timestring})
数値 {timestring} を unix タイムスタンプに
変換
strridx({haystack}, {needle} [, {start}])
数値 {haystack}内の最後の{needle}のインデッ
クス
strtrans({expr}) 文字列 文字列を表示可能に変更
strutf16len({string} [, {countcc}])
数値 {string} の UTF-16 コード単位の数
strwidth({expr}) 数値 文字列{expr}の表示セル幅
submatch({nr} [, {list}]) 文字列/リスト
":s" やsubstitute()における特定のマッチ
substitute({expr}, {pat}, {sub}, {flags})
文字列 {expr}の{pat}を{sub}に置換え
swapfilelist() リスト 'directory' 内で見つかったスワップファイ
ルのリスト
swapinfo({fname}) 辞書 スワップファイル {fname} に関する情報
swapname({buf}) 文字列 バッファ{buf}のスワップファイル名
synID({lnum}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得
synIDattr({synID}, {what} [, {mode}])
文字列 syntax ID{synID}の属性{what}を取得
synIDtrans({synID}) 数値 {synID}の翻訳されたsyntax ID
synconcealed({lnum}, {col}) リスト Conceal の情報
synstack({lnum}, {col}) リスト {lnum}行{col}列目における構文IDの
スタック
system({expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果
systemlist({expr} [, {input}]) リスト シェルコマンド{expr}の出力結果
tabpagebuflist([{arg}]) リスト タブページ内のバッファ番号のリスト
tabpagenr([{arg}]) 数値 現在または最後のタブページの番号
tabpagewinnr({tabarg} [, {arg}])
数値 タブページ内の現在のウィンドウの番号
tagfiles() リスト 使用しているタグファイルのリスト
taglist({expr} [, {filename}]) リスト {expr}にマッチするタグのリスト
tan({expr}) 浮動小数点数 {expr}のタンジェント
tanh({expr}) 浮動小数点数 {expr}のハイパボリックタンジェ
ント
tempname() 文字列 テンポラリファイルの名前
term_dumpdiff({filename}, {filename} [, {options}])
数値 2 つのダンプ間の差分を表示する
term_dumpload({filename} [, {options}])
数値 スクリーンダンプの表示
term_dumpwrite({buf}, {filename} [, {options}])
なし 端末ウィンドウの内容をダンプする
term_getaltscreen({buf}) 数値 代替スクリーンフラグを取得する
term_getansicolors({buf}) リスト GUI カラーモードでの ANSI パレットを取
得する
term_getattr({attr}, {what}) 数値 属性 {what} の値を取得する
term_getcursor({buf}) リスト 端末のカーソル位置を取得する
term_getjob({buf}) ジョブ 端末に関連付けられているジョブを取得す
る
term_getline({buf}, {row}) 文字列 端末から 1 行のテキストを取得する
term_getscrolled({buf}) 数値 端末のスクロール数を取得する
term_getsize({buf}) リスト 端末のサイズを取得する
term_getstatus({buf}) 文字列 端末の状態を取得する
term_gettitle({buf}) 文字列 端末のタイトルを取得する
term_gettty({buf}, [{input}]) 文字列 端末の tty 名を取得する
term_list() リスト 端末バッファのリストを取得する
term_scrape({buf}, {row}) リスト 端末スクリーンの行を取得する
term_sendkeys({buf}, {keys}) なし キー入力を端末に送信する
term_setansicolors({buf}, {colors})
なし GUI カラーモードでの ANSI パレットを設
定する
term_setapi({buf}, {expr}) なし terminal-api の関数名プリフィックス
を設定する
term_setkill({buf}, {how}) なし 端末のジョブを停止するためのシグナルを
設定する
term_setrestore({buf}, {command}) なし 端末を復元するためのコマンドを設定する
term_setsize({buf}, {rows}, {cols})
なし 端末のサイズを設定する
term_start({cmd} [, {options}]) 数値 端末ウィンドウを開きジョブを実行する
term_wait({buf} [, {time}]) 数値 スクリーンが更新されるのを待つ
terminalprops() 辞書 端末のプロパティ
test_alloc_fail({id}, {countdown}, {repeat})
なし メモリの確保を失敗にさせる
test_autochdir() なし 起動時に 'autochdir' を有効にする
test_feedinput({string}) なし キー入力を入力バッファに追加する
test_garbagecollect_now() なし テスト用に直ちにメモリを解放する
test_garbagecollect_soon() なし テスト用にすぐにメモリを解放する
test_getvalue({string}) 任意 内部変数の値を取得する
test_gui_event({event}, {args}) 真偽値 テスト用の GUI イベントを発生させる
test_ignore_error({expr}) なし 特定のエラーを無視する
test_mswin_event({event}, {args})
真偽値 テスト用の MS-Windows イベントを生成
test_null_blob() Blob テスト用のnull値
test_null_channel() チャネル テスト用のnull値
test_null_dict() 辞書 テスト用のnull値
test_null_function() Funcref テスト用のnull値
test_null_job() ジョブ テスト用のnull値
test_null_list() リスト テスト用のnull値
test_null_partial() Funcref テスト用のnull値
test_null_string() 文字列 テスト用のnull値
test_option_not_set({name}) なし オプション設定フラグをリセットする
test_override({expr}, {val}) なし Vimの内部処理を置き換えてテストする
test_refcount({expr}) 数値 {expr}の参照カウントを取得
test_setmouse({row}, {col}) なし テスト用にマウス位置を設定する
test_settime({expr}) なし テスト用に現在の時刻を設定する
test_srand_seed([{seed}]) なし srand() のテスト用に種を設定する
test_unknown() 任意 テスト用のunknown値
test_void() 任意 テスト用のvoid値
timer_info([{id}]) リスト タイマーに関する情報
timer_pause({id}, {pause}) なし タイマーの一時停止または一時停止解除
timer_start({time}, {callback} [, {options}])
数値 タイマーを作成する
timer_stop({timer}) なし タイマーを停止する
timer_stopall() なし すべてのタイマーを停止する
tolower({expr}) 文字列 文字列{expr}を小文字にする
toupper({expr}) 文字列 文字列{expr}を大文字にする
tr({src}, {fromstr}, {tostr}) 文字列 {src}中に現れる文字{fromstr}を{tostr}
に変換する
trim({text} [, {mask} [, {dir}]])
文字列 {text} から {mask} 内の文字を切り取る
trunc({expr}) 浮動小数点数 浮動小数点数{expr}を切り詰める
type({expr}) 数値 変数{expr}の型
typename({expr}) 文字列 {expr}の型を表す
undofile({name}) 文字列 {name}に対するアンドゥファイルの名前
undotree([{buf}]) リスト バッファ {buf} のアンドゥファイルツリー
uniq({list} [, {func} [, {dict}]])
リスト リストから隣接した重複を削除
utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
数値 {string} のバイト {idx} の UTF-16 イン
デックス
values({dict}) リスト {dict}の値のリスト
virtcol({expr} [, {list} [, {winid}])
数値/リスト
カーソルまたはマークのスクリーン桁
virtcol2col({winid}, {lnum}, {col})
数値 スクリーン上の文字のバイトインデックス
visualmode([{expr}]) 文字列 最後に使われたビジュアルモード
wildmenumode() 数値 'wildmenu' モードが有効かどうか
win_execute({id}, {command} [, {silent}])
文字列 ウィンドウ{id}で{command}を実行する
win_findbuf({bufnr}) リスト {bufnr}を含むウィンドウを見つける
win_getid([{win} [, {tab}]]) 数値 {tab}の{win}のウィンドウIDを取得
win_gettype([{nr}]) 文字列 ウィンドウ {nr} の型
win_gotoid({expr}) 数値 ID {expr}のウィンドウに行く
win_id2tabwin({expr}) リスト ウィンドウIDからタブとウィンドウnr取得
win_id2win({expr}) 数値 ウィンドウIDからウィンドウnr取得
win_move_separator({nr}) 数値 ウィンドウの垂直セパレータの移動
win_move_statusline({nr}) 数値 ウィンドウのステータス行の移動
win_screenpos({nr}) リスト ウィンドウ {nr} のスクリーン位置を取得
する
win_splitmove({nr}, {target} [, {options}])
数値 ウィンドウ {nr} を {target} の分割へ移
動
winbufnr({nr}) 数値 ウィンドウ{nr}のバッファ番号
wincol() 数値 カーソル位置のウィンドウ桁
windowsversion() 文字列 MS-Windows OS のバージョン
winheight({nr}) 数値 ウィンドウ{nr}の高さ
winlayout([{tabnr}]) リスト タブ {tabnr} 内のウィンドウの配置
winline() 数値 カーソル位置のウィンドウ行
winnr([{expr}]) 数値 現在のウィンドウの番号
winrestcmd() 文字列 ウィンドウサイズを復元するコマンド
winrestview({dict}) なし 現在のウィンドウのビューを復元
winsaveview() 辞書 現在のウィンドウのビューを保存
winwidth({nr}) 数値 ウィンドウ{nr}の幅を取得
wordcount() 辞書 バイト/文字/単語の統計情報を取得
writefile({object}, {fname} [, {flags}])
数値 行の Blob または list をファイルに
書き込む
xor({expr}, {expr}) 数値 ビット排他的論理和
==============================================================================
2. 詳細 builtin-function-details
すべての関数はここにはなく、いくつかはそのカバーしている特別な機能のヘルプファ
イルへ移動している。
戻り値の型は Vim9-script の型を指定する。vim9-types を参照。
abs({expr}) abs()
{expr} の絶対値を返す。{expr} の値が浮動小数点数である場合は浮
動小数点数を返す。{expr} がNumberに変換可能な場合は数値が戻
り値になる。それ以外の場合はエラーメッセージを表示し、-1
を返す。
例:
echo abs(1.456)
1.456 echo abs(-5.456)
5.456 echo abs(-4)
4method としても使用できる:
Compute()->abs()
戻り値の型: Number または Float。{expr} による
acos({expr}) acos()
{expr} の逆余弦 (アークコサイン) をラジアンで返す。
値は [0, pi] の範囲の浮動小数点数 (Float)。
{expr} は [-1, 1] の範囲の浮動小数点数 (Float) か数値
(Number) でなければならない。それ以外の場合、acos() は "nan"
を返す。
例:
:echo acos(0)
1.570796 :echo acos(-0.5)
2.094395method としても使用できる:
Compute()->acos()
戻り値の型: Float
add({object}, {expr}) add()
List または Blob {object}の末尾に項目{expr}を追加する。結
果の List か Blob を返す。例:
:let alist = add([1, 2, 3], item)
:call add(mylist, "woodstock")
Note {expr}がリストのときは、1個の要素として追加される。リスト:call add(mylist, "woodstock")
を連結するにはextend()を使う。
{object}が Blob の場合、{expr}は数値でなければならない。
他の位置に要素を追加するにはinsert()を使う。
{object} が List または Blob でない場合は 1 を返す。
method としても使用できる:
mylist->add(val1)->add(val2)
戻り値の型: list<{type}> (指定された Listによる) または
Blob
and({expr}, {expr}) and()
二つの引数のビット論理積。引数は数値に変換される。リスト、辞
書、浮動小数点数を指定するとエラーになる。
or() および xor() も参照。
例:
:let flag = and(bits, 0x80)
method としても使用できる: :let flag = bits->and(0x80)
戻り値の型: Number
append({lnum}, {text}) append()
{text}がリストListのときは、各要素をカレントバッファの{lnum}
行目以降にテキストとして追加する。
リストでないときは、{text}をテキストとしてカレントバッファの
{lnum}行目以降にテキストとして追加する。
要素としてどの型でも受け入れて文字列に変換される。
{lnum}は0でもよく、その場合は1行目の前に行を挿入する。
{lnum}はgetline()と同様に扱われる。
失敗した場合は1を返す({lnum}が不正な範囲であるか、メモリ不足)。
成功なら0を返す。{text} が空のリストの場合、{lnum} の値に関係
なくゼロが返される。
Vim9 script では不正な引数であるか負数の場合は結果がエラーに
なる。例:
:let failed = append(line('$'), "# THE END")
:let failed = append(0, ["Chapter 1", "the beginning"])
:let failed = append(0, ["Chapter 1", "the beginning"])
リストの後に method としても使用でき、ベースは第2引数として
渡される:
mylist->append(lnum)
戻り値の型: Number
appendbufline({buf}, {lnum}, {text}) appendbufline()
append() と同様、ただしバッファ {buf} にテキストを追加する。
この関数は、ロードされたバッファに対してのみ機能する。必要であ
れば、最初に bufload() を呼び出すこと。
{buf} の使い方については bufname() を参照。
{lnum} は行番号をその下に追加する。Note: line() の使用は、追
加対象のバッファではなくカレントバッファに適用される。バッファ
の最後に追加するには "$" を使用する。他の文字列値はサポートさ
れない。
成功時には 0 が返り、失敗時には 1 が返る。
Vim9 script では不正な {lnum} を与えられた時エラーになる。
{buf} が有効なバッファでない、もしくは {lnum} が有効でない場
合、エラーメッセージが与えられる。例:
:let failed = appendbufline(13, 0, "# THE START")
ただし、{text} が空のリストの場合、{lnum} は実際には使用されないため、無効な {lnum} に対してエラーは発生しない。
リストの後に method としても使用でき、ベースは第2引数として
渡される:
mylist->appendbufline(buf, lnum)
戻り値の型: Number
argc([{winid}]) argc()
引数リスト内の、ファイルの数を返す。arglistを参照。
{winid} が指定されていない場合は、カレントウィンドウの引数リス
トが使われる。
{winid} が -1 の場合、グローバル引数リストが使われる。
もしくは、{winid} は、引数リストが使用されるウィンドウを指定す
る: ウィンドウ番号またはウィンドウID。引数{winid} が無効な場合
は -1 を返す。
戻り値の型: Number
argidx()
argidx() 引数リスト内の現在のインデックスを返す。最初のファイルは0とな
る。argc() - 1が最後のファイルとなる。arglistを参照。
戻り値の型: Number
arglistid()
arglistid([{winnr} [, {tabnr}]])
引数リストの ID を返す。値は引数リストを区別するための数値であ
る。ゼロはグローバル引数リストを意味する。arglist 参照。
引数が無効な場合は -1 を返す。
引数を指定しなかった場合はカレントウィンドウが使われる。
{winnr} を指定した場合はカレントタブページ内のウィンドウが使わ
れる。
{winnr} と {tabnr} を指定した場合は指定したタブページ内のウィ
ンドウが使われる。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
戻り値の型: Number
argv()
argv([{nr} [, {winid}]])
結果は引数リスト内の、{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} が指定されなかった場合、または、-1 の場合、引数リス:while i < argc()
: let f = escape(fnameescape(argv(i)), '.')
: exe 'amenu Arg.' .. f .. ' :e ' .. f .. '<CR>'
: let i = i + 1
:endwhile
ト arglist 全体を返す。
引数{winid} はウィンドウIDを指定する。
Vimのコマンドライン引数については、v:argv を参照。
{nr} 番目の引数が引数リストに存在しない場合は、空の文字列を返
す。{winid} 引数が無効な場合は、空のリストを返す。
戻り値の型: String
asin({expr}) asin()
{expr} の逆正弦 (アークサイン) をラジアンで返す。
値は [-pi/2, pi/2] の範囲の浮動小数点数 (Float)。
{expr} は [-1, 1] の範囲の浮動小数点数 (Float) か数値
(Number) でなければならない。
{expr} が [-1, 1] の範囲外の場合は "nan" を返す。{expr} が
Float または Number でない場合は 0.0 を返す。
例:
:echo asin(0.8)
0.927295 :echo asin(-0.5)
-0.523599method としても使用できる:
Compute()->asin()
戻り値の型: Float
assert_ 関数群はここに文書化されている: assert-functions-details
atan({expr}) atan()
{expr} の逆正接(アークタンジェント)の主値を浮動小数点数
Float で返す。主値はラジアンで[-pi/2, +pi/2]の範囲内にある。
{expr} は Float か Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
:echo atan(100)
1.560797 :echo atan(-4.01)
-1.326405method としても使用できる:
Compute()->atan()
戻り値の型: Float
atan2({expr1}, {expr2}) atan2()
{expr1} / {expr2} の逆正接 (アークタンジェント) をラジアンで返
す。値は [-pi, pi] の範囲の浮動小数点数 (Float)。
{expr1} と {expr2} は浮動小数点数 (Float) か数値 (Number)
でなければならない。
{expr} または {expr2} が Float または Number でない場合は
0.0 を返す。
例:
:echo atan2(-1, 1)
-0.785398 :echo atan2(1, -1)
2.356194method としても使用できる:
Compute()->atan2(1)
戻り値の型: Float
autocmd_add({acmds}) autocmd_add()
自動コマンドと自動コマンドグループを追加する。
引数 {acmds} は、各項目が以下のオプション項目を持つ辞書のリス
トである:
bufnr バッファローカルな自動コマンドを追加するための
バッファ番号。この項目を指定した場合、
"pattern" 項目は無視される。
cmd この自動コマンドイベントに対して実行する Ex コ
マンド
event 自動コマンドイベント名。autocmd-events を参
照。これは、単一のイベント名の文字列またはイベ
ント名のリストのどちらかである。
group 自動コマンドグループ名。autocmd-groups を参
照。グループが存在しない場合は作成される。指定
しない場合、または空の場合は、デフォルトのグ
ループが使用される。
nested 真偽値フラグ。v:true に設定すると、ネストされ
た自動コマンドを追加する。autocmd-nested を
参照。
once 真偽値フラグ。v:true に設定すると、一度だけ実
行される自動コマンドが追加される。
autocmd-once を参照。
pattern 自動コマンドパターン文字列。autocmd-patterns
を参照。"bufnr" 項目が存在する場合、この項目は
無視される。単一のパターンを持つ文字列またはパ
ターンのリストにすることができる。
replace 真偽値フラグ。v:true に設定すると、指定された
自動コマンドイベントおよびグループに関連付けら
れたすべてのコマンドが削除され、{cmd} が追加さ
れる。これは、グループ内の自動コマンドイベント
に対して同じコマンドを複数回追加することを避け
るのに役立つ。
成功した場合は v:true を返し、失敗した場合は v:false を返す。
例:
" バッファ 5 のバッファローカルな自動コマンドを作成
let acmd = {}
let acmd.group = 'MyGroup'
let acmd.event = 'BufEnter'
let acmd.bufnr = 5
let acmd.cmd = 'call BufEnterFunc()'
call autocmd_add([acmd])
let acmd = {}
let acmd.group = 'MyGroup'
let acmd.event = 'BufEnter'
let acmd.bufnr = 5
let acmd.cmd = 'call BufEnterFunc()'
call autocmd_add([acmd])
method としても使用できる:
GetAutocmdList()->autocmd_add()
戻り値の型: vim9-boolean
autocmd_delete({acmds}) autocmd_delete()
自動コマンドと自動コマンドグループを削除する。
引数 {acmds} は、各項目が以下のオプション項目を持つ辞書のリス
トである:
bufnr バッファローカルな自動コマンドを削除するための
バッファ番号。この項目を指定した場合、
"pattern" 項目は無視される。
cmd この自動コマンドイベントに対して実行する Ex コ
マンド
event 自動コマンドイベント名。autocmd-events を参
'*' の場合、このグループ内のすべての自動コマン
ドイベントが削除される。
group 自動コマンドグループ名。autocmd-groups を参
照。指定なし、または空の場合は、デフォルトのグ
ループが使用される。
nested ネストされた自動コマンドの場合は v:true に設定
する。autocmd-nested を参照。
once 一度だけ実行される自動コマンドの場合は v:true
に設定する。autocmd-once を参照。
pattern 自動コマンドパターン文字列。autocmd-patterns
を参照。"bufnr" 項目が存在する場合、この項目は
無視される。
{acmds} エントリで {group} のみが指定されており、{event}、
{pattern}、および {cmd} が指定されていない場合、その自動コマン
ドグループは削除される。
成功した場合は v:true を返し、失敗した場合は v:false を返す。
例:
" :autocmd! BufLeave *.vim
let acmd = #{event: 'BufLeave', pattern: '*.vim'}
call autocmd_delete([acmd]})
" :autocmd! MyGroup1 BufLeave
let acmd = #{group: 'MyGroup1', event: 'BufLeave'}
call autocmd_delete([acmd])
" :autocmd! MyGroup2 BufEnter *.c
let acmd = #{group: 'MyGroup2', event: 'BufEnter',
\ pattern: '*.c'}
" :autocmd! MyGroup2 * *.c
let acmd = #{group: 'MyGroup2', event: '*',
\ pattern: '*.c'}
call autocmd_delete([acmd])
" :autocmd! MyGroup3
let acmd = #{group: 'MyGroup3'}
call autocmd_delete([acmd])
let acmd = #{event: 'BufLeave', pattern: '*.vim'}
call autocmd_delete([acmd]})
" :autocmd! MyGroup1 BufLeave
let acmd = #{group: 'MyGroup1', event: 'BufLeave'}
call autocmd_delete([acmd])
" :autocmd! MyGroup2 BufEnter *.c
let acmd = #{group: 'MyGroup2', event: 'BufEnter',
\ pattern: '*.c'}
" :autocmd! MyGroup2 * *.c
let acmd = #{group: 'MyGroup2', event: '*',
\ pattern: '*.c'}
call autocmd_delete([acmd])
" :autocmd! MyGroup3
let acmd = #{group: 'MyGroup3'}
call autocmd_delete([acmd])
method としても使用できる:
GetAutocmdList()->autocmd_delete()
戻り値の型: vim9-boolean
autocmd_get([{opts}]) autocmd_get()
自動コマンドの List を返す。{opts} が指定されていない場合は、
すべてのグループのすべてのイベントの自動コマンドを返す。
オプションの {opts} 辞書引数は、以下の項目をサポートする:
group 自動コマンドグループ名。指定した場合、このグ
ループで定義されている自動コマンドのみを返す。
指定したグループが存在しない場合は、エラーメッ
セージが表示される。空の文字列を設定すると、デ
フォルトの自動コマンドグループが使用される。
event 自動コマンドイベント名。指定した場合、このイベ
ントに定義された自動コマンドのみを返す。"*" を
設定すると、すべてのイベントの自動コマンドが返
される。指定したイベントが存在しない場合は、エ
ラーメッセージが表示される。
pattern 自動コマンドパターン。指定した場合、このパター
ンに定義されている自動コマンドのみを返す。
上記 3 つの組み合わせを {opts} で指定できる。
返されたリストの各辞書には次の項目が含まれる:
bufnr バッファローカルな自動コマンドの場合、自動コマ
ンドが定義されているバッファ番号。
cmd 自動コマンドに対して実行されたコマンド。
event 自動コマンドイベント名。
group 自動コマンドグループ名。
nested Booleanフラグ。ネストされた自動コマンドの場合、
v:true が設定される。autocmd-nested を参照。
once Booleanフラグ。自動コマンドが 1 回だけ実行され
る場合は、v:true に設定する。autocmd-once を
参照。
pattern 自動コマンドパターン。バッファローカルな自動コ
マンドの場合、"<buffer=n>" の形式になる。
グループ内の自動コマンドイベントに複数のコマンドがある場合、コ
マンドごとに個別の項目が返される。
指定されたグループ、イベント、またはパターンを持つ自動コマンド
が見つからない場合は、空のリストを返す。
例:
" :autocmd MyGroup
echo autocmd_get(#{group: 'Mygroup'})
" :autocmd G BufUnload
echo autocmd_get(#{group: 'G', event: 'BufUnload'})
" :autocmd G * *.ts
let acmd = #{group: 'G', event: '*', pattern: '*.ts'}
echo autocmd_get(acmd)
" :autocmd Syntax
echo autocmd_get(#{event: 'Syntax'})
" :autocmd G BufEnter *.ts
let acmd = #{group: 'G', event: 'BufEnter',
\ pattern: '*.ts'}
echo autocmd_get(acmd)
echo autocmd_get(#{group: 'Mygroup'})
" :autocmd G BufUnload
echo autocmd_get(#{group: 'G', event: 'BufUnload'})
" :autocmd G * *.ts
let acmd = #{group: 'G', event: '*', pattern: '*.ts'}
echo autocmd_get(acmd)
" :autocmd Syntax
echo autocmd_get(#{event: 'Syntax'})
" :autocmd G BufEnter *.ts
let acmd = #{group: 'G', event: 'BufEnter',
\ pattern: '*.ts'}
echo autocmd_get(acmd)
method としても使用できる:
Getopts()->autocmd_get()
戻り値の型: list<dict<any>>
balloon_gettext() balloon_gettext()
バルーン内の現在のテキストを返す。文字列に対してのみ使用され、
リストには使用されない。バルーンが存在しない場合は空の文字列を
返す。
戻り値の型: String
balloon_show({expr}) balloon_show()
{expr} をバルーン内に表示する。GUI では {expr} は文字列として
扱われる。端末では {expr} をバルーンの行を含むリストとしてもよ
い。{expr} がリストでない場合、balloon_split() で分割される。
{expr} が空文字列の場合、既存のバルーンは削除される。
例:
func GetBalloonContent()
" ... 内容の取得を開始
return ''
endfunc
set balloonexpr=GetBalloonContent()
" ... 内容の取得を開始
return ''
endfunc
set balloonexpr=GetBalloonContent()
func BalloonCallback(result)
call balloon_show(a:result)
endfunc
method としても使用できる:call balloon_show(a:result)
endfunc
GetText()->balloon_show()
想定される使用方法は、バルーンの内容の取得が 'balloonexpr' か
ら開始されることである。そこから非同期メソッドを呼び出し、コー
ルバックから balloon_show() を呼び出す。'balloonexpr' 自身は
空文字列かプレースホルダーを返すことができる。例えば、
"loading..."。
バルーンを表示できないときは何も起こらず、エラーメッセージも表
示されない。
{Vimが +balloon_eval もしくは +balloon_eval_term 機能付き
でコンパイルされたときのみ有効}
戻り値の型: Number
balloon_split({msg}) balloon_split()
文字列 {msg} をバルーン内で表示される行に分割する。カレントウィ
ンドウサイズ用に分割され、デバッガ出力を表示するために最適化さ
れる。
分割された行の List を返す。エラーが発生した場合は空のリスト
を返す。
method としても使用できる:
GetText()->balloon_split()->balloon_show()
{+balloon_eval_term 機能付きでコンパイルされたときのみ有効}
戻り値の型: list<any> または list<string>
bindtextdomain({package}, {path}) bindtextdomain()
特定の {package} を {path} にバインドし、gettext() 関数を使っ
てパッケージの言語固有の翻訳を取得できるようにする。{path} は
翻訳のディレクトリ名である。package-create を参照。
成功した場合は v:true を返し、失敗した場合 (メモリ不足) は
v:false を返す。
戻り値の型: vim9-boolean
blob2list({blob}) blob2list()
Blob {blob} の各バイトを数値として保持するリストを返す。例:
blob2list(0z0102.0304) returns [1, 2, 3, 4]
blob2list(0z) returns []
エラーの時は空リストを返す。list2blob() は反対のことをする。blob2list(0z) returns []
method としても使用できる:
GetBlob()->blob2list()
戻り値の型: list<any> または list<number>
browse()
browse({save}, {title}, {initdir}, {default})
ファイル選択ダイアログを起動。"has("browse")" がTRUEを返すと
き (幾つかのGUIバージョンに限定)だけ利用可能。
入力フィールドの意味は:
{save} TRUEならば書込み用ファイルの選択
{title} ダイアログのタイトル
{initdir} ダイアログの始まるディレクトリ
{default} ファイル名の省略値
ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ
ラウジングが不可能ならば、空文字列が戻ってくる。
戻り値の型: String
browsedir({title}, {initdir}) browsedir()
ディレクトリ選択ダイアログを起動。"has("browse")" がTRUEを返
すとき(幾つかのGUIバージョンに限定)だけ利用可能。
ディレクトリ選択ダイアログがないシステムにおいてはファイル選択
ダイアログが使われる。その場合は、指定したいディレクトリの中の
ファイルを選択すること。
入力フィールドの意味は:
{title} ダイアログのタイトル
{initdir} ダイアログの始まるディレクトリ
ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ
ラウジングが不可能ならば、空文字列が戻ってくる。
戻り値の型: String
bufadd({name}) bufadd()
バッファリストに {name} (文字列でなければならない) という名前
でバッファを追加する。
もし、ファイル {name} 用のバッファが既に存在した場合、そのバッ
ファの番号を返す。そうでなければ、新しく作られたバッファの番号
を返す。{name} が空の文字列だったときは新しいバッファが常に作
成される。
バッファには 'buflisted' が設定されず、まだロードされない。
バッファにテキストを追加するにはこれを使用する:
let bufnr = bufadd('someName')
call bufload(bufnr)
call setbufline(bufnr, 1, ['some', 'text'])
エラーが発生した場合は 0 を返す。call bufload(bufnr)
call setbufline(bufnr, 1, ['some', 'text'])
method としても使用できる:
let bufnr = 'somename'->bufadd()
戻り値の型: Number
bufexists({buf}) bufexists()
結果は数値で、{buf}と呼ばれるバッファが存在すればTRUEとなる。
{buf}が数値の場合、バッファ番号とみなされる。数値の 0 はカレン
トウィンドウの代替バッファである。
{buf}が文字列の場合、バッファ名に正確にマッチしなければならな
い。名前として以下のものが許される:
- カレントディレクトリからの相対パス。
- フルパス。
- 'buftype' が "nofile" であるバッファの名前
- URL名。
バッファリストにないバッファも検索される。
Note :buffersの出力で、ヘルプファイルは短い名前でリストされ
ているが、bufexists()は長い名前でないと見つけることができない。
ある名前を bufexists() に与えて非零になったとしても、その名前
をコマンド :buffer に与える際には expand() を使って展開し
なければならない場合がある。特に MS-Windows の "c:\DOCUME~1"
という 8.3 名形式において。
代替ファイル名が存在するかを判定するには "bufexists(0)" を使う。
method としても使用できる:
let exists = 'somename'->bufexists()
戻り値の型: Number
buffer_exists()
以前の名前: buffer_exists().
buflisted({buf}) buflisted()
戻り値は数値で、{buf}と呼ばれるバッファが存在しリストされてい
る ('buflisted' オプションがオンになっている) ならば結果は
TRUEとなる。引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
let listed = 'somename'->buflisted()
戻り値の型: Number
bufload({buf}) bufload()
バッファ{buf}がロードされていることを保証する。バッファの名前
が既存のファイルを参照しているときは、そのファイルが読み込まれ
る。そうでなければバッファは空になる。もし既にバッファが読み込
まれていれば、変更はない。バッファがファイルに関連していない場
合、ファイルは読み取られない (例: 'buftype' が "nofile" の場
合)。
バッファのファイルに対して既存のスワップファイルがある場合、ダ
イアログなしで、バッファはロードされる。
引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
eval 'somename'->bufload()
戻り値の型: Number
bufloaded({buf}) bufloaded()
戻り値は数値で、{buf}と呼ばれるバッファが存在しロード済み(ウィ
ンドウに表示されているか、隠されているかは問わない)ならば結果
はTRUEとなる。引数{buf}はbufexists()と同じように扱われる。
method としても使用できる:
let loaded = 'somename'->bufloaded()
戻り値の型: Number
bufname([{buf}]) bufname()
戻り値はバッファの名前。バッファ名はコマンド :ls で表示され
るものとほとんど同じだが、例えば "[No Name]" などの特殊名は使
用しない。
{buf}が省略された場合は、カレントバッファが使われる。
{buf}が数値ならば、その番号のバッファ名が返される。0は現在の
ウィンドウの代替バッファを意味する。{buf}が文字列ならば、バッ
ファ名に対してファイル名マッチング file-pattern を行うパター
ンとなる。このマッチングは常に、'magic' をセットし 'cpoptions'
を空にした状態で行われる。複数マッチしてしまった場合には空文字
列が返される。
"" や "%" は現在のバッファを意味し、"#" は代替バッファを意味す
る。
完全マッチのものが優先され、完全マッチがなければ、バッファ名の
先頭でのマッチ、末尾でのマッチ、中間でのマッチが探される。完全
マッチのみを探すには、パターン先頭に "^" を、末尾に "$" をつけ
る。
まずバッファリストにあるバッファが探される。そこで1個だけマッ
チが見つかればそれを返す。次にバッファリストにないものが探され
る。
{buf}が文字列のときに、それをバッファ番号として使いたいならば、
0を足すことによって強制的に数値にすることができる:
echo bufname("3" + 0)
method としても使用できる: echo bufnr->bufname()
バッファが存在しないか名前を持っていない場合には、空文字列が返
される。
bufname("#") alternate buffer name
bufname(3) name of buffer 3
bufname("%") name of current buffer
bufname("file2") name of buffer where "file2" matches.
bufname(3) name of buffer 3
bufname("%") name of current buffer
bufname("file2") name of buffer where "file2" matches.
戻り値の型: String
buffer_name()
以前の名前: buffer_name().
bufnr([{buf} [, {create}]]) bufnr()
結果はバッファの番号。バッファ番号はコマンド :ls で表示され
るものと同様。{buf}の使い方は前述の bufname() を参照。
バッファが存在しない場合-1が返される。ただし、{create}が与えら
れて真であるときは、バッファリストに載せない新しいバッファを作
成し、その番号を返す。例:
let newbuf = bufnr('Scratch001', 1)
空の名前を使用すると、カレントバッファが使用される。空の名前で新しいバッファを作成するには、bufadd() を使用する。
bufnr("$")は最後のバッファを意味する:
:let last_buffer = bufnr("$")
結果は存在しているバッファのうちで、もっとも大きなバッファ番号となる。Note そのバッファ番号より小さいバッファ番号を持つ(ハズ
の)バッファが、必ずしも全て存在するとは限らない。なぜなら
":bwipeout" がバッファを消すことができるからだ。バッファが存在
するかテストするにはbufexists()を使う。
method としても使用できる:
echo bufref->bufnr()
戻り値の型: Number
以前の名前: buffer_number(). buffer_number()
last_buffer_nr()
bufnr("$")の以前の名前: last_buffer_nr().
bufwinid({buf}) bufwinid()
その結果は数値で、バッファ{buf}に関連付けられた最初のウィンド
ウの window-ID。{buf}の使い方は前述のbufname()を参照。バッ
ファ{buf}が存在しないか、ウィンドウが無い場合は、-1が返される。
例:
echo "A window containing buffer 1 is " .. (bufwinid(1))
現在のタブページのみを処理する。さらにウィンドウを探すために
は、win_findbuf() を参照。
method としても使用できる:
FindBuffer()->bufwinid()
戻り値の型: Number
bufwinnr({buf}) bufwinnr()
bufwinid() と同様だが、バッファの window-ID ではなくウィン
ドウ番号を返す。バッファ{buf} が存在しないか、ウィンドウが無い
場合には-1を返す。例:
echo "A window containing buffer 1 is " .. (bufwinnr(1))
この番号はCTRL-W_wや ":wincmd w" :wincmdで使える。
method としても使用できる:
FindBuffer()->bufwinnr()
戻り値の型: Number
byte2line({byte}) byte2line()
カレントバッファの先頭から{byte}番目の文字が、何行目に含まれる
かを返す。これにはカレントバッファの 'fileformat' に依存した、
改行文字も含まれる。先頭の文字にはバイトカウント1が与えられる。
line2byte()とgoと:gotoも参照。
{byte} 値が無効な場合は -1 を返す。
method としても使用できる:
GetOffset()->byte2line()
戻り値の型: Number
{+byte_offset 機能付きでコンパイルされたときのみ有効}
byteidx({expr}, {nr} [, {utf16}]) byteidx()
文字列{expr}の{nr}番目の文字のバイトインデックスを返す。最初の
文字の{nr}は0であり、そして戻り値は0となる。
マルチバイト文字がない時は{nr}に等しい値を返す。
合成文字はまとめて計算される。合成文字のバイト数はそれが合成さ
れているベース文字のバイト数に合算される。合成文字を別々に数え
るには byteidxcomp() を参照。
{utf16} が存在し、TRUE の場合、{nr} は文字インデックスとしてで
はなく、文字列 {expr} 内の UTF-16 インデックスとして使用され
る。UTF-16 インデックスは、文字列が 16 ビットワードでエンコー
ドされたときのインデックスである。指定された UTF-16 インデック
スが文字の途中 (例: 4 バイト文字) にある場合、その文字の最初の
バイトのバイトインデックスが返される。詳細は
string-offset-encoding を参照。
例 :
echo matchstr(str, ".", byteidx(str, 3))
は4文字目を表示する。次も同じことをする: let s = strpart(str, byteidx(str, 3))
echo strpart(s, 0, byteidx(s, 1))
strgetchar() と strcharpart() も参照。echo strpart(s, 0, byteidx(s, 1))
{expr}が{nr}文字以下の場合は-1を返す。
{expr}がちょうど{nr}文字の場合は文字列の長さ(バイト単位)を返す。
バイトインデックスから文字インデックスと UTF-16 インデックスを
それぞれ取得する方法については、charidx() と utf16idx() を
参照。
例:
echo byteidx('a😊😊', 2) returns 5
echo byteidx('a😊😊', 2, 1) returns 1
echo byteidx('a😊😊', 3, 1) returns 5
echo byteidx('a😊😊', 2, 1) returns 1
echo byteidx('a😊😊', 3, 1) returns 5
method としても使用できる:
GetName()->byteidx(idx)
戻り値の型: Number
byteidxcomp({expr}, {nr} [, {utf16}]) byteidxcomp()
byteidx() と同じだが、合成文字は個別にカウントされる。例:
let s = 'e' .. nr2char(0x301)
echo byteidx(s, 1)
echo byteidxcomp(s, 1)
echo byteidxcomp(s, 2)
1 番目と 3 番目は 3 が出力される ('e' の長さと合成文字の長さをecho byteidx(s, 1)
echo byteidxcomp(s, 1)
echo byteidxcomp(s, 2)
足すと 3 バイト)。2 番目は 1 が出力される ('e' は 1 バイト)。
'encoding' に Unicode が設定されているときのみ byteidx() と違っ
た動作になる。
method としても使用できる:
GetName()->byteidxcomp(idx)
戻り値の型: Number
call({func}, {arglist} [, {dict}]) call() E699
リストList{arglist}の要素を引数として関数{func}を呼ぶ。
{func}はFuncrefでも関数の名前でもよい。
a:firstlineとa:lastlineにはカレント行が代入される。
呼び出した関数の戻り値を返す。
{dict}は "dict" 属性つきの関数用で、これがローカル変数 "self"
に代入される。Dictionary-functionを参照。
method としても使用できる:
GetFunc()->call([arg, arg], dict)
戻り値の型: any。{func} による
ceil({expr}) ceil()
{expr} 以上となる最小の整数を浮動小数点数 Float で返す
(切り上げる)。
{expr} は Float か Number に評価されなければならない。
例:
echo ceil(1.456)
2.0 echo ceil(-5.456)
-5.0 echo ceil(4.0)
4.0{expr} が Float または Number でない場合は 0.0 を返す。
method としても使用できる:
Compute()->ceil()
戻り値の型: Float
ch_ 関数群はここに文書化されている: channel-functions-details
changenr() changenr()
最も最近の変更の番号を返す。:undolistで表示される番号と同じ
であり、:undoコマンドの引数として使うことができる。
変更を行った直後ではその変更の番号となる。redoを行った直後は
redoされた変更の番号となる。undoを行った直後はundoされた変更よ
り1小さい番号になる。
undo リストが空の場合は 0 を返す。
戻り値の型: Number
char2nr({string} [, {utf8}]) char2nr()
{string}の最初の文字のASCIIコードを返す。例:
char2nr(" ") returns 32
char2nr("ABC") returns 65
{utf8} を省略、またはゼロを指定すると、現在の 'encoding' が適char2nr("ABC") returns 65
用される。"utf-8" の場合の例:
char2nr("á") returns 225
char2nr("á"[0]) returns 195
{utf8} に真が指定された場合、常に UTF-8 文字として扱われる。char2nr("á"[0]) returns 195
合成文字は個別の文字として扱われる。
nr2char() はこの逆を行う。
文字列を文字の番号のリストに変換するには:
let str = "ABC"
let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
結果: [65, 66, 67]let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
{string} が String でない場合は 0 を返す。
method としても使用できる:
GetChar()->char2nr()
戻り値の型: Number
charclass({string}) charclass()
{string} 内の最初の文字の文字クラスを返す。
文字クラスは次のいずれか:
0 空白
1 区切り文字
2 単語文字 ('iskeyword' に依存)
3 絵文字
その他 Unicode 固有のクラス
クラスはパターンと単語単位の移動で使われる。
{string} が String でない場合は 0 を返す。
戻り値の型: Number
charcol({expr} [, {winid}]) charcol()
col() と同様だが {expr} で返す桁位置がバイトインデックスでは
なく文字インデックスになる。
例:
5行目のテキスト "여보세요" の '세' にカーソルがある状態:
charcol('.') returns 3
col('.') returns 7
col('.') returns 7
method としても使用できる:
GetPos()->col()
戻り値の型: Number
charidx()
charidx({string}, {idx} [, {countcc} [, {utf16}]])
{string} 内の {idx} バイト目の文字インデックスを返す。最初の文
字のインデックスは0。
マルチバイト文字がない時は {idx} に等しい値を返す。
{countcc} がないもしくは FALSE の場合、合成文字は分割して文
字としてカウントせず、先行する基底文字に合成文字のバイト長が足
される。
{countcc} が TRUE の場合、合成文字は分割した文字としてカウン
トされる。
{utf16} が存在し、TRUE の場合、{idx} はバイトインデックスとし
てではなく、文字列 {expr} 内の UTF-16 インデックスとして使用さ
れる。
引数が無効な場合、または {idx} バイト未満の場合は -1 を返す。
ちょうど {idx} バイトの場合は、文字列の長さが文字数で返される。
第 1 引数が文字列でない場合、第 2 引数が数値でない場合、第 3
引数が 0 または 1 でない場合、エラーが発生し、-1 が返される。
文字インデックスからバイトインデックスを取得するには
byteidx()と byteidxcomp() を、文字インデックスから UTF-16
インデックスを取得するには、utf16idx() を参照。
詳細については string-offset-encoding を参照。
例:
echo charidx('áb́ć', 3) returns 1
echo charidx('áb́ć', 6, 1) returns 4
echo charidx('áb́ć', 16) returns -1
echo charidx('a😊😊', 4, 0, 1) returns 2
echo charidx('áb́ć', 6, 1) returns 4
echo charidx('áb́ć', 16) returns -1
echo charidx('a😊😊', 4, 0, 1) returns 2
method としても使用できる:
GetName()->charidx(idx)
戻り値の型: Number
chdir({dir}) chdir()
{dir}は文字列でなければならない。
現在の作業ディレクトリを {dir} に変更する。ディレクトリの変更
範囲は、カレントウィンドウのディレクトリによって異なる:
- カレントウィンドウにウィンドウローカルディレクトリ
(:lcd)がある場合は、ウィンドウローカルディレクトリ
を変更する。
- それ以外の場合、カレントタブページにローカルディレク
トリ(:tcd)がある場合は、タブページのローカルディレ
クトリを変更する。
- それ以外の場合、グローバルディレクトリを変更する。
成功した場合は、前の作業ディレクトリを返す。ディレクトリを復元
するには、これを別の chdir() に渡すこと。
失敗した場合は、空の文字列を返す。
例:
let save_dir = chdir(newdir)
if save_dir != ""
" ... いくつかの作業をおこなう
call chdir(save_dir)
endif
if save_dir != ""
" ... いくつかの作業をおこなう
call chdir(save_dir)
endif
method としても使用できる:
GetDir()->chdir()
戻り値の型: String
cindent({lnum}) cindent()
'cindent' で使われるのと同じC言語用のインデント規則に従った場
合の{lnum}行目のインデント量を返す。
インデント量はスペースで数えられ、'tabstop' の値は関係ない。
{lnum}はgetline()の場合と同様に扱われる。
{lnum}が無効な場合は -1 を返す。
C-indentingを参照。
method としても使用できる:
GetLnum()->cindent()
戻り値の型: Number
clearmatches([{win}]) clearmatches()
matchadd() と コマンド :match によりカレントウィンドウに定
義されたマッチをすべて消去する。
{win} が指定されれば、カレントウィンドウではなく指定されたウィ
ンドウあるいはウィンドウID を対象にする。
method としても使用できる:
GetWin()->clearmatches()
戻り値の型: Number
col({expr} [, {winid}]) col()
戻り値は数値で、{expr} で与えられる位置の桁番号(バイトインデッ
クス)。
受け入れられる位置については、getpos() を参照。
{expr} が "$" の場合、カーソル行の末尾を意味するため、結果は
カーソル行のバイト数に 1 を加えた数になる。
さらに {expr} は [lnum, col] という行番号と桁番号のリストで
あってもよい。col に "$" を指定して、ある行の最後の桁を取得す
るのにとても便利である。"lnum" か "col" が範囲外である場合は
0 を返す。
オプションの {winid} 引数を指定すると、カレントウィンドウでは
なく、そのウィンドウの値が取得される。
行番号を取得するにはline()を使う。行番号と桁番号両方を取得す
るにはgetpos()を使う。
画面上の桁番号を取得するにはvirtcol()を使う。文字の位置を取
得するには charcol() を使う。
Note 現在のファイルのマークしか使えないことに注意。
例:
col(".") カーソルの桁
col("$") カレント行の長さ+1
col("'t") マークtの桁
col("'" .. markname) マークmarknameの桁
col("$") カレント行の長さ+1
col("'t") マークtの桁
col("'" .. markname) マークmarknameの桁
先頭の桁は1になる。{expr} が無効な場合か、{winid} のウィンドウ
が見つからない場合は 0 を返す。
大文字のマークは他のバッファを指しているかもしれない。
'virtualedit' が有効なとき、カーソルが行末を越えていると、桁番
号は行の長さより 1 大きい値を返す。また、<Cmd> マッピングを使
うとカーソルが移動しないので、挿入モードで桁を取得するのに使え
る:
:imap <F2> <Cmd>echowin col(".")<CR>
method としても使用できる:
GetPos()->col()
戻り値の型: Number
complete({startcol}, {matches}) complete() E785
挿入モード補完の候補を設定する。
挿入モードでのみ使用できる。CTRL-R = (i_CTRL-R を参照)と組み
合わせてマッピングを作る必要がある。CTRL-Oの後や、<expr>マッピ
ングの中では正しく動作しない。
{startcol}は補完すべき単語の開始位置を示す、行内のバイトオフセッ
トである。その位置からカーソルまでのテキストが補完すべき単語と
なる。
{matches}はリストListでなければならない。リストの各要素が1つ
の候補となる。この要素として許される値については
complete-itemsを参照。
'completeopt' の "longest" は無視される。
Note この関数を呼んだ後は補完を停止させるようなテキストの挿入
をしないように注意しなければならない。
この関数で設定した候補は普通の挿入モード補完と同じ様に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
この例はそれほど役には立たないが、使い方を示している。Note 0がcall complete(col('.'), ['January', 'February', 'March',
\ 'April', 'May', 'June', 'July', 'August', 'September',
\ 'October', 'November', 'December'])
return ''
endfunc
挿入されてしまわないように空文字列を返していることに注意。
method としても使用でき、ベースは第2引数として渡される:
GetMatches()->complete(col('.'))
戻り値の型: Number
complete_add({expr}) complete_add()
候補のリストに{expr}を追加する。'completefunc' で指定された関
数の中でのみ使われる。
失敗したときは0を返す(空文字列かメモリ不足)。候補が追加された
ときは1を返し、その候補が既にリストに存在するときは2を返す。
{expr}の説明についてはcomplete-functionsを参照。'omnifunc'
が返すリストと同じである。
method としても使用できる:
GetMoreMatches()->complete_add()
戻り値の型: Number
complete_check() complete_check()
補完候補を探している間にキーがタイプされたかどうか確認する。補
完の検索に時間がかかる場合に使われる。候補の検索を中断しようと
しているときはTRUEを返す。そうでないときは0を返す。
'completefunc' で指定された関数の中でのみ使われる。
戻り値の型: Number
complete_info([{what}]) complete_info()
挿入モードの補完に関する情報を辞書 Dictionary で返す。
ins-completion を参照。
要素は以下の通り:
mode 現在の補完モード名の文字列。
値は complete_info_mode を参照。
pum_visible ポップアップメニューが表示されているなら TRUE
pumvisible() を参照。
items 補完マッチのリスト。各要素は "word", "abbr",
"menu", "kind", "info", "user_data" を含む辞書。
complete-items を参照。
selected 選択された補完候補のインデックス。最初のイン
デックスが 0。どの補完候補も選択されていなけれ
ば -1 (入力したテキストのみ表示、もしくは <Up>
や <Down> キーを利用した最後の補完後に選択しな
かった場合)。
inserted 入力された文字列。[現時点では未実装]
complete_info_mode
mode の値は:
"" 補完モードでない
"keyword" キーワード補完 i_CTRL-X_CTRL-N
"ctrl_x" CTRL-X のみが入力された i_CTRL-X
"scroll" i_CTRL-X_CTRL-E か i_CTRL-X_CTRL-Y
でのスクロール
"whole_line" 行全体補完 i_CTRL-X_CTRL-L
"files" ファイル名補完 i_CTRL-X_CTRL-F
"tags" タグ補完 i_CTRL-X_CTRL-]
"path_defines" 定義補完 i_CTRL-X_CTRL-D
"path_patterns" インクルード補完 i_CTRL-X_CTRL-I
"dictionary" 辞書補完 i_CTRL-X_CTRL-K
"thesaurus" 同義語補完 i_CTRL-X_CTRL-T
"cmdline" Vim コマンドライン補完 i_CTRL-X_CTRL-V
"function" ユーザー定義補完 i_CTRL-X_CTRL-U
"omni" オムニ補完 i_CTRL-X_CTRL-O
"spell" スペル補完 i_CTRL-X_s
"eval" complete() 補完
"unknown" その他の内部モード
オプショナル引数としてリスト {what} が与えられると、 {what} に
ある項目のみが返る。{what} 内のサポートされていない項目は無視
される。
ポップアップメニューの位置とサイズを取得するには、
pum_getpos() を参照。CompleteChanged イベント中に v:event
でも利用可能である。
エラー時は空の Dictionary を返す。
例:
" 全ての項目を取得
call complete_info()
" 'mode' のみを取得
call complete_info(['mode'])
" 'mode' と 'pum_visible' のみを取得
call complete_info(['mode', 'pum_visible'])
call complete_info()
" 'mode' のみを取得
call complete_info(['mode'])
" 'mode' と 'pum_visible' のみを取得
call complete_info(['mode', 'pum_visible'])
method としても使用できる:
GetItems()->complete_info()
戻り値の型: dict<any>
confirm()
confirm({msg} [, {choices} [, {default} [, {type}]]])
confirm()はユーザーに選択させるためのダイアログを提供する。戻
り値は選択した番号になる。最初の選択肢が1である。
Note: confirm()は、ダイアログサポートを有効にしてコンパイルし
た時にだけ動作する。+dialog_con, +dialog_con_gui と
+dialog_gui を参照。
ダイアログには{msg}に加えて{choices}の選択肢が表示される。
{choices}が指定されない、または空の場合は選択肢 "&OK" が表示さ
れる(使用している言語に翻訳される)。
{msg}は文字列で '\n' を改行として使用できる。幾つかのシステム
では、長すぎる行は自動的に折り返される。
{choices}は文字列で、個々の選択肢は '\n' によって区切られる。
例:
confirm("Save changes?", "&Yes\n&No\n&Cancel")
'&' の後の文字は選択肢のショートカットキーになる。この場合"Cancel" を選択するのに 'c' をタイプすることができる。ショート
カットキーは最初の文字である必要は無い:
confirm("file has been modified", "&Save\nSave &All")
コンソールでは、デフォルトのショートカットキーとして、各選択肢の最初の文字が使われる。大文字小文字は区別されない。
省略可能な引数{default}は<CR>キーを叩いた時に選択される選択肢
の番号を指定する。最初の選択肢をデフォルトにするならば1を使用
する。デフォルトを設定したくないのならば0を使用する。
{default}を省略した場合、1が使用される。
省略可能な文字列引数{type}はダイアログの種類を指定する。これは
GTK, Mac, Motif, Win32 の GUI でアイコンを指定するのに使われ
る。"Error", "Question", "Info", "Warning", "Generic" のうちど
れか一つを指定する。以上のうちの先頭の文字だけで指定できる。
{type} が省略された場合、"Generic" が使用される。
ユーザーが<Esc>やCTRL-Cや、その他の割りこみキーでダイアログを
中断した場合、confirm()は0を返す。
例:
let choice = confirm("What do you want?",
\ "&Apples\n&Oranges\n&Bananas", 2)
if choice == 0
echo "make up your mind!"
elseif choice == 3
echo "tasteful"
else
echo "I prefer bananas myself."
endif
GUIのダイアログではボタンが使用される。ボタンの配置は\ "&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
'guioptions' の 'v' フラグに依存する。もしも 'v' フラグが含ま
れているのなら、ボタンは常に垂直に配置される。そうでなければ水
平に配置しようと試みられる。水平配置がうまくマッチしない場合
は、垂直配置が使われる。幾つかのシステムでは常に水平配置が使わ
れる。
method としても使用できる:
BuildMessage()->confirm("&Yes\n&No")
戻り値の型: Number
copy({expr}) copy()
{expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ
ピーの間に違いはない。
{expr}がリストListの場合は浅いコピーを作る。つまり元のリスト
を変更してもコピーは変更されず、逆も同じである。しかし要素は共
通で、片方の要素に対し変更を加えると、もう一方の要素も変更され
る。
辞書はリストと同様な方法でコピーされる。
deepcopy()も参照。
method としても使用できる:
mylist->copy()
戻り値の型: any。{expr} による
cos({expr}) cos()
{expr} の余弦(コサイン)をラジアンで浮動小数点数 Float で返す。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
:echo cos(100)
0.862319 :echo cos(-4.01)
-0.646043method としても使用できる:
Compute()->cos()
戻り値の型: Float
cosh({expr}) cosh()
{expr} の双曲線余弦 (ハイパボリックコサイン) を返す。
値は [1, inf] の範囲の浮動小数点数 (Float)。
{expr} は浮動小数点数 (Float) か 数値 (Number) でなければ
ならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
:echo cosh(0.5)
1.127626 :echo cosh(-0.5)
-1.127626method としても使用できる:
Compute()->cosh()
戻り値の型: Float
count({comp}, {expr} [, {ic} [, {start}]]) count() E706
文字列String、リストListまたは辞書Dictionary {comp} の中
に値 {expr} が何回現れるかを返す。
{start} が指定されたときはそのインデックスの要素から検索を開始
する。{start} は {comp} がリストの場合のみ使用できる。
{ic} が指定され、TRUEの場合は大文字・小文字は区別されない。
{comp} が文字列の場合、オーバーラップしていない {expr} の回数
が返される。{expr} が空文字列の場合は 0 が返る。
method としても使用できる:
mylist->count(val)
戻り値の型: Number
cscope_connection()
cscope_connection([{num} , {dbpath} [, {prepend}]])
cscope接続が存在するかどうか判定する。引数が1個も指定されな
かった場合、戻り値は以下のようになる:
0, cscopeが利用できない(コンパイル時に無効化されている)
またはcscope接続が存在しない場合
1, 1個以上のcscope接続が存在する場合
引数が与えられた場合は次のようになる。{num}は、接続の存在を確
認する際のマッチング方法を指定する。
{num} 存在確認の方法
----- ------------------------------
0 引数なしの場合と同じ (例: "cscope_connection()")。
1 {prepend}を無視し、{dbpath}に部分マッチを行う。
2 {prepend}を無視し、{dbpath}に部分マッチを行う。
3 {prepend}を使用し、{dbpath}と{prepend}に部分マッチを行
う。
4 {prepend}を使用し、{dbpath}と{prepend}に完全マッチを行
う。
Note: 以上のどの場合も文字列の比較は大文字・小文字を区別する。
例: ":cs show" の表示が以下のようになったとする:
# pid database name prepend path
0 27664 cscope.out /usr/local
0 27664 cscope.out /usr/local
実行 戻り値
---------- ----------
cscope_connection() 1
cscope_connection(1, "out") 1
cscope_connection(2, "out") 0
cscope_connection(3, "out") 0
cscope_connection(3, "out", "local") 1
cscope_connection(4, "out") 0
cscope_connection(4, "out", "local") 0
cscope_connection(4, "cscope.out", "/usr/local") 1
cscope_connection(1, "out") 1
cscope_connection(2, "out") 0
cscope_connection(3, "out") 0
cscope_connection(3, "out", "local") 1
cscope_connection(4, "out") 0
cscope_connection(4, "out", "local") 0
cscope_connection(4, "cscope.out", "/usr/local") 1
戻り値の型: Number
cursor({lnum}, {col} [, {off}]) cursor()
cursor({list})
{lnum}行目の{col}桁目(バイトで数える)にカーソルを移動させる。
桁番号{col}は1から始まる。
引数に {list} が 1 つだけ指定された場合は、それは要素が 2 個か
3 個、または 4 個の List として解釈される:
[{lnum}, {col}]
[{lnum}, {col}, {off}]
[{lnum}, {col}, {off}, {curswant}]
これは getpos() や getcurpos() の戻り値とほぼ同じである。
違いは最初の要素がないこと。
{col} を文字数として使用してカーソルを配置するには、
setcursorcharpos() を使う。
この関数を呼んでもジャンプリストは変更されない。
{lnum} は getline() と同様に使用されるが、{lnum} がゼロの場
合、カーソルはカレント行に留まる。
{lnum}がバッファの行数よりも大きい場合は、最後の行へ移動する。
{col}がその行のバイト数より大きい場合は、その行の最後の文字へ
移動する。
{col}が0の場合は、カレント桁に留まる。
{curswant} が与えられた場合は、縦方向移動の優先的列番号として
使われる。指定がない場合は {col} が使われる。
'virtualedit' が有効のとき、{off}は文字の先頭からの画面上のオ
フセットを指定する。例えば、<Tab>の中の位置や最後の文字より後
などへも移動できる。
カーソルを移動できたときは 0 を、できなかったときは-1 を返す。
method としても使用できる:
GetCursorPos()->cursor()
戻り値の型: Number
debugbreak({pid}) debugbreak()
主にデバッグしているプログラムに割り込むために使用される。プロ
セス {pid} に対して SIGTRAP を発生させる。関係のないプロセスへ
の振る舞いは未定義である。terminal-debugger を参照。
{MS-Windows 上でのみ有効}
正常にプログラムが中断された場合、TRUE を返す。それ以外の場
合は FALSE を返す。
method としても使用できる:
GetPid()->debugbreak()
戻り値の型: Number
deepcopy({expr} [, {noref}]) deepcopy() E698
{expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ
ピーの間に違いはない。
{expr}がリストListの場合は完全なコピーを作る。つまり元のリス
トを変更してもコピーは変更されず、逆も同じである。要素の1つが
リストまたは辞書であるときは、再帰的にコピーが作成される。
よってコピーの要素に変更を加えても元のリストの要素は変更を受け
ない。
辞書はリストと同様な方法でコピーされる。
{noref}が省略された、または0のとき、含まれているリストや辞書は
1度だけコピーされる。全ての参照はこのただ1つのコピーを指す。
{noref}が1の場合、リストや辞書は現れるたびに新しいコピーが作ら
れる。そのため循環参照があるとdeepcopy()は失敗する。
E724
ネストは100レベルまで可能である。それ以上参照を繰り返している
要素があると、{noref}が1の場合は失敗する。
copy()も参照。
method としても使用できる:
GetObject()->deepcopy()
戻り値の型: any。{expr} による
delete({fname} [, {flags}]) delete()
{flags}を指定しないもしくは{flags}を空で指定した場合: ファイル
{fname}を削除する。
これは{fname}がシンボリックリンクの時でも動作し、シンボリック
リンクは、それが示すものではなく、リンク自身が削除される。
{flags}が "d" の場合: ディレクトリ{fname}を削除する。
これはディレクトリ{fname}が空でない場合は失敗する。
{flags}が "rf" の場合: ディレクトリ{fname}、その中に含むすべて
のものを再帰的に削除する。気をつけて!
Note: MS-Windowsでは、使用中のディレクトリを削除することはでき
ない。
結果は数値であり、削除に成功すれば 0/false、削除に(部分的にで
も)失敗すれば -1/true である。
リスト List から項目を削除するには remove() を使う。
バッファから行を削除するには:deleteもしくはdeletebufline()
を使う。
method としても使用できる:
GetName()->delete()
戻り値の型: Number
deletebufline({buf}, {first} [, {last}]) deletebufline()
{first} から {last} (を含む) までの行をバッファ {buf} から削除
する。{last} が省略されている場合、{first} 行だけを削除する。
成功時には 0 が返され、失敗時には 1 が返される。
この関数は、ロードされたバッファに対してのみ機能する。必要であ
れば、最初に bufload() を呼び出すこと。
{buf} の使い方は前述の bufname() を参照。
{first} および {last} は getline() と同様に扱われる。Note:
line() の使用はカレントバッファを参照する。バッファ {buf} 内
の最後の行を参照するには "$" を使用する。
method としても使用できる:
GetBuffer()->deletebufline(1)
戻り値の型: Number
did_filetype()
did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれば、
TRUEが返る。スクリプトのFileTypeイベントが、複数回呼び出され
るのを回避するのに使える。 FileType
:setf FALLBACK が使用されている場合は FALSE を返す。
他のファイルへ移動すると、このカウンタはリセットされる。よって
実際は、カレントバッファに対してFileTypeイベントが発生したかど
うかを判定する。他のバッファを開く自動コマンドの中でこの関数を
使って 'filetype' を設定し、構文ファイルを読み込むために使え
る。
戻り値の型: Number
diff({fromlist}, {tolist} [, {options}]) diff()
{fromlist} と {tolist} の文字列の差分を含む文字列またはリスト
を返す。Vim の内部 diff ライブラリを使用して差分を計算する。
E106
{options} のオプションの "output" 項目は、返される diff 形式を
指定する。次の値がサポートされている:
indices 開始インデックスと終了インデックスのリストと、
各 diff hunk (差分の塊) 内の文字列数を返す。
unified unified diff 出力を文字列として返す。
これがデフォルトである。
{options} の "output" 項目が "indices" の場合、リストが返され
る。各リスト項目には、各 diff hunk (差分の塊) の以下の項目を含
む辞書が含まれている:
from_idx この diff hunk の {fromlist} 内の開始インデッ
クス。
from_count この diff hunk で追加/削除/変更された
{fromlist} 内の文字列数。
to_idx この diff hunk の {tolist} 内の開始インデック
ス。
to_count この diff hunk で追加/削除/変更された {tolist}
内の文字列数。
{options} 辞書引数は diff オプション ('diffopt' と同様) も指定
し、以下の項目をサポートする:
algorithm 使用する diff アルゴリズムを指定する辞
書。サポートされている真偽値項目は
"myers", "minimal", "patience",
"histogram"。
context diff context の長さ。デフォルトは 0。
iblank 行がすべて空白の変更は無視する。
icase テキストの大小文字の変更を無視する。
indent-heuristic 内部 diff ライブラリのインデントヒュー
リスティックを使用する。
iwhite 空白の量の変化を無視する。
iwhiteall すべての空白の変更を無視する。
iwhiteeol 行末の空白の変更を無視する。
これらのオプションの詳細については、'diffopt' を参照。
Unified diff を計算するために、{fromlist} のすべての項目は改行
区切りを用いてひとつの文字列に連結される。{tolist} も同様であ
る。Unified diff の出力は行番号を用いる。
{fromlist} と {tolist} が同一の場合、空のリストまたは文字列を
返す。
例:
:echo diff(['abc'], ['xxx'])
@@ -1 +1 @@
-abc
+xxx
@@ -1 +1 @@
-abc
+xxx
:echo diff(['abc'], ['xxx'], {'output': 'indices'})
[{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1}]
:echo diff(readfile('oldfile'), readfile('newfile'))
:echo diff(getbufline(5, 1, '$'), getbufline(6, 1, '$'))
[{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1}]
:echo diff(readfile('oldfile'), readfile('newfile'))
:echo diff(getbufline(5, 1, '$'), getbufline(6, 1, '$'))
その他の例については、diff-func-examples を参照
method としても使用できる:
GetFromList->diff(to_list)
戻り値の型: String または list<dict<number>> または
list<any>。{options} による
diff_filler({lnum}) diff_filler()
{lnum}行目より上にある削除行の数を返す。削除行とは、差分モード
で他方のウィンドウにテキストが挿入されていることを表す行のこと
である。削除行は表示はされているが、実際にはバッファに存在しな
い。
{lnum}はgetline()と同様に扱われる。つまり "." はカレント行と
なり、"'m" はマークmを表す。
カレントウィンドウが差分モードでないときは0を返す。
method としても使用できる:
GetLnum()->diff_filler()
戻り値の型: Number
diff_hlID({lnum}, {col}) diff_hlID()
差分モードで{lnum}行{col}桁(バイト単位)の位置のハイライトIDを
返す。カレント行に変更がないときは0を返す。
{lnum}はgetline()と同様に扱われる。つまり "." はカレント行と
なり、"'m" はマークmを表す。
先頭の桁の{col}は1となり、最初の行の{lnum}は1となる。
ハイライトIDはsynIDattr()を使って構文情報を得るために使える。
method としても使用できる:
GetLnum()->diff_hlID(col)
戻り値の型: Number
digraph_get({chars}) digraph_get() E1214
{chars} のダイグラフを返す。これは正確に2文字の文字列である必
要がある。もし {chars} が2文字ちょうどでない、もしくは {chars}
のダイグラフがないなら、エラーとなり空文字列を返す。
必要であれば文字はUnicodeから 'encoding' に変換される。変換が
利用可能である必要があり、失敗することがある。
digraph_getlist() も参照。
例:
" 組み込みのダイグラフの取得
:echo digraph_get('00') " '∞' が返る
:echo digraph_get('00') " '∞' が返る
" ユーザー定義のダイグラフの取得
:call digraph_set('aa', 'あ')
:echo digraph_get('aa') " 'あ' が返る
:call digraph_set('aa', 'あ')
:echo digraph_get('aa') " 'あ' が返る
method としても使用できる:
GetChars()->digraph_get()
戻り値の型: String
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_getlist([{listall}]) digraph_getlist()
ダイグラフのリストを返す。引数 {listall} が真で与えられたとき、
デフォルトのダイグラフを含む全ダイグラフを返す。それ以外はユー
ザー定義のダイグラフのみを返す。
必要であれば文字はUnicodeから 'encoding' に変換される。変換が
利用可能である必要があり、失敗することがある。
digraph_get() も参照。
例:
" ユーザー定義のダイグラフの取得
:echo digraph_getlist()
:echo digraph_getlist()
" デフォルトを含む全ダイグラフの取得
:echo digraph_getlist(1)
:echo digraph_getlist(1)
method としても使用できる:
GetNumber()->digraph_getlist()
戻り値の型: list<list<string>>
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_set({chars}, {digraph}) digraph_set()
ダイグラフ {chars} をリストに追加する。{chars} は2文字の文字列
の必要がある。{digraph} はUTF-8でエンコードされた1文字の文字
列。 E1215
合成文字は無視されないことに注意。この関数は :digraphs と同
様だがスペース始まりのダイグラフを登録するのに便利である。
この関数はダイグラフ digraph が登録されたなら v:true を返す。
もし失敗したなら、エラーメッセージとともに v:false を返す。
一度に複数のダイグラフを登録したいなら、digraph_setlist() が
使える。
例:
call digraph_set(' ', 'あ')
method としても使用できる:
GetString()->digraph_set('あ')
戻り値の型: vim9-boolean
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
digraph_setlist({digraphlist}) digraph_setlist()
digraph_set() と同じだが複数のダイグラフを一度に追加できる。
{digraphlist} はリストのリストで、各リストは digraph_set()
と同じ {chars} と {digraph} の2つの文字列を持つ。 E1216
例:
call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
これは以下と似ている:
for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
call digraph_set(chars, digraph)
endfor
しかし、この関数は最初のエラーでリターンし、それ以降のダイグラcall digraph_set(chars, digraph)
endfor
フは追加されない点が異なる。
method としても使用できる:
GetList()->digraph_setlist()
戻り値の型: vim9-boolean
この関数は +digraphs 機能付きでコンパイルされたときのみ動作
する。機能が無効の場合、この関数はエラーメッセージを表示する。
echoraw({string}) echoraw()
{string}を表示不可能な文字を含み、そのまま出力する。これは端末
コードを出力するために使える。例えば、modifyOtherKeysを無効に
するためには:
call echoraw(&t_TE)
さらに再度有効にするためには: call echoraw(&t_TI)
この方法でターミナルを壊すことができるため、気を付けて取り扱うこと。
戻り値の型: Number
empty({expr}) empty()
{expr}が空なら1を、そうでなければ0を返す。
- リストListまたは辞書Dictionaryは要素を1個も持たないとき
空とみなされる。
- 文字列 String はその長さが0のとき空とみなされる。
- 数値と浮動小数点数は値が0のとき空とみなされる。
- v:false, v:none, v:null は空であり、v:true は空では
ない。
- ジョブ Job は開始に失敗したときは空である。
- チャネル Channel は閉じられていると空である。
- Blob はその長さが0のときは空である。
- Object はオブジェクトの empty() メソッドが (もし存在し) 真
を返すとき空である。object-empty()
長いリストに対しては長さを0と比較するよりこちらの方がずっと高
速である。
method としても使用できる:
mylist->empty()
戻り値の型: Number
environ() environ()
すべての環境変数を辞書として返す。このように環境変数が存在する
かどうかを確認できる:
:echo has_key(environ(), 'HOME')
Note 変数名はキャメルケース(CamelCase)でも構わない。大文字と小文字を区別しないためにこれを使用すること:
:echo index(keys(environ()), 'HOME', 0, 1) != -1
戻り値の型: dict<string>
err_teapot([{expr}]) err_teapot()
RFC 2324 の実装に必要な 418 番のエラーを生成する。
{expr} が提示され、それが TRUE である場合、エラー 503 が与えら
れ、コーヒーが一時的に使用できないことを示す。
{expr} が提示される場合は文字列でなければならない。
戻り値の型: Number
escape({string}, {chars}) escape()
{string}内に現れる{chars}の文字をバックスラッシュでエスケープ
する。例:
:echo escape('c:\program files\vim', ' \')
結果: c:\\program\ files\\vim
shellescape() および fnameescape() も参照。method としても使用できる:
GetText()->escape(' \')
戻り値の型: String
eval()
eval({string}) {string}を評価し、値を返す。string()の戻り値を元の値に戻すの
に非常に便利である。数値、浮動小数点数、文字列、Blob およびそ
れらの複合に対して動作する。実際に存在する関数への Funcref
に対しても動作する。Vim9 script においては、完全修飾名から
enum の値を取得するのに使用できる。
method としても使用できる:
argv->join()->eval()
戻り値の型: any。{string} による
eventhandler() eventhandler()
イベントハンドラの中では1を返す。つまり、ユーザーの文字入力を
待っている間に、ファイルをドラッグ&ドロップするなど割り込みさ
れたことを表す。このときは対話的なコマンドは使えない。イベント
ハンドラの中でないときは0を返す。
戻り値の型: Number
executable({expr}) executable()
{expr}という名前の実行可能ファイルが存在するかどうか判定する。
{expr}は引数を何もつけないプログラム名でなければならない。
executable()は$PATHと通常のプログラム検索ディレクトリを参照す
る。
PATHEXT
MS-Windowsでは ".exe"、".bat" などの拡張子は含めても含めなくて
もよい。省略された場合は$PATHEXTの拡張子を検索する。よって
"foo.exe" が存在しなければ "foo.exe.bat" が見つかることもあり
うる。$PATHEXTが存在しなければ ".com;.exe;.bat;.cmd" が使われ
る。$PATHEXTにドットだけを含めると拡張子なしの名前を検索するこ
とができる。'shell' がUnixシェルのように思われるときは、{expr}
の後に拡張子をつけない名前も検索される。
MS-Windowsではファイルが存在するかどうかだけを判定し、それが
ディレクトリでないことや、それが本当に実行可能であるかどうかは
判定されない。
MS-Windows では、Vim の実行可能ファイルと同じディレクトリにあ
る実行可能ファイルは常に見つかる。このディレクトリは $PATH に
追加されているので、実行しても動作するはずだ win32-PATH。
NoDefaultCurrentDirectoryInExePath
MS-Windows では、通常、Vim のカレント作業ディレクトリにある実
行可能ファイルも見つかるが、
$NoDefaultCurrentDirectoryInExePath 環境変数を設定することでこ
れを無効にすることができる。
戻り値は数値:
1 存在する
0 存在しない
-1 このシステム上では実装されていない
exepath() は、実行可能ファイルの絶対パスを取得するのに使用す
ることができる。
method としても使用できる:
GetCommand()->executable()
戻り値の型: Number
execute({command} [, {silent}]) execute()
単一あるいは複数のExコマンドを実行して、出力を文字列として返
す。
{command} は文字列かリストを使える。リストの場合はそれらの行は
1 行ずつ実行される。
これは多かれ少なかれ以下と同等である:
redir => var
{command}
redir END
ただし、{command} 内の行継続は認識されない。{command}
redir END
オプションの {silent} の引数は以下の値を取ることができる:
"" :silent を使わない
"silent" :silent を使う
"silent!" :silent!を使う
デフォルトは "silent" である。Note "silent!" は redir とは異
なり、エラーメッセージは削除されることに注意すること。もし外部
コマンドを使って画面がおかしくなる様であれば、代わりに
system()を使うことができる。
E930
{command} の中のどこかで:redirを使うことができない。
行のリストを得るために、出力に split() を使うことができる:
execute('args')->split("\n")
現在のウィンドウとは別のウィンドウでコマンドを実行するには
win_execute() を使用すること。
再帰的に使用されると、再帰呼び出しの出力は、上位呼び出しの出力
に含まれない。
method としても使用できる:
GetCommand()->execute()
戻り値の型: String
exepath({expr}) exepath()
{expr} が実行可能ファイルで、それが絶対パス、相対パス、または
$PATH の中に存在する場合は、そのフルパスを返す。
Note: {expr} が "./" で開始している場合はカレントディレクトリ
が使われる。Vim のパスを得る場合に問題になるかもしれない:
echo exepath(v:progpath)
{expr} が $PATH の中に見つからないか、それが実行可能ファイルではなかった場合は空文字列が返る。
method としても使用できる:
GetCommand()->exepath()
戻り値の型: String
exists({expr}) exists()
結果は数値で、変数{expr}が存在すればTRUEとなり、そうでなけれ
ば0となる。
Note: コンパイルされる :def 関数は実行時に評価が完了する。
exists_compiled() を使うことでコンパイル時に式が評価される。
ある機能がサポートされているか判定するにはhas()を使う。
ファイルが存在するかを判定するにはfilereadable()を使う。
引数{expr}は文字列で次のうちいずれかである。
varname 内部変数(internal-variables)
dict.key curly-braces-names, Dictionaryの要
list[i] 素、Listの要素、クラスとオブジェクト
import.Func のメソッド、import要素などに対しても動
class.Func 作する。
object.Func コンパイルされる :def 関数内のローカ
class.varname ル変数には動作しない。
object.varname また関数参照が使用できるため、Vim9
script の関数でも動作する。
インデックスの評価で無効な式であるとエ
ラーメッセージが出る可能性があることに
注意。例:
:let l = [1, 2, 3]
:echo exists("l[5]")
0:echo exists("l[5]")
:echo exists("l[xx]")
E121: Undefined variable: xx0
&option-name Vimオプション(存在するかだけを判定し、
本当に動作するかは判定しない)
+option-name 動作するVimオプション
$ENVNAME 環境変数(空文字列と比較することでも判
定できる)
*funcname 組み込み関数(functions参照)かユーザー
が定義した関数(user-functions参照)の
内、実装済みのもの。また Funcref であ
る変数に対しても動作する。
?funcname 実装されているかもしれない組み込み関数。
"funcname" が有効かチェックするのに利
用できる。
:cmdname exコマンド: 組み込みコマンド、ユーザー
定義コマンド、コマンド修飾子:command。
戻り値:
1 コマンド名の先頭に一致
2 コマンド名に完全一致
3 複数のユーザー定義コマンドに一致
コマンドが定義されているかどうかを判定
するには、必ず戻り値が2であるかを確認
すること。
:2match :2match コマンド。
:3match :3match コマンド (ただし、内部使用の
ために予約されているため、おそらく使用
すべきではない)
#event このイベントに対する自動コマンド定義
#event#pattern このイベントとパターンに対する自動コマ
ンド定義(パターンは文字そのままに解釈
され、自動コマンドのパターンと1文字ず
つ比較される)
#group 自動コマンドグループが存在するか
#group#event このグループとイベントに対して自動コマ
ンドが定義されているか
#group#event#pattern
このグループ、イベント、パターンに対す
る自動コマンド定義
##event このイベントに対する自動コマンドがサ
ポートされているか
例:
exists("&shortname")
exists("$HOSTNAME")
exists("*strftime")
exists("*s:MyFunc") " 旧来のスクリプトのみ
exists("*MyFunc")
exists("bufcount")
exists(":Make")
exists("#CursorHold")
exists("#BufReadPre#*.gz")
exists("#filetypeindent")
exists("#filetypeindent#FileType")
exists("#filetypeindent#FileType#*")
exists("##ColorScheme")
シンボルである&/$/*と名前の間には、空白文字があってはならなexists("$HOSTNAME")
exists("*strftime")
exists("*s:MyFunc") " 旧来のスクリプトのみ
exists("*MyFunc")
exists("bufcount")
exists(":Make")
exists("#CursorHold")
exists("#BufReadPre#*.gz")
exists("#filetypeindent")
exists("#filetypeindent#FileType")
exists("#filetypeindent#FileType#*")
exists("##ColorScheme")
い。
ある少数の場合では無視されるが、名前の後に余計な文字があっては
ならない。将来はもっと厳格になる可能性があるので、現在許される
からといって頼ってはならない。
正しい例:
exists(":make")
正しくない例: exists(":make install")
Note 引数は変数そのものではなく、文字列でなければならない。例
えば、次は動作しない:
exists(bufcount)
これは変数 "bufcount" の存在を判定するのではなく、bufcountの値を渡し、それが存在するかどうか判定してしまう。
method としても使用できる:
Varname()->exists()
戻り値の型: String
exists_compiled({expr}) exists_compiled()
exists() と同様だがコンパイル時に評価を行う。関数にあるブロッ
クが使うとエラーになってしまう場合にスキップするのに便利である:
if exists_compiled('*ThatFunction')
ThatFunction('works')
endif
exists() を使った場合はコンパイル時に ThatFunction() が未定ThatFunction('works')
endif
義だとエラーになる。
{expr} は文字列定数の必要がある。 E1232
:def 関数の中で使える。 E1233
引数やローカル変数のチェックには機能しない。
戻り値の型: String
exp({expr}) exp()
{expr} の指数を返す。
値は [0, inf] の範囲の浮動小数点数 (Float)。
{expr} は浮動小数点数 (Float) か数値 (Number) でなければな
らない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
:echo exp(2)
7.389056 :echo exp(-1)
0.367879method としても使用できる:
Compute()->exp()
戻り値の型: Float
expand({string} [, {nosuf} [, {list}]]) expand()
ワイルドカードと{string}内の特殊なキーワードを展開する。
'wildignorecase' が適用される。
{list} が指定されその値がTRUEなら、結果はリストで返される。
そうでない場合は結果は文字列で返される。その場合、複数のマッチ
があるときはそれらは文字 <NL> で区切られる。[Note: バージョン
5.0 では空白文字が用いられ、スペースを含むファイル名について問
題を引き起こしていた]
展開が失敗した場合、結果は空文字列となる。{string} が
'%'、'#'、'<' で始まらない限り、存在しないファイル名というの
は、結果の文字列には含まれない。下記を参照のこと。
:terminal のウィンドウに対しては、'%' は '!' とそれに続く実
行中のコマンドまたはシェルに展開される。 terminal-bufname
{string} が '%' か '#' か '<' で始まる場合には、展開は
cmdline-specialのように、変換子を受け付け、それらに関連付け
られた変換が施される。ここに簡単な概略を示す:
% 現在のファイル名
# 代替バッファのファイル名
#n n番の代替バッファのファイル名
<cfile> カーソルの下のファイル名
<afile> autocmdのファイル名
<abuf> autocmdのバッファ名
<amatch> autocmdのマッチした名称
<cexpr> カーソル下のC言語の式
<sfile> 取り込み(source)中のファイル名、関数名
<slnum> 取り込み(source)中の行番号または関数内
の行番号
<sflnum> スクリプトファイルの行番号。関数内でも
同様。
<SID> "<SNR>123_" ここで "123" は現在のスク
リプトのID <SID>
<script> 取り込み(source)中のファイル名、あるい
は現在の関数が定義されたスクリプトファ
イル名
<stack> コールスタック
<cword> カーソル下の単語(word)
<cWORD> カーソル下の単語(WORD)
<client> 最後に受け取ったメッセージの{clientid}
server2client()
変換子:
:p フルパス名を展開
:h ヘッド(ディレクトリ)
:t テイル(ファイル名だけ)
:r 拡張子が削除される
:e 拡張子だけ
例:
:let &tags = expand("%:p:h") .. "/tags"
'%' や '#' や '<' で始まる文字列を展開する時には、それに続くテキストは無視されることに注意。従ってこれは正しくない:
:let doesntwork = expand("%:h.bak")
こうすると良い: :let doeswork = expand("%:h") .. ".bak"
"<cfile>" やそれらを展開する時には、戻り値が完全な展開をされない参照名であることにも注意が必要。もしも "<cfile>" が
"~/.cshrc" であった場合、"~/" を展開してホームディレクトリにす
るために、もう一度expand()を呼び出す必要がある:
:echo expand(expand("<cfile>"))
変数と変換子の間には空白文字があってはならない。関数
fnamemodify()が通常のファイル名の変換には使用可能である。
カレントバッファや代替バッファの名前が未定義のときに '%' や
'#' を使うと空文字列になる。"%:p" を名無しのバッファに使用した
場合、結果はカレントディレクトリに '/' が付加されたものになる。
'verbose' が設定されていると、'%', '#' および <> の項目を展開
できない場合、エラーメッセージが表示される。
'%' や '#' や '<' で始まらない{string}は、コマンドラインのファ
イル名と同じように展開される。{nosuf}引数にTRUEを指定しない
限り、'suffixes' と 'wildignore' が使用される。
存在しないファイルの名前も結果の文字列に含まれる。"**" を使う
とディレクトリツリーを検索できる。例えば、カレントディレクトリ
以下にある全ての "README" を見つけるには次のようにする:
:echo expand("**/README")
expand() はシェルの持っている変数や環境変数を展開できる。しか
し展開のためにシェルを起動するかもしれないので速度が遅くなるこ
とがある。expr-env-expand 参照。
展開された変数はファイル名のリストのように扱われる。環境変数を
展開できないときはそのままになる。よって、
":echo expand('$FOOBAR')" の結果は "$FOOBAR" となる。
存在するファイルを探すにはglob()を参照。外部コマンドの「生
の」実行結果を扱うにはsystem()を参照。
method としても使用できる:
Getpattern()->expand()
戻り値の型: String または list<string>。{list} による
expandcmd({string} [, {options}]) expandcmd()
:edit などのExコマンドに対しておこなわれているように、文字列
{string} の特殊な項目を展開する。これは {string} の中のどこで
も、expand() のような特殊なキーワードと環境変数を展開する。
"~user" および "~/path" は冒頭でのみ展開される。
引数の辞書 {options} は以下の項目をサポートする:
errmsg TRUEに設定された場合、展開中に遭遇したエラーの
エラーメッセージを表示する。デフォルトでは、エ
ラーメッセージは表示されない。
展開された文字列を返す。展開中にエラーに遭遇した場合、変更され
ていない {string} を返す。
例:
:echo expandcmd('make %<.o')
make /path/runtime/doc/builtin.o
:echo expandcmd('make %<.o', {'errmsg': v:true})
make /path/runtime/doc/builtin.o
:echo expandcmd('make %<.o', {'errmsg': v:true})
method としても使用できる:
GetCommand()->expandcmd()
戻り値の型: String または list<string>。{list} による
extend({expr1}, {expr2} [, {expr3}]) extend()
{expr1}と{expr2}は両方ともリストListであるか、両方とも辞書
Dictionariesでなければならない。
両方ともリストであるなら、{expr2}を{expr1}に付け加える。
{expr3}が指定された場合は、{expr1}の第{expr3}番目の要素の前に
{expr2}の要素を挿入する。{expr3}が0のときは最初の要素の前に挿
入する。{expr3}がlen({expr1})に等しいときは末尾に{expr2}が付け
加えられる。
例:
:echo sort(extend(mylist, [7, 5]))
:call extend(mylist, [2, 3], 1)
{expr1} が {expr2} と同じリストである場合、コピーされる要素の:call extend(mylist, [2, 3], 1)
数はリストの元の長さと同じである。
例として {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 を返す。
method としても使用できる:
mylist->extend(otherlist)
戻り値の型: list<{type}> または dict<{type}>。{expr1} および
{expr2} による。エラーの場合: Number
extendnew({expr1}, {expr2} [, {expr3}]) extendnew()
extend() と同様だが、{expr1} へ要素を追加する代わりに、新し
いリストまたは辞書が作成されて返される。{expr1} は変更されな
い。
戻り値の型: list<{type}> または dict<{type}>。{expr1} および
{expr2} による。エラーの場合: Number
feedkeys({string} [, {mode}]) feedkeys()
{string}中の各文字を、あたかもマッピングまたはユーザーによって
タイプされたかのように、処理キューに入れる。
デフォルトではこれらの文字は先行入力バッファの末尾に付け足され
る。そのためマッピングを展開している途中であれば、これらの文字
はマッピングを展開した後に来ることになる。他の文字の前に挿入す
るには、'i' フラグを使用する。それらはマッピングからの任意の文
字の前の挿入の次に実行される。
この関数は、{string}中の文字が処理されるまでは待たない。
特殊なキーを{string}に含めるにはダブルクォートと "\..." 記法を
使う(expr-quoteを参照)。例えば、feedkeys("\<CR>")は<Enter>
キーの押下をシミュレートする。しかしfeedkeys('\<CR>')とすると、
この文字の通り5文字を挿入する。
役に立つかもしれない特別なコードは <Ignore> だ。それは何もせず
に文字の待機を終了する。 <Ignore>
{mode}は以下の文字フラグを含む文字列:
'm' キーをマップ展開する。これが既定である。{mode}が省略さ
れたときは、挿入されたキーはマップ展開の対象になる。
'n' キーをマップ展開しない。
't' キーをタイプされたかのように扱う。そうでない場合は
マッピングから展開されたかのように扱われる。これは
undoや折り畳みの展開などで違いが現れる。
'L' 低レベル入力。UnixまたはGUIを使用している場合にのみ機
能する。キーは端末から来ているかのように使われる。他の
フラグは使用されない。 E980
CTRL-C で割り込み時、かつ 't' が含まれていると内部
"got_int" フラグが設定される。
'i' 追加する代わりに文字を挿入する。(上記参照)
'x' 先行入力が空になるまでコマンドを実行する。
これは ":normal!" を使うのと似ている。
'x' なしで数回feedkeys()を呼んだ後、'x' ありで1回
({string}が空でも可能) feedkeys()を呼ぶことで先行入力
をすべて実行できる。Note Vimが挿入モードを終了したとき
は、スクリプト続行前の文字入力待ちによる立ち往生を避け
るために、<Esc>が入力されたかのように振る舞う。
Note コマンドの実行中に feedkeys() を再帰的に呼び出し
た場合、最後の呼び出しですべての先行入力が消費される。
'c' 実行時のスクリプトのコンテキストを削除し、旧来のスクリ
プトの構文が適用され、"s:var" が動作しないようにする。
Note 供給される文字列がスクリプトコンテキストを設定す
る場合でも、これは適用されることに注意。
'!' 'x' と一緒に使用すると挿入モードを終了しない。タイマー
が少し後で挿入モードを終了するように設定されているとき
にテストで使用できる。CursorHoldIのテストに便利である。
戻り値は常に0。
method としても使用できる:
GetInput()->feedkeys()
戻り値の型: String または list<string>。{list} による
filecopy({from}, {to}) filecopy()
名前 {from} で指定されたファイルを {to} にコピーする。結果は数
値で、ファイルのコピーが成功した場合は TRUE、失敗した場合は
FALSE になる。
名前 {to} のファイルがすでに存在する場合は失敗する。
Note ディレクトリは処理されないことに注意 (まだ)。
この関数は sandbox では使用できない。
method としても使用できる:
GetOldName()->filecopy(newname)
戻り値の型: Number
filereadable({file}) filereadable()
結果は数値で、{file}というファイルが存在し、読み込むことが可能
ならばTRUEとなる。ファイル{file}が存在しないかディレクトリ
だった場合には、結果はFALSEとなる。引数{file}は文字列として
使えればどのような表現でもよい。
ファイルが読み込み可能でなくてもよい場合にはglob()を使う。
{file} はそのまま使用されるため、最初にワイルドカードを展開す
ることを推奨する:
echo filereadable('~/.vimrc')
0
echo filereadable(expand('~/.vimrc'))
1
0
echo filereadable(expand('~/.vimrc'))
1
method としても使用できる:
GetName()->filereadable()
戻り値の型: Number
file_readable()
以前の名前: file_readable().
filewritable({file}) filewritable()
結果は数値で、{file}というファイルが存在し、書き込むことが可能
ならば1となる。ファイル{file}が存在しないか書き込み不可能であ
る場合には、結果は0となる。{file}がディレクトリであり、書き込
み可能な場合、結果は2となる。
method としても使用できる:
GetName()->filewritable()
戻り値の型: Number
filter({expr1}, {expr2}) filter()
{expr1}はリスト List、文字列 String、Blob、辞書
Dictionary でなければならない。
{expr1}の各要素に対して{expr2}を評価し、その結果が0もしくは偽
ならばリストまたは辞書からその要素を削除する。Blob の各バイ
トや文字列 String の各文字も同様に行う。
{expr2}は文字列stringまたは関数参照Funcrefでなければならな
い。
{expr2}が文字列の場合、{expr2}の内部ではv:valが現在の要素の
値を保持している。辞書の場合はv:keyが現在の要素のキーを保持
しており、リストの場合はv:keyが現在の要素のインデックスを保
持している。Blob の場合は v:key が現在のバイトのインデック
スになる。文字列 String の場合は v:key が現在の文字のイン
デックスになる。
例:
call filter(mylist, 'v:val !~ "OLD"')
は要素 "OLD" を削除する。 call filter(mydict, 'v:key >= 8')
は8未満のキーを持つ要素を削除する。 call filter(var, 0)
は全要素を削除する。つまりリストまたは辞書をクリアする。Note {expr2}は式を表す文字列である。バックスラッシュを二重に
しなくても済むようにliteral-stringを使うとよいだろう。ただし
その場合はシングルクォートを二重にしなければならない。
{expr2}がFuncrefの場合は、2つの引数で呼び出される:
1. 現在の要素のキーまたはインデックス。
2. 現在の要素の値。
関数は、その要素を保持すべきときはTRUEを返さなければならな
い。リストの奇数版目の要素を保持する例:
func Odd(idx, val)
return a:idx % 2 == 1
endfunc
call filter(mylist, function('Odd'))
lambda を使えばより短く書ける。Vim9 の構文では:return a:idx % 2 == 1
endfunc
call filter(mylist, function('Odd'))
call filter(myList, (idx, val) => idx * val <= 42)
旧来のスクリプトの構文では: call filter(myList, {idx, val -> idx * val <= 42})
"val" を使わない場合は省略できる: call filter(myList, {idx -> idx % 2 == 1})
Vim9 script では結果が true、false、0もしくは1になる。
それ以外の値では結果が型エラーになる。
リストや辞書でのこの操作はその場で(in-place)行われる。変更した
くない場合は最初にコピーを作ること:
:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
{expr1}のリスト List または辞書 Dictionary をフィルターし
た結果、もしくは新規の Blob か文字列 String を返す。{expr2}
を評価している最中にエラーが発生した場合は、{expr1}内のそれ以
降の要素の処理は行われない。{expr2}が関数参照の場合、関数が
"abort" フラグつきで定義されていない限り、関数内のエラーは無視
される。
method としても使用できる:
mylist->filter(expr2)
戻り値の型: String, Blob, list<{type}> または
dict<{type}>。{expr1} による
finddir({name} [, {path} [, {count}]]) finddir()
{path}から{name}という名前のディレクトリを探す。ディレクトリを
上方・下方のどちらにも再帰的に検索できる。{path}の記法について
はfile-searchingを参照。
最初に見つかったディレクトリのパスを返す。そのディレクトリがカ
レントディレクトリの下にある場合は相対パスを返す。そうでなけれ
ば絶対パスを返す。
{path}が省略されたとき、または空のときはオプション 'path' の値
が使われる。
省略可能な引数{count}が指定されたときは、最初に見つかったディ
レクトリでなく、{count}番目に見つかったディレクトリを返す。
{count}が負の場合は、見つかったディレクトリ全てのリストList
を返す。
ディレクトリが見つからない場合は空の文字列を返す。
これはexコマンド:findによく似ている。
method としても使用できる:
GetName()->finddir()
戻り値の型: String
findfile({name} [, {path} [, {count}]]) findfile()
finddir()と同様だが、ディレクトリでなくファイルを検索する。
'suffixesadd' が適用される。
例:
:echo findfile("tags.vim", ".;")
この例は、カレントファイルがあるディレクトリから上方に"tags.vim" を見つけるまで再帰的に検索する。
method としても使用できる:
GetName()->findfile()
戻り値の型: String
flatten({list} [, {maxdepth}]) flatten()
リスト {list} を {maxdepth} の深さまで平坦化する。{maxdepth}
が無い場合の結果は {maxdepth} が非常に巨大な数であるのように、
リスト List からネストを除去する。
{list} は変更が入るので、それを望まないなら flattennew() を
使うこと。
Vim9 script では flatten() は使用できないため、常に
flattennew() を使う必要がある。
E900
{maxdepth} はリストのネストをどれだけ深く変更するかを意味する。
{maxdepth} が0なら {list} は変更されない。
{maxdepth} は正の数でなければならない。
エラーがあったときは数値の0を返す。
例:
:echo flatten([1, [2, [3, 4]], 5])
[1, 2, 3, 4, 5] :echo flatten([1, [2, [3, 4]], 5], 1)
[1, 2, [3, 4], 5]method としても使用できる:
mylist->flatten()
戻り値の型: list<{type}>
flattennew({list} [, {maxdepth}]) flattennew()
flatten() と同様だが最初に {list} のコピーを作る。
戻り値の型: list<{type}>
float2nr({expr}) float2nr()
{expr} の小数点以下を切り捨てて Number に変換する。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0 を返す。
{expr} の値が Number の範囲外の場合、結果は 0x7fffffff また
は -0x7fffffff になる(64ビット数値が有効化されている場合は
0x7fffffffffffffff または -0x7fffffffffffffff)。
NaN は -0x80000000 になる(64ビット数値が有効化されている場合は
-0x8000000000000000)。
例:
echo float2nr(3.95)
3 echo float2nr(-23.45)
-23 echo float2nr(1.0e100)
2147483647 (または 9223372036854775807) echo float2nr(-1.0e150)
-2147483647 (または -9223372036854775807) echo float2nr(1.0e-100)
0method としても使用できる:
Compute()->float2nr()
戻り値の型: Number
floor({expr}) floor()
{expr} 以下の最大の整数を Float で返す(切り捨て)。
{expr} は Float または Number に評価されなければならない。
{expr} が Float または Number でない場合は 0.0 を返す。
例:
echo floor(1.856)
1.0 echo floor(-5.456)
-6.0 echo floor(4.0)
4.0method としても使用できる:
Compute()->floor()
戻り値の型: Float
fmod({expr1}, {expr2}) fmod()
{expr1} / {expr2} の余りを返す (割り算が表現できなくても)。
{expr2} が非ゼロなら {expr1} - i * {expr2} の結果を返す (i は
戻り値が {expr1} と同じ符号を持ちその絶対値が {expr2} よりも小
さくなるような値)。{expr2} がゼロならゼロが返る。戻り値の型は
浮動小数点数 (Float)。
{expr1} と {expr2} は浮動小数点数 (Float) か数値 (Number)
でなければならない。
{expr1} または {expr2} が Float または Number でない場合は
0.0 を返す。
例:
:echo fmod(12.33, 1.22)
0.13 :echo fmod(-12.33, 1.22)
-0.13method としても使用できる:
Compute()->fmod(1.22)
戻り値の型: Float
fnameescape({string}) fnameescape()
コマンド引数のファイル名として使うために {string} をエスケープ
する。'%' や '|' など特別な意味を持つ全ての文字がバックスラッ
シュでエスケープされる。
特別な文字とは、ほとんどのシステムにおいて
" \t\n*?[{`$\\%#'\"|!<" である。ファイル名にバックスラッシュが
現れるシステムにおいては 'isfname' の値に依存する。
先頭の '+' と '>' もエスケープされる(:edit と :write の引
数では特別な意味を持つ)。{string} が "-" である場合もエスケー
プされる(:cd の引数では意味を持つ)。
エラー時は空文字列を返す。
例:
:let fname = '+some str%nge|name'
:exe "edit " .. fnameescape(fname)
上記は次と同じ結果になる::exe "edit " .. fnameescape(fname)
edit \+some\ str\%nge\|name
method としても使用できる:
GetName()->fnameescape()
戻り値の型: String
fnamemodify({fname}, {mods}) fnamemodify()
ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン
ドラインで使われるのと同様な文字列である。詳細は
filename-modifiersを参照。
例:
:echo fnamemodify("main.c", ":p:h")
結果: /home/user/vim/vim/src/
{mods} が空、またはサポートされていない修飾子が使われた場合は{fname} が返される。
{fname} が空の場合で {mods} が ":h" だと "." を返すので、:cd
を一緒に使うことができる。これは、空の文字列を返すバッファ名な
しの Expand('%:h') とは異なる。
Note: {fname}の中の環境変数は展開されない。環境変数を展開させ
るにはexpand()を使うこと。
method としても使用できる:
GetName()->fnamemodify(':p:h')
戻り値の型: String
foldclosed({lnum}) foldclosed()
結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り
畳みを構成する最初の行の行番号を返す。{lnum}行目が閉じた折り畳
みに入っていないなら-1を返す。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
GetLnum()->foldclosed()
戻り値の型: Number
foldclosedend({lnum}) foldclosedend()
結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り
畳みを構成する最後の行の行番号を返す。{lnum}行目が閉じた折り畳
みに入っていないなら-1を返す。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
GetLnum()->foldclosedend()
戻り値の型: Number
foldlevel({lnum}) foldlevel()
カレントバッファの{lnum}行目の折り畳みレベルを表す数値を返す。
折り畳みがネストしているときは一番下のレベルを返す。{lnum}行目
に折り畳みがまったくないときは0を返す。折り畳みが開いているか
閉じているかは関係ない。('foldexpr' の中で)折り畳みを更新して
いる最中に呼ぶと、まだ折り畳みを更新していなく、折り畳みレベル
が未知の行に対しては-1を返す。特別な場合として、普通は1行前の
レベルは取得できる。
{lnum} は getline() と同様に扱われる。例えば "." は現在の行、
"'m" は m でマークした行、など。
method としても使用できる:
GetLnum()->foldlevel()
戻り値の型: Number
foldtext()
foldtext() 閉じた折り畳みに表示する文字列を返す。これはオプション
'foldtext' のデフォルトの関数であり、'foldtext' を評価している
ときにだけ呼ぶようにすべきである。この関数は変数v:foldstart,
v:foldend, v:folddashesを使用する。
戻り値の文字列は次のようになる:
+-- 45 lines: abcdef
先導するダッシュ(-)の数は折り畳みレベルによって決まる。"45" はその折り畳みに含まれている行数である。"abcdef" はその折り畳み
の中の最初の空行でない行のテキストである。行頭の空白と、"//"
や "/*"、'foldmarker' と'commentstring' に設定されている文字列
は削除される。
実際に折り畳みテキストを表示するときには、行の残りは
'fillchars' で設定した折り畳み用の文字で埋められる。
折り畳みが無い場合は空文字列を返す。
戻り値の型: String
{+folding機能付きでコンパイルされたときのみ利用可能}
foldtextresult({lnum}) foldtextresult()
{lnum}行目の閉じた折り畳みに表示される文字列を返す。'foldtext'
を適切なコンテキストの中で評価する。{lnum}行目に閉じた折り畳み
がないときは空文字列を返す。
{lnum}はgetline()のときと同様に扱われる。つまり "." はカレン
ト行、"'m" はマークmを表す。
折り畳まれたテキストをHTMLなどにエクスポートするときに有用。
{+folding機能付きでコンパイルされたときのみ利用可能}
method としても使用できる:
GetLnum()->foldtextresult()
戻り値の型: String
foreach({expr1}, {expr2}) foreach()
{expr1} は List, String, Blob または Dictionary でなけ
ればならない。
{expr1} の各項目に対して {expr2} を実行する。{expr1} は変更さ
れない。その値は :lockvar 1 と同様に変更されるかもしれない。
E741
{expr1} を変更するには map() および filter() を参照。
{expr2} は string か Funcref でなければならない。
{expr2} が string の場合、{expr2} 内では v:val は現在の項
目の値を持つ。Dictionary の場合、v:key は現在の項目のキー
を持ち、List の場合、v:key は現在の項目のインデックスを持
つ。
Blob の場合、v:key は現在のバイトインデックスを持つ。
String の場合、v:key は現在の文字インデックスを持つ。
例:
call foreach(mylist, 'used[v:val] = true')
これは {expr1} リスト内の項目を記録する。Note {expr2} は式の結果であり、コマンドとして使用されることに
注意。多くの場合、literal-string を使用するのが良い。バック
スラッシュを 2 重にする必要がないようにするためである。
{expr2} が Funcref の場合 2 つの引数を取る必要がある:
1. 現在の項目のキーまたはインデックス。
2. 現在の項目の値。
旧来のスクリプトの lambda では引数を 1 つだけ受け入れてもエラー
は発生しないが、Vim9 の lambda では "E1106: One argument too
many" になり、引数の数は一致する必要がある。
関数が値を返した場合、その値は無視される。
すべてのケースで {expr1} を返す。
{expr2} の実行中にエラーが発生した場合、{expr1} 内の項目はそれ
以上処理されない。
{expr2} が Funcref の場合、"abort" フラグを使用して定義されて
いない限り、関数内のエラーは無視される。
method としても使用できる:
mylist->foreach(expr2)
戻り値の型: String, Blob list<{type}> または dict<{type}>。
{expr1} による
foreground()
foreground() Vimのウィンドウを前面に移動する。この関数はクライアントからVim
サーバーへ送ると便利である。remote_send()
Win32では自分自身のウィンドウを前面に持ってくることが必ずしも
許可されていないので、動作しないかもしれない。そのときは代わり
にremote_foreground()を使うこと。
戻り値の型: Number
{Win32, Motif, GTKいずれかのGUI版とWin32コンソール版でのみ利用
できる}
fullcommand({name} [, {vim9}]) fullcommand()
短縮コマンド名から完全なコマンド名を取得する。コマンドの短縮名
については 20.2 を参照。
文字列引数 {name} は : から始まっても [range] を含んでよい
が、それらはスキップされ戻り値には含まない。
コマンドが存在しない場合、曖昧な場合 (ユーザー定義コマンドの場
合)、またはこの方法で短縮できない場合は空文字列を返す。
vim9-no-shorten
引数 {vim9} がない場合は、現在のスクリプトのバージョンを使用す
る。
{vim9} が存在し、FALSE の場合、旧来のスクリプトルールが使用さ
れる。{vim9} が存在し、TRUE の場合、Vim9 のルールが使用される。
例えば、"en" は "endif" の短縮形ではない。
例えば fullcommand('s')、 fullcommand('sub')、
fullcommand(':%substitute') はすべて "substitute" を返す。
method としても使用できる:
GetName()->fullcommand()
戻り値の型: String
funcref({name} [, {arglist}] [, {dict}]) funcref()
function()と同様である。ただし、返されたFuncrefは、関数を名
前ではなく参照で検索する。これは関数{name}が後で再定義されると
きに重要である。
function()とは違い、{name}はユーザー定義関数として存在してい
なければならない。autoload関数ではすでにロード済みのときだけ機
能する(関数名のみを利用する場合にautoload関数を誤ってロードし
ないようにするには、代わりに function() を使用する)。{name}
は組込み関数であってはならない。
エラー時は 0 を返す。
method としても使用できる:
GetFuncname()->funcref([arg])
戻り値の型: func(...): any または、エラー時は Number
function() partial E700 E923
function({name} [, {arglist}] [, {dict}])
関数{name}を参照するFuncrefの変数を返す。{name}はユーザー定義
関数でも組み込み関数でもよい。
ここで{name}は関数の参照、もしくは部分適用である。部分適用であ
るとき、それに格納されている辞書が使用され、{dict}引数が使用で
きない。例:
let FuncWithArg = function(dict.Func, [arg])
let Broken = function(dict.Func, [arg], dict)
let Broken = function(dict.Func, [arg], dict)
Funcrefが利用されるとき、その関数は{name}から見つけられる。こ
れは後で再定義された場合も同様である。常に同じ関数を見つけるた
めにはfuncref()を使うこと。
{arglist}もしくは{dict}が与えられると、関数の部分適用が作られ
る。すなわち引数のリスト及び/または辞書はFuncrefに格納され、
そのFuncrefが呼ばれるときに使用される。
格納された引数は他の引数よりも前に関数に渡される。しかし、メ
ソッドからの任意の引数の後になる。例えば:
func Callback(arg1, arg2, name)
...
let Partial = function('Callback', ['one', 'two'])
...
call Partial('name')
関数は次のように呼び出す:...
let Partial = function('Callback', ['one', 'two'])
...
call Partial('name')
call Callback('one', 'two', 'name')
method の場合:
func Callback(one, two, three)
...
let Partial = function('Callback', ['two'])
...
eval 'one'->Partial('three')
次のように関数を呼び出す:...
let Partial = function('Callback', ['two'])
...
eval 'one'->Partial('three')
call Callback('one', 'two', 'three')
function()はFuncrefにより多くの引数を加えるためにネストして呼
び出すことができる。余分な引数は、引数のリストに追加される。
例えば:
func Callback(arg1, arg2, name)
"...
let Func = function('Callback', ['one'])
let Func2 = function(Func, ['two'])
"...
call Func2('name')
これは次のように関数を呼び出す:"...
let Func = function('Callback', ['one'])
let Func2 = function(Func, ['two'])
"...
call Func2('name')
call Callback('one', 'two', 'name')
辞書は "dict" 関数を呼び出すときのみ有用である。この場合、
{dict}は "self" として渡される。例えば:
function Callback() dict
echo "called for " .. self.name
endfunction
"...
let context = {"name": "example"}
let Func = function('Callback', context)
"...
call Func() " will echo: called for example
追加の引数がない場合は function() を使用する必要はない。echo "called for " .. self.name
endfunction
"...
let context = {"name": "example"}
let Func = function('Callback', context)
"...
call Func() " will echo: called for example
Callback() が context.Callback() として定義されている場合、以
下の 2 つは同等である:
let Func = function('Callback', context)
let Func = context.Callback
let Func = context.Callback
引数のリストと辞書を同時に使用することもできる:
function Callback(arg1, count) dict
"...
let context = {"name": "example"}
let Func = function('Callback', ['one'], context)
"...
call Func(500)
これは次のように関数を呼び出す:"...
let context = {"name": "example"}
let Func = function('Callback', ['one'], context)
"...
call Func(500)
call context.Callback('one', 500)
エラー時は 0 を返す。
method としても使用できる:
GetFuncname()->function([arg])
戻り値の型: func(...): any または、エラー時は Number
garbagecollect([{atexit}]) garbagecollect()
循環参照を持ち、使われていないリストList、辞書
Dictionaries、チャネルChannels、ジョブJobs をクリーン
アップする。
これはメモリ不足に陥ったときや、'updatetime' 経過後ユーザーの
キー入力を待っているときに自動的に行われるので、この関数を呼ぶ
必要があることはほとんどない。循環参照を持たない要素は、使われ
なくなったとき必ず解放される。長時間実行されるスクリプトの中で
循環参照を持つ非常に大きなリストや辞書を削除したときに有用であ
る。
省略可能な引数 {atexit} に 1 を指定すると、Vim を終了するとき
にもガベージコレクションが行われる。これはメモリリークを発見す
るのに役に立つ。
ガベージコレクションはすぐには実行されず、安全な場合のみ実行さ
れる。これはユーザーが文字を入力するのを待っているときである。
ガベージコレクションを強制するには、すぐに
test_garbagecollect_now() を使用すること。
戻り値の型: String
get({list}, {idx} [, {default}]) get() get()-list
リストList {list}から{idx}番目の要素を取得する。この要素を取
得できないときは{default}を返す。{default}が省略されたときは0
を返す。
method として使用したいなら:
mylist->get(idx)
戻り値の型: any。{list} による
get({blob}, {idx} [, {default}]) get()-blob
Blob {blob}から{idx}番目のバイトを取得する。このバイトを取得
できないときは{default}を返す。{default}が省略されたときは -1
を返す。
method として使用したいなら:
myblob->get(idx)
戻り値の型: Number
get({dict}, {key} [, {default}]) get()-dict
辞書Dictionary {dict}からキー{key}に関連づけられた値を取得す
る。この要素を取得できないときは{default}を返す。{default}が省
略されたときは0を返す。便利な例:
let val = get(g:, 'var_name', 'default')
g:var_nameの値が存在する場合はこれを取得し使用するが、存在しない場合は 'default' を返す。
method として使用したいなら:
mydict->get(key)
戻り値の型: any。{dict} による
get({func}, {what}) get()-func
Funcref {func} から項目 {what} を取得する。{what} の可能な値
は:
"name" 関数名
"func" 関数
"dict" 辞書
"args" 引数リスト
"arity" 関数が受け入れる引数の数({arglist} を除く)に関す
る情報を含む辞書。次のフィールドが含まれる:
required 位置引数の数
optional 必須引数に加え、オプション引数の
数
varargs 関数が可変数の引数 ... を受け入
れる場合、TRUE
Note: Funcref の {arglist} に Funcref が期待す
る以上の引数が含まれている場合、検証はされず、
エラーは発生しない。
エラー時はゼロを返す。
method として使用したいなら:
myfunc->get(what)
戻り値の型: any。{func} および {what} による
getbufinfo()
getbufinfo([{buf}])
getbufinfo([{dict}])
バッファの情報を辞書のリストとして取得する。
引数なしの場合、すべてのバッファに関する情報が返される。
引数が辞書 Dictionary の場合、指定された条件を満たすバッファ
のみが返される。{dict}には以下のキーを指定できる:
buflisted リストされたバッファのみを含む。
bufloaded ロードされたバッファのみを含む。
bufmodified 修正されたバッファのみを含む。
それ以外の場合、{buf}は情報を返す特定のバッファを指定する。
{buf}の使用については、上記のbufname()を参照。バッファが見つ
かった場合、返されるListには1つの項目がある。それ以外の場合、
結果は空のリストになる。
返される各List項目は、次のエントリを持つ辞書である:
bufnr バッファ番号。
changed バッファが変更されている場合はTRUE。
changedtick バッファに加えられた変更の数。
command バッファがコマンドラインウィンドウ
cmdwin に属する場合は TRUE。
hidden バッファが隠されている場合はTRUE。
lastused バッファが最後に使用されたときの
localtime() のような秒単位のタイムス
タンプ。
{+viminfo 機能付きでコンパイルされた
ときのみ有効}
listed バッファがリストされている場合はTRUE。
lnum バッファがカレントウィンドウに表示され
ていたときの現在行の行番号。
過去にバッファがカレントウィンドウに表
示されていた場合にのみ有効である。特定
のウィンドウの最後のカーソル位置の行番
号が必要な場合は line() を使うこと:
:echo line('.', {winid}))
linecount バッファ内の行数 (ロードされているとき
のみ有効)
loaded バッファがロードされている場合はTRUE。
name バッファ内のファイルへのフルパス。
signs バッファに設置された目印のリスト。
各リスト項目は、次のフィールドを含む辞
書である:
id 目印ID
lnum 行番号
name 目印名
variables バッファローカル変数の辞書への参照。
windows バッファを表示するwindow-IDのリスト
popups バッファを表示するpopupwindow-idのリ
スト
例:
for buf in getbufinfo()
echo buf.name
endfor
for buf in getbufinfo({'buflisted':1})
if buf.changed
....
endif
endfor
echo buf.name
endfor
for buf in getbufinfo({'buflisted':1})
if buf.changed
....
endif
endfor
バッファローカルオプションを取得するには:
getbufvar({bufnr}, '&option_name')
method としても使用できる:
GetBufnr()->getbufinfo()
戻り値の型: list<dict<any>>
getbufline()
getbufline({buf}, {lnum} [, {end}])
バッファ{buf}の{lnum}行目から{end}行目まで(両端含む)の行からな
るリストListを返す。{end}が省略されたときは{lnum}行目だけか
らなるリストを返す。1 行のみの取得については getbufoneline()
を参照。
{buf}の指定の仕方についてはbufname()を参照。
{lnum}と{end}では "$" でバッファの最後の行を表すことができる。
それ以外は数値でなければならない。
{lnum}が1より小さいときや、バッファの行数より大きいときは空リ
ストを返す。
{end}がバッファの行数より大きいときは、バッファの行数が設定さ
れたものとして扱う。{end}が{lnum}行目より前に設定された場合は
空リストを返す。
この関数は読み込まれているバッファに対してのみ動作する。既にア
ンロードされているバッファや存在しないバッファに対しては空リス
トを返す。
例:
:let lines = getbufline(bufnr("myfile"), 1, "$")
method としても使用できる:
GetBufnr()->getbufline(lnum)
戻り値の型: list<string>
getbufoneline()
getbufoneline({buf}, {lnum})
getbufline() と似ているが、1 行だけを取得して文字列として返
す。
戻り値の型: String
getbufvar({buf}, {varname} [, {def}]) getbufvar()
バッファ{buf}のオプションの値やバッファローカル変数{varname}
の値を返す。Note "b:" をつけない変数名を指定すること。
{varname} が空文字列の場合、全てのバッファローカル変数からなる
辞書 Dictionary を返す。
{varname} が "&" に等しいとき、すべてのバッファローカルオプショ
ンを持つ辞書 Dictionary を返す。
そうでなく、{varname} が "&" で始まるとき、バッファローカルオ
プションの値を返す。
グローバルオプション、バッファローカルオプションのどちらに対し
ても動作するが、グローバル変数、ウィンドウローカル変数、ウィン
ドウローカルオプションに対しては動作しない。
{buf}の指定の仕方についてはbufname()を参照。
バッファや変数が存在しないときは{def}または空文字列を返し、エ
ラーメッセージは表示されない。
例:
:let bufmodified = getbufvar(1, "&mod")
:echo "todo myvar = " .. getbufvar("todo", "myvar")
:echo "todo myvar = " .. getbufvar("todo", "myvar")
method としても使用できる:
GetBufnr()->getbufvar(varname)
戻り値の型: any。{varname} による
getcellpixels() getcellpixels()
端末のセルのピクセルサイズの List を返す。
リストの形式は [xpixel, ypixel] である。
Unix (端末と gVim) および Windows (gVim のみ) でのみ動作する。
他のシステムまたは失敗した場合は [] を返す。
Note 端末によって異なる場合があることに注意。macOS では、シス
テムの Terminal.app はポイント単位でサイズを返す (Retina スケー
リング前)。一方、サードパーティの端末は生のピクセルサイズを返
す (Retina スケーリング後)。
戻り値の型: list<any>
getcellwidths() getcellwidths()
setcellwidths() によって上書きされた文字範囲のセル幅の
List を返す。形式は setcellwidths() の引数と同じである。セ
ル幅が上書きされた文字範囲がない場合、空のリストが返される。
戻り値の型: list<any>
getchangelist([{buf}]) getchangelist()
バッファ {buf} の changelist を返す。{buf} の使い方は前述の
bufname() を参照。バッファ {buf} が存在しない場合、空のリス
トが返される。
返されるリストは 2 つのエントリを含む: 変更位置のリストと、リ
スト内の現在地。変更リスト内のそれぞれの項目は、以下の項目を含
む辞書になっている:
col 列番号
coladd 'virtualedit' 用の列のオフセット
lnum 行番号
バッファ {buf} がカレントバッファの場合、現在地はリスト内の位
置を指す。それ以外のバッファではリストの長さに設定される。
method としても使用できる:
GetBufnr()->getchangelist()
戻り値の型: list<any>
getchar([{expr}]) getchar()
ユーザーまたは入力ストリームから1文字を取得する。
{expr} が省略された場合、1文字を取得できるまで待つ。
{expr} が0の場合、1文字を取得できる時だけ取得する。取得できな
い時は0を返す。
{expr} が1の場合は、1文字を取得できるかを判定するだけである。
入力は消費されない。取得できないと判定された時は0を返
す。
常に文字列として取得したい場合は getcharstr() を使用する。
{expr} が省略されたときや {expr} が0のときは、文字全体または特
殊キーを返す。それが1文字なら戻り値は数値である。これを文字列
に戻すには nr2char() を使う。それ以外の場合にはエンコードし
て文字列にして返す。
特殊キーとは0x80(10進数で128)で始まるバイト列からなる文字列で
ある。これは文字列 "\<Key>" と同じ値である(例: "\<Left>")。戻
り値は文字列であり、修飾キー(shift, control, alt)は含まれない。
{expr} が0や Esc が入力された場合は、これがエスケープシーケン
スの始まりであるかどうかをVimが知るために待つ間、短い遅延があ
るだろう。
{expr} が1のときは最初のバイトだけを返す。1バイト文字の場合、
これはその文字そのものを表す数値である。これを文字列に変換する
にはnr2char()を使う。
修飾キーを取得するには getcharmod() を使う。
ユーザーがマウスをクリックしたときはマウスイベントを返す。クリッ
クした位置はv:mouse_col, v:mouse_lnum, v:mouse_winid,
v:mouse_winで得られる。getmousepos() も使える。マウスの移
動イベントは無視される。
以下の例は、普通にマウスがクリックされたときと同じようにカーソ
ルを移動させる。
let c = getchar()
if c == "\<LeftMouse>" && v:mouse_win > 0
exe v:mouse_win .. "wincmd w"
exe v:mouse_lnum
exe "normal " .. v:mouse_col .. "|"
endif
if c == "\<LeftMouse>" && v:mouse_win > 0
exe v:mouse_win .. "wincmd w"
exe v:mouse_lnum
exe "normal " .. v:mouse_col .. "|"
endif
bracketed pasteを使用しているときは最初の文字のみが返され、ペー
ストされた残りのテキストは切り捨てられる。
xterm-bracketed-paste.
この関数を呼んだときプロンプトは表示されない。文字入力を待って
いることをなんらかの方法でユーザーがわかるようにしなければなら
ないだろう。画面は再描画されない、例えばウィンドウのリサイズ。
ポップアップウィンドウを使っているなら popup-filter を使うと
よりよく動作する。
入力された文字に対してマッピングは適用されない。
キーコードは置換される。つまりユーザーが<Del>を押した場合、
「生の」文字シーケンスでなく<Del>キーに対応するコードが得られ
る。
例:
getchar() == "\<Del>"
getchar() == "\<S-Left>"
以下の例は大文字・小文字を区別しないように "f" を再定義する: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
:function FindChar()
: let c = nr2char(getchar())
: while col('.') < col('$') - 1
: normal l
: if getline('.')[col('.') - 1] ==? c
: break
: endif
: endwhile
:endfunction
あなたは<CursorHold>のような合成文字も取得するかもしれない。
多くの場合、あなたはこれを無視して別の文字を取得することにな
る:
:function GetKey()
: let c = getchar()
: while c == "\<CursorHold>"
: let c = getchar()
: endwhile
: return c
:endfunction
: let c = getchar()
: while c == "\<CursorHold>"
: let c = getchar()
: endwhile
: return c
:endfunction
戻り値の型: Number または String
getcharmod() getcharmod()
最後にgetchar()などで得た文字に対する修飾キーの状態を表す数値
を返す。以下の値の和となる:
2 shift
4 control
8 alt (meta)
16 meta (ALT と META が区別される場合)
32 マウスのダブルクリック
64 マウスのトリプルクリック
96 マウスのクアドラプルクリック (== 32 + 64)
128 command (Mac) または super (GTK)
文字自身に含まれていない修飾キーのみ取得できる。つまり、
Shift-aは修飾キーなしの "A" となる。修飾なしの場合は 0 を返す。
戻り値の型: Number
getcharpos({expr}) getcharpos()
文字列 {expr} の位置を得る。getpos() と同様だが返すリスト内
の桁番号はバイトインデックスの代わりに文字インデックスになって
いる。
getpos() が v:maxcol と等しい非常に大きな桁番号を返す場合、
getcharpos() は最後の文字の文字インデックスを返す。
例:
5行目のテキスト "여보세요" の '세' にカーソルがある状態:
getcharpos('.') returns [0, 5, 3, 0]
getpos('.') returns [0, 5, 7, 0]
getpos('.') returns [0, 5, 7, 0]
method としても使用できる:
GetMark()->getcharpos()
戻り値の型: list<number>
getcharsearch() getcharsearch()
現在の文字検索の情報である{dict}を返し、この辞書は下記のエント
リを持つ:
char 文字検索(t, f, T, F)で以前に使われた文
字。
もし文字検索が実行されていないなら空文字列。
forward 文字検索の方向。1は前方、0は後方。
until 文字検索の種類。1はtもしくはTの文字検索、0は
fもしくはFの文字検索。
下記の設定は前回の文字検索の方向にかかわらず、; で前方検索、
, で後方検索を常に行えるようになり便利である:
:nnoremap <expr> ; getcharsearch().forward ? ';' : ','
:nnoremap <expr> , getcharsearch().forward ? ',' : ';'
setcharsearch()も参照。:nnoremap <expr> , getcharsearch().forward ? ',' : ';'
戻り値の型: dict<any>
getcharstr([{expr}]) getcharstr()
ユーザーまたは入力ストリームから1文字を文字列として取得する。
{expr} が省略された場合、1文字を取得できるまで待つ。
{expr} が0もしくは偽の場合、1文字を取得できる時だけ取得する。
取得できない時は空文字列を返す。
{expr} が1もしくは真の場合は、1文字を取得できるかを判定するだ
けである。入力は消費されない。取得できないと判定された
時は空文字列を返す。
結果の数値が文字列に変換される以外は getchar() と同様に動作
する。
戻り値の型: String
getcmdcomplpat() getcmdcomplpat()
現在のコマンドラインの補完パターンを返す。
コマンドラインが編集されている場合にのみ機能するため、
c_CTRL-\_e または c_CTRL-R_= を使用する必要がある。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), getcmdcompltype() および setcmdline() も
参照。
補完が定義されていない場合は空の文字列を返す。
戻り値の型: String
getcmdcompltype() getcmdcompltype()
現在のコマンドライン補完のタイプを返す。
コマンドラインが編集時にのみ動作するので、c_CTRL-e または
c_CTRL-R_= を使用する必要がある。
返す文字列については :command-completion を参照のこと。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), getcmdcomplpat() および setcmdline() も
参照。
補完が定義されていない場合は空文字列を返す。
戻り値の型: String
getcmdline() getcmdline()
現在のコマンドライン入力の内容を取得する。コマンドラインを編集
しているときのみ動作する。つまり c_CTRL-\_e または
c_CTRL-R_= を使っているときのみ有効。
例:
:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
getcmdtype(), getcmdpos(), setcmdpos(), getcmdprompt()および setcmdline() も参照。
パスワードを入力する時や inputsecret() を使う時は空文字列を
返す。
戻り値の型: String
getcmdpos() getcmdpos()
コマンドラインにおけるカーソル位置をバイト単位で取得する。最初
の桁は1となる。コマンドラインを編集しているときのみ動作する。
つまりc_CTRL-\_eまたはc_CTRL-R_=または式マッピングを使って
いるときのみ有効。そうでないときは 0 を返す。
getcmdtype(), setcmdpos(), getcmdline(),
getcmdprompt(), setcmdline() も参照。
戻り値の型: Number
getcmdprompt() getcmdprompt()
input() や confirm() の関数を使用時に、現在のコマンドライ
ンプロンプトを取得する。
コマンドラインが編集されている場合にのみ動作するため、
c_CTRL-\_e または c_CTRL-R_= を使用する必要がある。
getcmdtype(), getcmdline(), getcmdpos(), setcmdpos(),
および setcmdline() も参照。
戻り値の型: String
getcmdscreenpos() getcmdscreenpos()
コマンドラインのカーソルのスクリーン位置をバイト単位で返す。最
初の桁は 1 である。
getcmdpos() の代わりにプロンプトの位置を加える。
コマンドラインの編集時のみ動作するため、c_CTRL-e または
c_CTRL-R_= または式マッピングを使用する必要がある。それ以外
は 0 を返す。
getcmdpos(), setcmdpos(), getcmdline(), setcmdline()
も参照。
戻り値の型: Number
getcmdtype() getcmdtype()
現在のコマンドラインの種類を返す。戻り値は次のいずれか:
: 通常のexコマンド
> デバッグモードコマンド debug-mode
/ 前方検索コマンド
? 後方検索コマンド
@ input() コマンド
- :insert または :append コマンド
= i_CTRL-R_=
コマンドラインを編集しているときのみ動作する。つまり
c_CTRL-\_eまたはc_CTRL-R_=または式マッピングを使っていると
きのみ有効。そうでないときは空文字列を返す。
getcmdpos(), setcmdpos(), getcmdline()も参照。
戻り値の型: String
getcmdwintype() getcmdwintype()
現在のコマンドラインウィンドウ (command-line-window) の種類
を返す。戻り値の意味は getcmdtype() と同じ。コマンドライン
ウィンドウでなければ空文字列を返す。
戻り値の型: String
getcompletion({pat}, {type} [, {filtered}]) getcompletion()
コマンドライン補完のマッチするリストを返す。文字列 {type}は何
のためのものかを指定する。次の補完タイプがサポートされている:
arglist 引数リスト内のファイル名
augroup 自動コマンドグループ
buffer バッファ名
behave :behave サブオプション
breakpoint :breakadd および :breakdel サブオプション
color カラースキーム
command Exコマンド
cmdline cmdline-completion の結果
compiler コンパイラ
cscope :cscopeのサブオプション
custom,{func} {func} で定義されたカスタム補完
customlist,{func} {func} で定義されたカスタム補完
diff_buffer :diffget と :diffput の補完
dir ディレクトリ名
dir_in_path 'cdpath' 内のディレクトリ名
environment 環境変数名
event 自動コマンドのイベント
expression Vim式
file ファイルおよびディレクトリ名
file_in_path 'path'のファイルおよびディレクトリ名
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 ユーザー変数
{pat}が空文字列の場合、すべてのマッチが返される。それ以外の場
合、{pat}と一致する項目のみが返される。{pat}での特殊文字の使用
については、wildcardsを参照。
オプションの{filtered}フラグが1に設定されている場合、結果をフィ
ルタリングするために 'wildignore'が適用される。そうでなければ、
すべての一致が返される。'wildignorecase'オプションは常に適用さ
れる。
'wildoptions' オプションが 'fuzzy' を含む場合、補完のマッチ取
得にファジーマッチが使われる。そうでない場合は正規表現マッチが
使われる。その結果この関数はコマンドラインで何が起こるかという
ユーザー設定に従う。これを望まない場合、getcompletion() が呼ば
れる前に 'wildoptions' を空にしてその後元に戻すようにする。
{type}が "cmdline" ならば cmdline-completion の結果が返され
る。
例えば、":call" コマンドの後で補完できる値は:
echo getcompletion('call ', 'cmdline')
一致するものがなければ、空のリストが返される。{type}の値が無効
だと、エラーが発生する。
method としても使用できる:
GetPattern()->getcompletion('color')
戻り値の型: list<string>
getcurpos()
getcurpos([{winid}])
カーソルの位置を返す。これは getpos('.') に似ているが、追加の
"curswant" 情報を含む:
[0, lnum, col, off, curswant]
"curswant" は縦方向移動の優先的列番号である。$ コマンド後は
非常に巨大な値として v:maxcol と同値を返す。
getcursorcharpos() と getpos() も参照。
最初の "bufnum" は常に0である。カーソルのバイトでの位置は
'col' に返される。文字の位置を得るには getcursorcharpos() を
使う。
オプションの {winid} 引数はウィンドウを指定する。これはウィン
ドウ番号か window-ID である。最後のカーソル位置を返すが、こ
れはバッファがカレントウィンドウでない場合、現在の値は無効にな
りうる。
{winid} が無効の場合、値がゼロのリストを返す。
次のようにしてカーソル位置の保存と復元ができる:
let save_cursor = getcurpos()
MoveTheCursorAround
call setpos('.', save_cursor)
Note: これはウィンドウ内でのみ機能する。より多くの状態を復元すMoveTheCursorAround
call setpos('.', save_cursor)
る方法については winrestview() を参照。
method としても使用できる:
GetWinid()->getcurpos()
戻り値の型: list<number>
getcursorcharpos([{winid}]) getcursorcharpos()
getcurpos() と同様だが返すリスト内の桁番号はバイトインデック
スの代わりに文字インデックスになっている。
Example:
3行目のテキスト "여보세요" の '보' にカーソルがある状態:
getcursorcharpos() returns [0, 3, 2, 0, 3]
getcurpos() returns [0, 3, 4, 0, 3]
getcurpos() returns [0, 3, 4, 0, 3]
method としても使用できる:
GetWinid()->getcursorcharpos()
戻り値の型: list<number>
getcwd([{winnr} [, {tabnr}]]) getcwd()
結果は現在の作業ディレクトリ名の文字列である。'autochdir' は無
視される。
{winnr} が指定された場合、現在のタブページ内の {winnr} のウィ
ンドウのローカルカレントディレクトリを返す。{winnr} にはウィン
ドウ番号またはwindow-IDが使える。
{winnr} が -1 の場合、グローバル作業ディレクトリ名を返す。
haslocaldir() も参照。
{winnr}と{tabnr}が指定された場合、{tabnr}のタブページ内の
{winnr}のウィンドウのローカルカレントディレクトリを返す。
{winnr}が -1 の場合、タブページの作業ディレクトリを返す。
{winnr}が 0 の場合、カレントウィンドウを使用し、{tabnr}が 0 の
場合はカレントタブページを使用する。
引数なしの場合は、カレントウィンドウの実際の作業ディレクトリを
返す。
もし引数が不正の場合、空文字列を返す。
例:
" カレントウィンドウの作業ディレクトリを取得
:echo getcwd()
:echo getcwd(0)
:echo getcwd(0, 0)
" タブページ2のウィンドウ3の作業ディレクトリを取得
:echo getcwd(3, 2)
" グローバル作業ディレクトリを取得
:echo getcwd(-1)
" タブページ3の作業ディレクトリを取得
:echo getcwd(-1, 3)
" カレントタブページの作業ディレクトリを取得
:echo getcwd(-1, 0)
:echo getcwd()
:echo getcwd(0)
:echo getcwd(0, 0)
" タブページ2のウィンドウ3の作業ディレクトリを取得
:echo getcwd(3, 2)
" グローバル作業ディレクトリを取得
:echo getcwd(-1)
" タブページ3の作業ディレクトリを取得
:echo getcwd(-1, 3)
" カレントタブページの作業ディレクトリを取得
:echo getcwd(-1, 0)
method としても使用できる:
GetWinnr()->getcwd()
戻り値の型: String
getenv({name}) getenv()
環境変数{name}の値を返す。引数 {name} は先行する '$' のない文
字列。例:
myHome = getenv('HOME')
変数が存在しない場合は v:null が返される。これは、空の文字列
に設定された変数とは異なるが、一部のシステムは空の値を削除され
る変数として解釈する。expr-env も参照。
method としても使用できる:
GetVarname()->getenv()
戻り値の型: String または Number
getfontname([{name}]) getfontname()
引数なしで使われた場合には現在の通常のフォント名を返す。ハイラ
イトグループNormalに対して使われるものと同様hl-Normal。
引数が指定された場合には文字列{name}が有効なフォント名であるか
判定される。有効でないときは空文字列を返す。
有効なときは実際のフォント名を返す。またはGUIが実際の名前の取
得をサポートしていないときは{name}をそのまま返す。
GUIモードで実行しているときのみ動作する。よってvimrcやgvimrcの
中では使えない。GUIモードが起動した直後にこの関数を呼ぶには、
自動コマンドGUIEnterを使うこと。
Note GTKのGUIはどんなフォント名でも受け付けてしまうため、名前
が有効であるかのチェックは機能しない。
戻り値の型: String
getfperm({fname}) getfperm()
{fname}で指定されたファイルの読み込み、書き込み、実行の許可属
性を示す文字列を返す。
{fname}が存在しない、またはそのディレクトリが読み込み不可能な
ときは空文字列を返す。
戻り値は "rwxrwxrwx" の形で、"rwx" フラグの各グループは順にファ
イルの所有者、ファイルが所属するグループ、その他のユーザーを表
す。許可属性が与えられていないフラグは "-" で置き換えられる。
例:
:echo getfperm("/etc/passwd")
:echo getfperm(expand("~/.vimrc"))
この例は、(セキュリティの観点から望ましい設定がされているなら:echo getfperm(expand("~/.vimrc"))
ば) "rw-r--r--" あるいは "rw-------" と表示する。
method としても使用できる:
GetFilename()->getfperm()
戻り値の型: String
許可属性を設定するにはsetfperm()を使用する。
getfsize({fname}) getfsize()
結果は数値で、{fname}で指定されるファイルのサイズをバイト単位
で返す。
{fname}がディレクトリのときは0を返す。
ファイル{fname}が見つからないときは-1を返す。
{fname} のサイズが Number の範囲外の場合は -2 を返す。
method としても使用できる:
GetFilename()->getfsize()
戻り値の型: Number
getftime({fname}) getftime()
結果は{fname}で与えられたファイルの、最終更新時間を示す数値。
1970年1月1日からの経過時間(秒)で、strftime()に渡すことができる
だろう。localtime()とstrftime()も参照。
ファイル{fname}が見つからなかった場合には-1を返す。
method としても使用できる:
GetFilename()->getftime()
戻り値の型: Number
getftype({fname}) getftype()
{fname}で指定されたファイルの種別を示す文字列を返す。
{fname}が存在しないときは空文字列を返す。
ファイルの種別とそれらの結果の表を以下に示す:
通常ファイル "file"
ディレクトリ "dir"
シンボリックリンク "link"
ブロックデバイス "bdev"
キャラクタデバイス "cdev"
ソケット "socket"
FIFO "fifo"
それ以外 "other"
例:
getftype("/home")
Note "link" などの種別はそれをサポートしているシステムでのみ返される。"dir" と "file" しか返らないシステムもある。
MS-Windowsでは、ディレクトリへのシンボリックリンクは "link" の
代わりに "dir" を返す。
method としても使用できる:
GetFilename()->getftype()
戻り値の型: String
getimstatus() getimstatus()
結果は数値で、IMEステータスがアクティブの場合は TRUE で、そ
れ以外の場合は FALSE である。
'imstatusfunc' を参照。
戻り値の型: Number
getjumplist([{winnr} [, {tabnr}]]) getjumplist()
指定されたウィンドウの jumplist を返す。
引数なしの場合、カレントウィンドウを使用する。
{winnr} のみの場合、現在のタブページのこのウィンドウを使用す
る。{winnr} には window-ID も使用できる。
{winnr} と {tabnr} 両方の場合、指定されたタブページのウィンド
ウを使用する。{winnr} または {tabnr} が無効な場合、空のリスト
が返される。
返されるリストは 2 つのエントリを含む: ジャンプ位置のリストと、
リスト内の最後に使われたジャンプ位置番号。ジャンプ位置リスト内
のそれぞれの項目は、以下の項目を含む辞書になっている:
bufnr バッファ番号
col 列番号
coladd 'virtualedit' 用の列のオフセット
filename 利用可能ならばファイル名
lnum 行番号
method としても使用できる:
GetWinnr()->getjumplist()
戻り値の型: list<any>
getline()
getline({lnum} [, {end}])
{end}が指定されない場合は、カレントバッファの{lnum}行目の内容
を文字列にして返す。例:
getline(1)
{lnum}が数字ではない文字で始まる文字列であった場合、line()によってその文字列が数字に変換される。よって、カーソルのある行の
文字列を取得するには:
getline(".")
{lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空文字列が返される。
{end}が指定された場合は、カレントバッファの{lnum}行目から
{end}行目までを要素とするリストListを返す。
{end}は{lnum}と同様に解釈される。
存在しない行は省略され、エラーメッセージは表示されない。
{end}が{lnum}より前になる場合は空リストを返す。
例:
:let start = line('.')
:let end = search("^$") - 1
:let lines = getline(start, end)
:let end = search("^$") - 1
:let lines = getline(start, end)
method としても使用できる:
ComputeLnum()->getline()
戻り値の型: list<string> または String。{end} による
他のバッファの行を取得するには getbufline() および
getbufoneline() を参照。
getloclist({nr} [, {what}]) getloclist()
ウィンドウ{nr}のlocationリストの全項目からなるリスト List を
返す。{nr} にはウィンドウ番号または window-ID が使える。{nr}
に0を指定するとカレントウィンドウになる。
locationリストウィンドウに対して使用すると、そこに表示されてい
るlocationリストが返る。ウィンドウ番号{nr}が無効な場合は、空リ
ストが返る。それ以外は getqflist() と同じ。
オプションの{what}辞書引数が指定されている場合、{what}にリスト
されている項目を辞書として返す。{what}のサポートされている項目
については、getqflist()を参照。
getqflist() の{what}でサポートされている項目に加え、
getloclist() では次の項目もサポートされている:
filewinid ロケーションリストからファイルを表示す
るのに使われているウィンドウのID。この
フィールドはロケーションリストウィンド
ウから呼び出されたときのみ適用される。
詳細は location-list-file-window を
参照。
ウィンドウ {nr} にlocationリストがないなら、デフォルト値の辞書
Dictionary を返す。
ウィンドウが存在しない場合、空の辞書を返す。
例 (getqflist-examples もまた参照):
:echo getloclist(3, {'all': 0})
:echo getloclist(5, {'filewinid': 0})
:echo getloclist(5, {'filewinid': 0})
戻り値の型: list<dict<any>> または list<any>
getmarklist([{buf}]) getmarklist()
{buf} 引数が無い場合は全グローバルマークについての情報のリスト
を返す。mark
オプショナル引数 {buf} が指定されている場合、{buf} で指定され
たバッファのローカルマークの値を返す。{buf} の使い方は
bufname() を参照。{buf} が無効な場合、空のリストが返される。
戻り値のリストの各要素は以下の内容の辞書Dictになっている:
mark 接頭辞 "'" が付いたマークの名前
pos マークの位置のリストList:
[bufnum, lnum, col, off]
詳細は getpos() を参照。
file ファイル名
特定のマークについて取得した情報の詳細は getpos() を参照。
method としても使用できる:
GetBufnr()->getmarklist()
戻り値の型: list<dict<any>> または list<any>
getmatches([{win}]) getmatches()
matchadd() と :match によりカレントウィンドウに定義された
全てのマッチの List を返す。setmatches() は getmatches()
で保存されたマッチのリストを復元できるので、getmatches() と
setmatches() は組み合わせて使うと便利である。
{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 clearmatches()
:echo getmatches()
:call setmatches(m)
:echo getmatches()
[{'group': 'MyGroup1', 'pattern': 'TODO',:echo getmatches()
'priority': 10, 'id': 1}, {'group': 'MyGroup2',
'pattern': 'FIXME', 'priority': 10, 'id': 2}]
:unlet m
戻り値の型: list<dict<any>> または list<any>
getmousepos() getmousepos()
マウスの最新の位置を示す辞書 Dictionary を返す。マウスクリッ
クのマッピングやポップアップウィンドウのフィルターで使うことが
できる。辞書の要素は:
screenrow 画面行
screencol 画面桁
winid クリックされたウィンドウ ID
winrow "winid" 内の行
wincol "winid" 内の桁
line "winid" 内のテキスト行
column "winid" 内のテキスト桁
coladd クリックされた文字の先頭からのオフセッ
ト (スクリーン桁)。
全ての数値は 1 ベースである。
ウィンドウの上ではない場合、例えばコマンドラインの中などでは
"screenrow" と "screencol" のみが有効で、残りは 0 になる。
ウィンドウの下のステータスラインやウィンドウの右の垂直セパレー
ターの場合、"line" と "column" は 0 になる。
位置がテキストより後の場合、"column" はテキストのバイト長+1に
なる。
マウスがポップアップウィンドウの上の場合、そのウィンドウが使わ
れる。
getchar() を使ったとき、Vim 変数 v:mouse_lnum,
v:mouse_col と v:mouse_winid もこれらの値を提供する。
戻り値の型: dict<number>
getmouseshape() getmouseshape()
現在表示されているマウスポインタの名前を返す。 +mouseshape
機能がサポートされていないか、形状が不明な場合は空文字列が返さ
れる。
この機能は主にテストを目的としている。
戻り値の型: String
getpid() getpid()
Vim のプロセス ID を数値で返す。Unix と MS-Windows では Vim が
終了するまでこれは一意な数値である。
戻り値の型: Number
getpos({expr}) getpos()
文字列{expr}の位置を返す。
{expr} に受け入れられる値は以下: E1209
. カーソルの位置。
$ カレントバッファの最終行。
'x マーク x の位置 (マークが設定されていない場合は、
すべての値に対して 0 が返される)。
w0 カレントウィンドウに表示される最初の行 (サイレント
Ex モード等、表示が更新されない場合は 1)。
w$ カレントウィンドウに表示されている最後の行 (行が表
示されていない場合は、"w0" より 1 少ない値)。
v ビジュアルモード以外の場合は、カーソルの位置を返
す。ビジュアルモードでは、ビジュアル領域のもう一方
の端を返す。これについて考える良い方法は、ビジュア
ルモードでは "v"と "." が互いに補完し合うというこ
とである。"." はカーソルの位置を参照するが、"v" は
v_o がカーソルを移動する場所を参照する。結果とし
て、"v" と "." を一緒に使用して、文字単位のビジュ
アルモードで選択範囲全体を操作できる。カーソルが文
字単位のビジュアル領域の末尾にある場合、"v" は同じ
ビジュアル領域の先頭を参照する。また、カーソルが文
字単位のビジュアル領域の先頭にある場合、"v" は同じ
ビジュアル領域の末尾を参照する。"v" は、すぐに更新
されるという点で、'< および '> とは異なる。
Note 別のファイルのマークも使用できることに注意。その場合、行
番号は別のバッファに適用される。
結果は次の4個の要素を持つリストList:
[bufnum, lnum, col, off]
"bufnum" は、'0 や 'A のようなマークが指定されたときは、その
マークのバッファ番号となる。それ以外では0となる。
"lnum" と "col" はバッファ中の位置。桁番号は1から始まる。
"off" の値は、'virtualedit' がオフのときは常に0で、オンのとき
はその文字の始点からの画面上の桁のオフセットである。つまり、
カーソルが<Tab>の中や、その行の最後の文字より後にあるとき意味
を持つ。
カーソル位置を取得するには、getcurpos() を参照。
桁番号は行内のバイト位置のリストとして返される。行内の文字での
位置を取得するなら、getcharpos() を使う。
Note: ビジュアルモードの '< と '> について: ビジュアルモードが
"V" (行選択モード) のとき、'< の桁番号はゼロ、'> の桁番号は大
きな値として v:maxcol と同値になる。
桁番号は v:maxcol と同値の非常に大きな値になり得る。これは
"行末の後" を意味する。
{expr} が無効な場合、すべてがゼロのリストが返される。
この関数はマークの位置を保存し、復元するために使われる:
let save_a_mark = getpos("'a")
...
call setpos("'a", save_a_mark)
...
call setpos("'a", save_a_mark)
getcharpos() と getcurpos() そして setpos() も参照。
method としても使用できる:
GetMark()->getpos()
戻り値の型: list<number>
getqflist([{what}]) getqflist()
現在の全quickfixエラーのリスト List を返す。リストの各要素は
辞書で、以下の要素を持つ:
bufnr ファイル名を持つバッファの番号。その名前を取得
するにはbufname()を使う。
module モジュール名
lnum バッファ中の行番号(最初の行は1)
end_lnum
項目が複数行のときの最後の行番号
col 桁番号(最初の桁は1)
end_col 項目が範囲を持つときの最後の桁番号
vcol TRUE: "col" は画面上の桁
FALSE: "col" はバイトインデックス
nr エラー番号
pattern エラーの位置を特定するために使う検索パターン
text エラーの説明
type エラーメッセージの種類。'E', '1' など。
valid TRUE: エラーメッセージが認識されている
user_data
項目に関連付けられたカスタムデータは、任意の型
にすることができる。
エラーリストがまったくないか、空であるときは空リストを返す。
quickfixリストの項目が存在しないバッファ番号とともに返る場合は
"bufnr" を0にして返される。(Note: いくつかの関数はバッファ番号
0を代替バッファとして受け付けるので、明確に0チェックを行う必要
がある)。
役に立つ応用例: 複数のファイルから正規表現検索を行い、見つかっ
たものに対してなんらかの操作をする:
:vimgrep /theword/jg *.c
:for d in getqflist()
: echo bufname(d.bufnr) ':' d.lnum '=' d.text
:endfor
: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' の値が使用される。
id quickfix-IDに対応するquickfixリストの情報を
取得。0 は現在のリストもしくは "nr" で指定され
たリストのidを意味する
idx 'id' または 'nr' で指定されたquickfixリスト内
の情報を取得した最後のエントリのインデックス。
もし0なら、カレントのエントリが使われる。
quickfix-index を参照
items quickfixリストのエントリ
lines 'efm' を使用して行のリストをパースし、結果のエ
ントリを返す。List 型のみを受け付ける。現在
のquickfixリストは変更を受けない。
quickfix-parseを参照。
nr このquickfixリストの情報を取得。0 は現在の
quickfixリストを意味し、"$" は最後のquickfixリ
ストを意味する
qfbufnr quickfixウィンドウに表示されているバッファの番
号。quickfixバッファが存在しないなら 0 が返る。
quickfix-buffer を参照。
size quickfixリスト内のエントリの数
title リストタイトルを取得 quickfix-title
winid quickfixのwindow-IDを取得
all 上記のquickfixのすべてのプロパティ
{what} の文字列以外の項目は無視される。特定の項目の値を取得す
るには 0 を設定する。
"nr" が存在しない場合、現在のquickfixリストが使用される。"nr"
と 0 でない "id" が両方とも指定されていた場合、"id" で指定され
たリストが使用される。
quickfixスタック内のリストの数を取得するには、{what} 内で "nr"
に "$" を設定する。返される辞書内の "nr" の値がquickfixスタッ
クサイズである。
"lines" が指定された場合、"efm" を除くその他すべての項目は無視
される。返される辞書は、エントリのリストからなるエントリ
"items" を含む。
返される辞書には、次のエントリが含まれる:
changedtick リストに行われた変更の総数
quickfix-changedtick
context quickfixリストコンテキスト。quickfix-context
を参照。存在しない場合、"" に設定される。
id quickfixリストID quickfix-ID。存在しない場
合、0 に設定される。
idx リスト内のquickfixのエントリのインデックス。
存在しない場合、0 に設定される。
items quickfixリストのエントリ。存在しない場合、空リ
ストに設定される。
nr quickfixリスト番号。存在しない場合、0 に設定さ
れる。
qfbufnr quickfixウィンドウに表示されているバッファの番
号。存在しない場合、0 に設定される。
size quickfixリスト内のエントリの数。存在しない場
合、0 に設定される。
title quickfixリストのタイトルテキスト。存在しない場
合、"" に設定される。
winid quickfixのwindow-ID。存在しない場合、0 に設
定される。
例 (getqflist-examplesも参照):
:echo getqflist({'all': 1})
:echo getqflist({'nr': 2, 'title': 1})
:echo getqflist({'lines' : ["F1:10:L10"]})
:echo getqflist({'nr': 2, 'title': 1})
:echo getqflist({'lines' : ["F1:10:L10"]})
戻り値の型: list<dict<any>> または list<any>
getreg([{regname} [, 1 [, {list}]]]) getreg()
レジスタ{regname}の中身を文字列にして返す。例:
:let cliptext = getreg('*')
レジスタ {regname} がセットされていないときは、結果は空文字列となる。
引数 {regname} は文字列である必要がある。 E1162
getreg('=')は最後に評価した式レジスタの値を返す。(マップの中で
使用する)。
getreg('=', 1)はその式そのものを返す。これを使ってsetreg()で
復元することができる。他のレジスタの場合は、この引数は無視され
るので、常に指定していても害はない。
{list} が指定され、その値がTRUEのときは、戻り値はリスト
(List) になる。リストの各要素はテキスト 1 行である。これはレ
ジスタの中に値ゼロのバイトが含まれる場合に使用する。{list} を
指定しなかった場合は NL 文字と値ゼロのバイトは両方とも NL 文字
として扱われる (NL-used-for-Nul 参照)。
指定したレジスタがセットされていないときは、空のリストが返され
る。
{regname} が "" の場合、無名レジスタ '"' が使われる。
{regname}を指定しないときはv:registerが使われる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
GetRegname()->getreg()
戻り値の型: String
getreginfo([{regname}]) getreginfo()
レジスタ {regname} についての詳細情報として次の項目を持つ辞書
を返す:
regcontents レジスタ {regname} に格納されている行
の、getreg({regname}, 1, 1) と同様の
リスト。
regtype レジスタ {regname} の getregtype()
相当の種別。
isunnamed 真偽値フラグ、v:true は現在指している
レジスタが無名レジスタであることを示
す。
points_to 無名レジスタであれば、現在指しているレ
ジスタを示す単一文字 (quotequoteを参
照)。
例えば、行を dd で削除後、このフィー
ルドは "1" となりそのレジスタには削除
したテキストが入る。
引数 {regname} は文字列。{regname} が不正なレジスタ名もしくは
未設定の場合、空の辞書が返される。{regname} が "" か "@" の場
合、無名レジスタ '"' が使われる。
{regname} が未指定の場合、v:register が使われる。
戻り値の辞書は setreg() に渡すことができる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
GetRegname()->getreginfo()
戻り値の型: dict<any>
getregion({pos1}, {pos2} [, {opts}]) getregion()
バッファから、{pos1} から {pos2} までの文字列のリストを返す。
{pos1} と {pos2} はともに 4 つの整数からなる List でな
ければならない。このリストの形式については getpos() を参照。
他のバッファの位置を指定することができるが、getregion-notes
にある制限に注意すること。
オプショナル引数の {opts} は以下の項目をサポートする辞書である:
type 範囲の選択のタイプを指定する。可能な値
については getregtype() を参照。ただ
し、幅は省略可能で、空の文字列は使用で
きない。(デフォルト: "v")
exclusive TRUE の場合、末尾の位置に排他的な選
択を用いる。
(デフォルト: 'selection' に従う)
visualmode() で最後の選択のタイプを取得することができる。
ビジュアルモードがアクティブな場合は、現在のビジュアルモードを
mode() で取得する (例えば、:vmap の中)。
この関数は、characterwise-visual 選択のような、始まりと終わ
りが異なる桁のテキストを取得するのに便利である。
getregion-notes
Note:
- {pos1} と {pos2} の順序は重要ではなく、常に左上の位置から右
下の位置までの内容を返す。
- 'virtualedit' が有効で、領域が行末を越える場合、結果の行は空
白で埋められる。
- 領域が矩形単位で、複数セル文字の途中で開始または終了する場
合、その文字は含まれないが、その選択された部分は空白で置き換
えられる。
- {pos1} と {pos2} が同じバッファにない場合は、空のリストが返
される。
- {pos1} と {pos2} は必ず bufloaded() なバッファ上になければ
ならない。
- これはカレントウィンドウのコンテキストで評価されるので、バッ
ファが 'virtualedit' または 'list' の値が異なるウィンドウに
表示される場合に違いが生じる。
例:
:xnoremap <CR>
\ <Cmd>echow getregion(
\ getpos('v'), getpos('.'), #{ type: mode() })<CR>
\ <Cmd>echow getregion(
\ getpos('v'), getpos('.'), #{ type: mode() })<CR>
method としても使用できる:
getpos('.')->getregion(getpos("'a"))
戻り値の型: list<string>
getregionpos({pos1}, {pos2} [, {opts}]) getregionpos()
getregion() と同じだが、{pos1} と {pos2} によって囲まれたバッ
ファのテキストセグメントを表す位置のリストを返す。
セグメントは、各行の位置のペアである:
[[{start_pos}, {end_pos}], ...]
位置は 4 つの数値の List である:
[bufnum, lnum, col, off]
"bufnum" はバッファ番号。
"lnum" と "col" はバッファ内の位置。最初の桁は 1 である。
開始位置の "off" の数値がゼロ以外の場合、それは文字の先頭から
の画面桁のオフセットである。例えば、<Tab> 内の位置、または最後
の文字の後の位置である。
終了位置の "off" の数値がゼロ以外の場合、それは選択範囲に含ま
れない文字の最初のセルのオフセットである。それ以外の場合は、そ
のすべてのセルが含まれる。
getregion() でサポートされているオプションとは別に、{opts}
は次のオプションもサポートしている:
eol TRUE の場合、行末を超える位置を、行
の長さより 1 大きい "col" 値で示す。
FALSE の場合、位置は行内に制限され、
行が空の場合、または選択範囲が行の末尾
を完全に超えている場合は、両方の位置に
対して "col" 値 0 が使用される。
(デフォルト: FALSE)
method としても使用できる:
getpos('.')->getregionpos(getpos("'a"))
戻り値の型: list<list<list<number>>>
getregtype([{regname}]) getregtype()
レジスタ{regname}の種類を表す文字列を返す。
戻り値は次のいずれかとなる:
"v" 文字単位characterwiseの場合
"V" 行単位linewiseの場合
"<CTRL-V>{width}" 矩形blockwise-visualの場合
"" 空、または未知のレジスタの場合
<CTRL-V>は値0x16の1文字である。
引数 {regname} は文字列。{regname} が "" の場合、無名レジスタ
'"' が使われる。{regname}を指定しないときはv:registerが使わ
れる。
Vim9-script では {regname} は1文字でなくてはならない。
method としても使用できる:
GetRegname()->getregtype()
戻り値の型: String
getscriptinfo([{opts}]) getscriptinfo()
:scriptnames が見せるように、読み込まれたすべての Vim script
に関する情報を読み込まれた順序で List として返す。
オプションの Dict 引数 {opts} は、以下のオプション項目をサポー
トする:
name スクリプト名の一致パターン。指定され、"sid" が
指定されていない場合は、パターン "name" に一致
する名前を持つスクリプトに関する情報が返され
る。
sid スクリプト ID <SID>。指定された場合、ID "sid"
のスクリプトに関する情報のみが返され、"name"
は無視される。
返されたリストの各項目は、以下の項目を持つ Dict である:
autoload import autoload で使用されたが、実際にはまだ
読み込まれていないスクリプトには TRUE を設定す
る (import-autoload を参照)。
functions スクリプト内で定義されているスクリプトローカル
関数名のリスト。特定のスクリプトが {opts} の
"sid" 項目を使って指定されている場合にのみ表示
される。
name Vim script ファイル名。
sid スクリプト ID <SID>。
sourced このスクリプト名がリンクしている実際に読み込ま
れたスクリプトが存在する場合はスクリプト ID、
それ以外の場合はゼロ
variables スクリプトローカル変数を含む辞書。{opts} の
"sid" 項目を使って特定のスクリプトを指定した場
合のみ存在する。
Note これはコピーであり、この辞書を使ってスク
リプトローカル変数の値を変更することはできない
ことに注意。
version Vim script バージョン (scriptversion)
例:
:echo getscriptinfo({'name': 'myscript'})
:echo getscriptinfo({'sid': 15})[0].variables
:echo getscriptinfo({'sid': 15})[0].variables
戻り値の型: list<dict<any>>
gettabinfo([{tabnr}]) gettabinfo()
{tabnr}を指定しないと、すべてのタブページに関する情報がリスト
List として返される。各リスト項目は辞書 Dictionary である。
それ以外の場合、{tabnr} はタブページ番号を指定し、それに関する
情報が返される。タブページが存在しない場合、空のリストが返され
る。
各リストアイテムは、次のエントリを持つ辞書 Dictionary である:
tabnr タブページ番号。
variables タブページローカル変数の辞書への参照。
windows タブページのwindow-IDのリスト。
method としても使用できる:
GetTabnr()->gettabinfo()
戻り値の型: list<dict<any>>
gettabvar({tabnr}, {varname} [, {def}]) gettabvar()
タブページ {tabnr} のタブローカル変数 {varname} を取得する。
t:var
タブの番号は 1 から始まる。
引数 {varname} は文字列。{varname} が空のときは全タブローカル
変数からなる辞書を返す。
Note: 指定する変数名は "t:" を除いた名前。
タブや変数が存在しないときは{def}または空文字列を返し、エラー
メッセージは表示されない。
method としても使用できる:
GetTabnr()->gettabvar(varname)
戻り値の型: any。{varname} による
gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) gettabwinvar()
タブページ{tabnr}内のウィンドウ{winnr}のウィンドウローカル変数
{varname}の値を取得する。
引数 {varname} は文字列。{varname}が空のときは全ウィンドウロー
カル変数からなる辞書を返す。
{varname}が "&" と等しい場合はすべてのウィンドウローカルオプ
ションの値を辞書 Dictionary に入れて返す。
{varname}が文字 "&" で始まるときはウィンドウローカルオプション
の値を取得する。
Note {varname}は "w:" をつけずに指定しなければならない。
タブページ番号は1から始まる。カレントタブページを指定するには
getwinvar()を指定する。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
{winnr}が0のときはカレントウィンドウとなる。
グローバルオプション、バッファローカルオプション、ウィンドウ
ローカルオプションに対しても動作するが、グローバル変数やバッ
ファローカル変数に対しては動作しない。
ウィンドウやタブや変数が存在しないときは{def}または空文字列を
返し、エラーメッセージは表示されない。
例:
:let list_is_on = gettabwinvar(1, 2, '&list')
:echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
:echo "myvar = " .. gettabwinvar(3, 1, 'myvar')
すべてのウィンドウローカル変数を取得するには:
gettabwinvar({tabnr}, {winnr}, '&')
method としても使用できる:
GetTabnr()->gettabwinvar(winnr, varname)
戻り値の型: any。{varname} による
gettagstack([{winnr}]) gettagstack()
結果は辞書で、それはウィンドウ{winnr}のタグスタックである。
{winnr}にはウィンドウ番号または window-ID を指定できる。
{winnr}を指定しない時は、カレントウィンドウが使用される。
ウィンドウ{winnr}が存在しない場合、空の辞書が返される。
返される辞書には、次のエントリが含まれる:
curidx スタック内の現在のインデックス。スタッ
クの最上部にあるときは、(length + 1)
に設定される。スタックの最下部のイン
デックスは1である。
items スタック内の項目のリスト。各項目は、以
下で説明するエントリを含む辞書である。
length スタック内の項目数
スタック内の各項目は、次のエントリを持つ辞書である:
bufnr 現在のジャンプのバッファ番号
from タグジャンプの前のカーソル位置。返され
るリストの形式は getpos() を参照。
matchnr 現在の一致するタグ番号。名前に一致する
複数のタグが見つかった場合に使用され
る。
tagname タグの名前
タグスタックについての詳細は、tagstack を参照。
method としても使用できる:
GetWinnr()->gettagstack()
戻り値の型: dict<any>
gettext({text} [, {package}]) gettext()
可能であれば文字列 {text} を翻訳する。
これは Vim script で使用するためのものである。メッセージの翻訳
を生成するときに、{text} は xgettext によって抽出され、翻訳
者は翻訳されたメッセージを .po ファイルに追加することができ、
Vim は gettext() が呼び出されたときに翻訳を検索する。
{text} にはダブルクォートの文字列が望ましい。なぜなら、
xgettext がシングルクォートのエスケープされたテキストをサポー
トしていないためである。
{package} が指定されると、その特定のパッケージの翻訳が検索され
る。これは主にサードパーティの Vim script で必要である。
gettext() 関数を使用する前に、bindtextdomain() 関数で翻訳へ
のパスを指定する必要がある。
戻り値の型: String
getwininfo([{winid}]) getwininfo()
ウィンドウに関する情報を、辞書のリスト List として返す。
{winid}が与えられた場合、そのIDを持つウィンドウに関する情報が
リスト List として1項目にして返される。ウィンドウが存在しな
い場合、結果は空のリストになる。
{winid}がなければすべてのタブページのすべてのウィンドウに関す
る情報が返される。
リストの各項目は次のエントリを持つ辞書 Dictionary である:
botline 最下の完全に表示されたバッファ行
bufnr ウィンドウ内のバッファ番号
height ウィンドウの高さ (winbarを除く)
leftcol 表示される最初の列。'wrap' がオフの場
合にのみ使用される
loclist locationリストを表示してる場合は1
{Vimが+quickfix機能付きでコンパイル
されたときのみ有効}
quickfix quickfixまたはlocationリストウィンドウ
の場合は1
{Vimが+quickfix機能付きでコンパイル
されたときのみ有効}
terminal 端末ウィンドウの場合は 1
{Vimが+terminal機能付きでコンパイル
されたときのみ有効}
tabnr タブページ番号
topline 最上に表示されたバッファ行
variables ウィンドウローカル変数の辞書への参照
width ウィンドウ幅
winbar ウィンドウがツールバーを持っていれば
1、そうでなければ 0
wincol ウィンドウの最も左のスクリーン列、
win_screenpos() の "col"
textoff テキストの前の'foldcolumn',
'signcolumn', 行番号が占める列数
winid window-ID
winnr ウィンドウ番号
winrow ウィンドウの最も上のスクリーン行、
win_screenpos() の "row"
method としても使用できる:
GetWinnr()->getwininfo()
戻り値の型: list<dict<any>>
getwinpos([{timeout}]) getwinpos()
結果は、getwinposx() と getwinposy() の結果が組み合わされ
た 2 つの数字のリスト List:
[x-pos, y-pos]
{timeout} は端末からの応答をどれくらい待つかを、ミリ秒単位で指
定するのに使われる。省略された場合は 100 ミリ秒が使用される。
リモート端末にはより長い時間を指定すること。
10 より小さい値が使用され、かつその時間内に応答を受け取らなかっ
た場合、利用可能であれば前に報告された位置が返される。これは位
置をポーリングし、同時に何かを行う場合に使用することができる:
while 1
let res = getwinpos(1)
if res[0] >= 0
break
endif
" Do some work here
endwhile
let res = getwinpos(1)
if res[0] >= 0
break
endif
" Do some work here
endwhile
method としても使用できる:
GetTimeout()->getwinpos()
戻り値の型: list<number>
getwinposx() getwinposx()
結果はGUIのVimウィンドウの左端の、デスクトップ上でのX座標値(数
値)。xtermでも機能する (100 ミリ秒のタイムアウトを使用して)。
情報が存在しない (例: Wayland バックエンド) 場合は-1となる。
この値は :winpos でも使用される。
戻り値の型: Number
getwinposy() getwinposy()
結果はGUIのVimウィンドウの上端の、デスクトップ上でのY座標値(数
値)。xtermでも機能する (100 ミリ秒のタイムアウトを使用して)。
情報が存在しない (例: Wayland バックエンド) 場合は-1となる。
この値は :winpos でも使用される。
戻り値の型: Number
getwinvar({winnr}, {varname} [, {def}]) getwinvar()
カレントタブページに対するgettabwinvar()と同様。
例:
:let list_is_on = getwinvar(2, '&list')
:echo "myvar = " .. getwinvar(1, 'myvar')
:echo "myvar = " .. getwinvar(1, 'myvar')
method としても使用できる:
GetWinnr()->getwinvar(varname)
戻り値の型: any。{varname} による
glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) glob()
{expr}内のファイル名のワイルドカードを展開する。特殊文字につい
てはwildcardsを参照。
{nosuf} にTRUEを指定しない限り、'suffixes' と 'wildignore'
が適用される。つまり 'wildignore' のパターンにマッチする名前は
スキップされ、'suffixes' がマッチの順番に影響を与える。
'wildignorecase' は常に適用される。
{list} が指定されその値がTRUEなら、マッチしたすべてのファイ
ルがリスト List として返される。リストを使うことで、改行を含
むファイル名があっても結果を正しく受け取ることができる。
そうでない場合は結果は文字列で返される。その場合、複数のマッチ
があるときはそれらは文字 <NL> で区切られる。
展開が失敗した場合、空の文字列またはリストが返される。
マッチの数を制限するなど、複雑なことをする必要がある場合にも
readdir() を使用することができる。
存在しないファイル名は結果に含まれない。シンボリックリンクは、
それが存在するファイルを指す場合のみ含まれる。
ただし、{alllinks} 引数が存在し、それがTRUEである場合はすべ
てのシンボリックリンクが含まれる。
多くのシステムではバッククォート(「`」という文字のこと)を、外
部コマンドの実行結果からファイル名を取得するために使用できる。
例:
:let tagfiles = glob("`find . -name tags -print`")
:let &tags = substitute(tagfiles, "\n", ",", "g")
バッククォート内のプログラムの実行結果は、一行に一つずつの項目:let &tags = substitute(tagfiles, "\n", ",", "g")
が含まれてなければならない。項目内のスペースは許容される。
特殊なVimの変数を展開するためにはexpand()を参照。外部コマン
ドの生の出力を得るためにはsystem()を参照。
method としても使用できる:
GetExpr()->glob()
戻り値の型: String または list<string> または list<any>。
{list} による
glob2regpat({string}) glob2regpat()
glob()に使われるファイルパターンを検索パターンに変換する。
結果はファイル名の文字列とのマッチに使用できる。例えば、
if filename =~ glob2regpat('Make*.mak')
上記は次と同じである: if filename =~ '^Make.*\.mak$'
{string}が空文字列の場合、結果は "^$" で、空文字列にマッチする。結果はシステムによって異なることに注意すること。MS-Windows
では、バックスラッシュは通常、パス区切りを意味する。
method としても使用できる:
GetExpr()->glob2regpat()
戻り値の型: String
globpath()
globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
{path}の中の全ディレクトリで文字列 {expr} に対してglob()を実
行し、結果を連結する。例:
:echo globpath(&rtp, "syntax/c.vim")
{path}はコンマ区切りのディレクトリのリスト。各ディレクトリを
{expr}の前に付加し、glob()と同様にそれを展開する。必要に応じて
パスの区切り文字が挿入される。
ディレクトリ名の中にコンマを含めるには、バックスラッシュでエス
ケープすること。Note MS-Windowsではディレクトリ名の末尾にバッ
クスラッシュがつくことがある。その後に区切りのコンマを書くとエ
スケープと見なされてしまうので、バックスラッシュは削除すること。
どれかのディレクトリに対して展開が失敗してもエラーメッセージは
表示されない。
{nosuf} にTRUEが指定されない限り、オプション 'wildignore' が
適用される。つまり、'wildignore' のパターンにマッチする名前は
スキップされる。
{list} が指定され、その値がTRUEなら、マッチしたすべてのファ
イルがリスト List として返る。リストとして受け取る利点は、改
行文字を含んだファイル名も正しく扱えることである。{list} を指
定しなかった場合は、戻り値は文字列であり、マッチした複数のファ
イル名は <NL> 文字で連結されてしまう。例:
:echo globpath(&rtp, "syntax/c.vim", 0, 1)
{alllinks} はglob()の場合と同様に扱われる。
"**" を使ってディレクトリツリーを再帰的に検索することができる。
例えば、'runtimepath' とそれ以下のディレクトリから全ての
"README.txt" を探すには次のようにする:
:echo globpath(&rtp, "**/README.txt")
上向き検索と、"**" の深さの限界はサポートされていない。よってオプション 'path' の値をそのまま使うとうまく動かないことが
ある。
method としても使用でき、ベースは第2引数として渡される:
GetExpr()->globpath(&rtp)
戻り値の型: String または list<string> または list<any>。
{list} による
has({feature} [, {check}]) has()
{check} がない、もしくは0: 結果は機能{feature}がサポートしてい
る場合1、されない場合0となる。引数{feature}は文字列で大文字/
小文字の区別が無視される。下記の feature-list を参照。
{check} があり、0でない: 結果は数値で、機能{feature}が既知であ
る場合1、そうでない場合0となる。これは {feature} の誤字のチェッ
クとデッドコードの検知に便利。古いバージョンの Vim は後で追加
される機能のことは知らず、現在のバージョンの Vim は放棄された
機能のことを知らないということに注意。
exists() と exists_compiled() も参照。
Note ある機能が無い時に文法エラーとなるコードをスキップするた
めには、Vim は行の残りをスキップし、後続の endif を見逃すか
もしれないことに注意。そのためには、endif を独立した行に置く
:
if has('feature')
let x = this->breaks->without->the->feature
endif
もし endif を2行目に "| endif" として移動させると見付けられlet x = this->breaks->without->the->feature
endif
なくなる。
戻り値の型: Number
has_key({dict}, {key}) has_key()
結果は数値で、辞書Dictionary {dict}がキー{key}の要素を持つな
ら真、持たないなら偽となる。
引数 {key} は文字列。Vim9 script では数値も受け入れられる
(そして文字列に変換される) が、他の型は受け入れられない。
旧来のスクリプトでは、通常の文字列への自動変換が行われる。
method としても使用できる:
mydict->has_key(key)
戻り値の型: Number
haslocaldir([{winnr} [, {tabnr}]]) haslocaldir()
結果は数値である:
1 ウィンドウが :lcd によってローカルディレクトリを設定
している時
2 タブページが :tcd によってローカルディレクトリを設定
している時
0 その他
引数が指定されない場合、現在のウィンドウを対象とする。
{winnr}が指定された場合、現在のタブページ内の{winnr}のウィンド
ウを対象とする。
{winnr}と{tabnr}が指定された場合、{tabnr}のタブページ内の
{winnr}のウィンドウを対象とする。
{winnr} にはウィンドウ番号またはwindow-IDが使える。
{winnr}が -1 の場合は無視され、タブページのみが使用される。
もし引数が不正の場合、0 を返す。
例:
if haslocaldir() == 1
" ウィンドウローカルディレクトリの場合
elseif haslocaldir() == 2
" タブページローカルディレクトリの場合
else
" グローバルディレクトリの場合
endif
" ウィンドウローカルディレクトリの場合
elseif haslocaldir() == 2
" タブページローカルディレクトリの場合
else
" グローバルディレクトリの場合
endif
" カレントウィンドウ
:echo haslocaldir()
:echo haslocaldir(0)
:echo haslocaldir(0, 0)
" カレントタブページのウィンドウn
:echo haslocaldir(n)
:echo haslocaldir(n, 0)
" タブページmのウィンドウn
:echo haslocaldir(n, m)
" タブページm
:echo haslocaldir(-1, m)
:echo haslocaldir()
:echo haslocaldir(0)
:echo haslocaldir(0, 0)
" カレントタブページのウィンドウn
:echo haslocaldir(n)
:echo haslocaldir(n, 0)
" タブページmのウィンドウn
:echo haslocaldir(n, m)
" タブページm
:echo haslocaldir(-1, m)
method としても使用できる:
GetWinnr()->haslocaldir()
戻り値の型: Number
hasmapto({what} [, {mode} [, {abbr}]]) hasmapto()
結果は数値。右辺側(マップした先)の一部分に{what}を含むマッピン
グが存在し、それが{mode}で指定されたモードのいずれかで定義され
ているなら真を返す。
引数 {what} と {mode} は文字列。
{abbr}が指定されていてTRUEのときはマッピングでなく短縮入力の
存在を判定する。挿入モードまたはコマンドモードを指定することを
忘れないように。
グローバルマップとバッファローカルマップの両方をチェックする。
マッピングが1個も見つからなかったときは偽を返す。
{mode}に対しては以下の文字が利用できる:
n ノーマルモード
v ビジュアルモードおよび選択モード
x ビジュアルモード
s 選択モード
o オペレータ待機モード (Operator-pending)
i 挿入モード
l Language-Argumentモード ("r", "f", "t" など)
c コマンドラインモード
{mode}が省略されたときは "nvo" となる。
この関数はVim scriptの中で、ある関数へのマッピングが既に存在す
るか判定するために有用である。例:
:if !hasmapto('\ABCdoit')
: map <Leader>d \ABCdoit
:endif
この例は、"\ABCdoit" へのマッピングが存在しないときだけ: map <Leader>d \ABCdoit
:endif
"\ABCdoit" へのマッピングを作成する。
method としても使用できる:
GetRHS()->hasmapto()
戻り値の型: Number
histadd({history}, {item}) histadd()
文字列{item}を履歴{history}に追加する。履歴{history}は以下のう
ちどれか一つから選択: hist-names
"cmd" or ":" コマンドライン履歴
"search" or "/" 検索パターン履歴
"expr" or "=" タイプされた式の履歴
"input" or "@" input()の履歴
"debug" or ">" デバッグコマンドの履歴
{history} 文字列はフルネームで指定する必要はありません。頭文字
だけでも構いません。
{item}が履歴内に既に存在する場合、それが最新の項目の位置へシフ
トされる。結果は数値:操作が成功した場合真、そうでなければ偽が
返る。
例:
:call histadd("input", strftime("%Y %b %d"))
:let date=input("Enter date: ")
サンドボックスsandboxの中では利用できない。:let date=input("Enter date: ")
method としても使用でき、ベースは第2引数として渡される:
GetHistory()->histadd('search')
戻り値の型: Number
histdel({history} [, {item}]) histdel()
{history}の内容を削除する。例えば全てのエントリを消すこともで
きる。{history}の部分に可能な値はhist-namesを参照。
パラメーター{item}が文字列に評価される場合、これは正規表現と
して扱われる。その表現にマッチする全てのエントリがhistoryから
削除される(複数あっても)。
"\c" をつけない場合、大文字・小文字が一致しなければならない。
/\c。
{item}が数値に評価される場合、インデックスとして解釈される。イ
ンデックスについては:history-indexingを参照。関連するエントリ
{訳注: The respective entry} も、存在すれば削除される。
結果は削除に成功すれば真、そうでなければ偽が返る。
例:
式レジスタの履歴を削除する:
:call histdel("expr")
検索履歴から、"*" で始まるエントリを全て削除する:
:call histdel("/", '^\*')
次の3つは等価である:
:call histdel("search", histnr("search"))
:call histdel("search", -1)
:call histdel("search", '^' .. histget("search", -1) .. '$')
:call histdel("search", -1)
:call histdel("search", '^' .. histget("search", -1) .. '$')
最後の検索パターンを削除し、一つ前のパターンを "n" コマンド(次
のマッチへ移動)と 'hlsearch' の為に設定する:
:call histdel("search", -1)
:let @/ = histget("search", -1)
:let @/ = histget("search", -1)
method としても使用できる:
GetHistory()->histdel()
戻り値の型: Number
histget({history} [, {index}]) histget()
結果は{history}の第{index}エントリを表わす文字列。{history} の
部分に可能な値はhist-namesを、{index}については
:history-indexingを参照。指定されたエントリが存在しない場合
は空文字列が返される。{index}が省略された場合には、履歴中の最
新のエントリが戻り値として使用される。
例:
2つ前に行われた検索をやり直す:
:execute '/' .. histget("search", -2)
:historyによって出力される{num}番目のエントリを、再度実行す
るための ":H {num}" というコマンドを定義する。
:command -nargs=1 H execute histget("cmd",0+<args>)
method としても使用できる:
GetHistory()->histget()
戻り値の型: String
histnr({history}) histnr()
結果は数値で{history}の現在のエントリ数。{history}の部分に可能
な値はhist-namesを参照。エラーが起こった場合、-1が返される。
例:
:let inp_index = histnr("expr")
method としても使用できる:
GetHistory()->histnr()
戻り値の型: Number
hlexists({name}) hlexists()
結果は数値で、{name}という名のハイライトグループが存在すれば、
真が返される。これはなんらかの方法でそのグループが既に定義され
ている時にのみ起こる。これの為に実際に何らかのハイライティング
アイテムが設定されている必要はなく、単に構文アイテムとしても使
われるだろう。
highlight_exists()
以前の名前: highlight_exists().
method としても使用できる:
GetName()->hlexists()
戻り値の型: Number
hlget([{name} [, {resolve}]]) hlget()
ハイライトグループの全属性のリストを返す。省略可能な引数 {name}
を指定したときは、指定したハイライトグループの属性だけのリスト
を返す。ハイライトグループの {name} が無いときは空のリストを返
す。
省略可能な引数 {resolve} が v:true に設定され、ハイライトグルー
プの {name} が他のグループにリンクしているなら、リンクを再帰的
に解決して解決したハイライトグループの属性を返す。
返されるリストの各要素は、以下を含む辞書になる:
cleared 真偽値フラグ、ハイライトグループがクリアされて
いたら v:true に設定され設定があればそうではな
い。highlight-clear を参照
cterm cterm 属性。highlight-cterm を参照。
ctermbg cterm の背景色。highlight-ctermbg を参照。
ctermfg cterm の前面色。highlight-ctermfg を参照。
ctermul cterm の下線色。highlight-ctermul を参照。
default 真偽値フラグ、ハイライトグループのリンクがデ
フォルトへのリンクだと v:true。
highlight-default を参照。
font ハイライトグループのフォント。
highlight-font を参照。
gui gui 属性。highlight-gui を参照。
guibg gui の背景色。highlight-guibg を参照。
guifg gui の前面色。highlight-guifg を参照。
guisp gui の特殊色。highlight-guisp を参照。
id ハイライトグループの ID。
linksto リンクしているハイライトグループ名。
:highlight-link を参照。
name ハイライトグループ名。group-name を参照。
start ターミナルの開始コード。highlight-start を参
照。
stop ターミナルの終了コード。highlight-stop を参
照。
term term 属性。highlight-term を参照。
上記の辞書の要素 'term', 'cterm', 'gui' の値は以下の省略可能な
真偽値の要素を持つ辞書: 'bold', 'standout', 'underline',
'undercurl', 'italic', 'reverse', 'inverse', 'strikethrough'。
例:
:echo hlget()
:echo hlget('ModeMsg')
:echo hlget('Number', v:true)
:echo hlget('ModeMsg')
:echo hlget('Number', v:true)
method としても使用できる:
GetName()->hlget()
戻り値の型: list<dict<any>>
hlset({list}) hlset()
ハイライトグループのリストの属性を作成もしくは変更する。{list}
の各要素はハイライトグループの属性を持つ辞書。この辞書内でサ
ポートされる要素のリストは hlget() を参照。
hlget() で説明されている要素に追加して、以下の追加の要素が辞
書内でサポートされる:
force 既存の属性のあるハイライトグループへの
リンクを強制的に作成する真偽値。
ハイライトグループは 'name' 要素によって識別され、'id' 要素
(提供されていれば) は無視される。ハイライトグループの指定した
名前が存在しない場合は、作成される。そうでなければ既存のハイラ
イトグループの属性を変更する。
'term', 'cterm', 'gui' の項については空の辞書が値として使え、
一致する属性の値をクリアする。'cleared' 要素に v:true を設定し
た場合、ハイライトグループのすべての属性をクリアする。
'linksto' 要素はハイライトグループを他のハイライトグループへリ
ンクさせることができる、:highlight-link を参照。
成功で0を返し、失敗で-1を返す。
例:
" Visual ハイライトグループに太字属性を追加する
:call hlset([#{name: 'Visual',
\ term: #{reverse: 1 , bold: 1}}])
:call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
:let l = hlget()
:call hlset(l)
" Search ハイライトグループをクリアする
:call hlset([#{name: 'Search', cleared: v:true}])
" ハイライトグループの 'term' 属性をクリアする
:call hlset([#{name: 'Title', term: {}}])
" DiffAdd にリンクした MyHlg グループを作る
:call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
" MyHlg グループのリンクを削除する
:call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
" 属性とリンクをクリアする
:call hlset([#{name: 'MyHlg', cleared: v:true,
\ linksto: 'NONE'}])
:call hlset([#{name: 'Visual',
\ term: #{reverse: 1 , bold: 1}}])
:call hlset([#{name: 'Type', guifg: 'DarkGreen'}])
:let l = hlget()
:call hlset(l)
" Search ハイライトグループをクリアする
:call hlset([#{name: 'Search', cleared: v:true}])
" ハイライトグループの 'term' 属性をクリアする
:call hlset([#{name: 'Title', term: {}}])
" DiffAdd にリンクした MyHlg グループを作る
:call hlset([#{name: 'MyHlg', linksto: 'DiffAdd'}])
" MyHlg グループのリンクを削除する
:call hlset([#{name: 'MyHlg', linksto: 'NONE'}])
" 属性とリンクをクリアする
:call hlset([#{name: 'MyHlg', cleared: v:true,
\ linksto: 'NONE'}])
method としても使用できる:
GetAttrList()->hlset()
戻り値の型: Number
hlID({name}) hlID()
結果は数値で、{name}という名前のハイライトグループのID番号。そ
のハイライトグループが存在しない場合は0が返される。
これはハイライトグループについての情報を獲得するために使用され
る。例えば "Comment" グループの背景色を取得するにはこのように
する:
:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
highlightID()以前の名前: highlightID()
method としても使用できる:
GetName()->hlID()
戻り値の型: Number
hostname() hostname()
結果は文字列で、現在Vimが実行されているマシンの名前。名前が256
文字を超える場合、超えた部分は切り捨てられる。
戻り値の型: String
iconv({string}, {from}, {to}) iconv()
文字列{string}をエンコーディング{from}からエンコーディング{to}
に変換した文字列を返す。
変換が完全に失敗したときは空文字列を返す。一部の文字が変換でき
なかった場合、その文字は "?" に置き換わる。
エンコーディング名はライブラリ関数iconv()が受け付けるものなら
なんでもよい。":!man 3 iconv" を参照。
ほとんどの変換は、Vimが+iconv機能つきでコンパイルされている
ときのみ利用可能。+iconvつきでないときもUTF-8からlatin1への
変換とその逆は行える。
オプション 'encoding' の値に関係なく、特殊な文字を含むメッセー
ジを表示するために使える。UTF-8でエンコードされたメッセージを
表示するには次のようにする:
echo iconv(utf8_str, "utf-8", &enc)
Note Vimは全てのUnicodeエンコーディングに対してUTF-8を使う。UCS-2との変換を行おうとしても、自動的にUTF-8との変換に変更され
る。いずれにせよ、UCS-2はNULバイトを含むため、文字列にUCS-2を
使うことはできない。
method としても使用できる:
GetText()->iconv('latin1', 'utf-8')
戻り値の型: String
id({item}) id()
結果は、{item} に関連付けられた一意の文字列であり、{item} の内
容に関連付けられたものではない。{item} が存在し参照されている
間のみ有効である。結果を生成する vim のインスタンスでのみ有効
である。全体的な考え方は、{item} の内容が変わっても
id({item}) は変わらないということである。これは、等価に基づ
くものよりもむしろ、ID 辞書を作成するための key として役立
つ。
この操作は {item} を参照せず、id を {item} に変換する関数は
ない。id を {item} にマップすると便利かもしれない。以下のよ
うに
var referenceMap: dict<any>
var id = item->id()
referenceMap[id] = item
{item} がガベージコレクションされるのを防ぎ、id から {item}var id = item->id()
referenceMap[id] = item
を取得する方法を提供する。
{item} は、リスト、辞書、オブジェクト、ジョブ、チャネルまたは
Blob になる。アイテムが許可された型でない場合または null 値の
場合は、空の文字列が返される。
method としても使用できる:
GetItem()->id()
戻り値の型: String
indent({lnum}) indent()
カレントバッファの{lnum}行目のインデント量を数値で返す。この
インデント量はスペース単位で数えられ、'tabstop' の値が関係する。
{lnum}はgetline()の場合と同様に扱われる。
{lnum}が無効なときは-1を返す。Vim9 script ではエラーになる。
method としても使用できる:
GetLnum()->indent()
戻り値の型: Number
index({object}, {expr} [, {start} [, {ic}]]) index()
{object} から {expr} を探し、そのインデックスを返す。ラムダを
使って項目を選択する方法については indexof() を参照。
{object}が List の場合は、{expr}に等しい要素の最小のインデッ
クスを返す。自動的な変換は行われないので、文字列の "4" は数値
の 4 とは異なると判定される。そして数値の 4 は浮動小数点数の
4.0 とも異なる。'ignorecase' の値はここでは使用されない。大文
字・小文字は引数 {ic} で示されているように区別される。
{object}が Blob の場合は、{expr}に等しいバイト値の最小のイン
デックスを返す。
{start}が指定された場合はインデックス{start}から要素の検索を始
める(負数を指定すると末尾からの相対位置となる)。
{ic}にTRUEが指定された場合、大文字・小文字は区別されない。
そうでない場合は区別される。
{object}の中に{expr}が見つからない場合は-1を返す。
例:
:let idx = index(words, "the")
:if index(numbers, 123) >= 0
:if index(numbers, 123) >= 0
method としても使用できる:
GetObject()->index(what)
戻り値の型: Number
indexof({object}, {expr} [, {opts}]) indexof()
{expr} が v:true である {object} 内の項目のインデックスを返す。
{object} は List または Blob でなければならない。
{object} が List の場合、式が v:true になるまでリスト内の各
項目で {expr} を評価し、この項目のインデックスを返す。
{object} が Blob の場合、式が v:true になるまで Blob 内の各
バイトで {expr} を評価し、このバイトのインデックスを返す。
{expr} は string または Funcref でなければならない。
{expr} が string の場合: {object} が List であれば、{expr}
の内部では v:key は現在のリスト項目のインデックスを持ち、
v:val はその項目の値を持つ。{object} が Blob の場合、{expr}
の内部では v:key は現在のバイトのインデックスを持ち、v:val
は項目の値を持つ。
{expr} が Funcref の場合は引数を 2 つ取らなければならない:
1. 現在の項目のキーまたはインデックス。
2. 現在の項目の値。
この関数は、項目が見つかれば TRUE を返し、検索を停止しなけれ
ばならない。
オプションの引数 {opts} は辞書で、以下の項目をサポートしている:
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})
:echo indexof(l, "v:val.n == 20")
:echo indexof(l, {i, v -> v.n == 30})
:echo indexof(l, "v:val.n == 20", #{startidx: 1})
method としても使用できる:
mylist->indexof(expr)
戻り値の型: Number
input({prompt} [, {text} [, {completion}]]) input()
結果は文字列で、ユーザーがコマンドラインに入力したものが返され
る。引数 {prompt} にはプロンプト文字列か空文字列を指定する。空
文字列の場合はプロンプトなしになる。'\n' を使ってプロンプトに
改行を含めることができる。
:echohlによるハイライトの設定がプロンプトに適用される。
入力はコマンドラインと同様に行え、同じ編集コマンドやキーマップ
が使用できる。input()に入力された文字列には、他の履歴とは独立
した履歴が与えられる。
例:
:if input("Coffee or beer? ") == "beer"
: echo "Cheers!"
:endif
: echo "Cheers!"
:endif
省略可能な引数{text}が与えられ、空でないならば、それが入力の初
期値として、ユーザーが入力したのと同じ様に表示される。例:
:let color = input("Color? ", "white")
省略可能な引数{completion}はこの入力において利用できる補完の種
類を指定する。この引数がないときは補完は行われない。対応してい
&nbs