Vimの組み込み関数について
Vim の組み込み関数も結構変更を受けたりしていて、古い Vim だと動かない機能があったりする。これは仕方がない。どちらかというと今なお活発に開発が行われているということで、いいことだと思う。ただ、困るのはそれがいつからだったか調べるのが大変面倒な作業だという点だ。ひとまず組み込み関数の追加・変更履歴を調べた。大体、7.4以降の話でそれより前は大変なのでカット。どこかにこういうのがまとまってるとこがあると助かるんだけど。コマンド、オプション、オートコマンドイベントなどもまとまってるとありがたい。
追加・変更リスト
arglistid()
- patch-7.4.312: 追加。
and()
- patch-7.3.377: 追加。
byteidxcomp()
- patch-7.4.057: 追加。
char2nr()
cursor()
- patch-7.4.310: 第一引数
{list}
に第四要素curswant
を指定できるように。
eval()
- patch-7.4.574:
eval('$')
がエラーを返すように修正。 #687
executable()
- patch-7.4.428: MS-Windowsで間違った値を返すのを修正。 #449
exepath()
- patch-7.4.235: 追加。
exists()
- patch-7.4.268: スクリプトローカル関数の存在を確認できないのを修正。
expand()
- patch-7.3.065:
<slnum>
の追加。現在の行番号へと展開される特殊引数。 - patch-7.3.465: 第三引数
{list}
の追加。返り値をリストとして受け取れるように。 - patch-7.4.423: シェル変数や環境変数を展開できていなかったのを修正。
- patch-7.4.465: 長い文字列でクラッシュするのを修正。 #649
feedkeys()
- patch-7.4.601: 第二引数
{mode}
に'i'
を指定できるように。
getbufvar()
- patch-7.3.831: 第三引数
{def}
の追加。タブ、ウィンドウ、バッファあるいは変数が存在しない場合は{def}
に指定された値を返す。 #245
getchar()
- patch-7.4.306: 端末で使用時に、第一引数
{expr}
に0
か1
を与えた場合<Esc>
キーがすぐに取得できないのを修正。 - patch07.4.457:
<expr>
マッピングの中でgetchar()
を呼ぶと、:autocmd
イベント用の特殊なキーシークエンスをキャッチしてしまう。これを回避するために<Cursorhold>
キーが定義された。 #607
getcmdwintype()
- patch-7.4.392: 追加。
getcurpos()
- patch-7.4.313: 追加。
- patch-7.4.578:
$
コマンド使用後に返り値のcurswant
が負数になっているのを修正。(パッチコメントでは空行でおこる、とあるが空でない行でも同様) #604
getpos()
- patch-7.4.310:
第一引数{expr}に'.'を指定した場合、返り値のリストに第五要素curswantを追加するように変更。 - patch-7.4.313: patch-7.4.310の変更を取消。代わりに
getcurpos()
関数を追加。
getreg()
- patch-7.4.242: 第三引数
{list}
の追加。返り値をリストとして受け取れるように。 - patch-7.4.513: クラッシュを引き起こす恐れのあるバグを修正。詳細はよくわからず。リストを返す場合に起こる?
gettabvar()
- patch-7.3.831: 第三引数
{def}
の追加。タブ、ウィンドウ、バッファあるいは変数が存在しない場合は{def}
に指定された値を返す。 #245 - patch-7.4.434: 第二引数
{varname}
に空文字を与えた場合スコープ変数を取得できるように。 #622 - patch-7.4.442: (patch-7.4.434の修正?) #622
getwinvar()
- patch-7.3.831: 第三引数
{def}
の追加。タブ、ウィンドウ、バッファあるいは変数が存在しない場合は{def}
に指定された値を返す。 #245
glob()
- patch-7.3.465: 第三引数
{list}
の追加。返り値をリストとして受け取れるように。 - patch-7.4.654: 第四引数
{alllinks}
の追加。返り値にすべてのシンボリックリンクを含められるように。
globpath()
- patch-7.4.279: 第四引数
{list}
の追加。返り値をリストとして受け取れるように。 - patch-7.4.654: 第五引数
{alllinks}
の追加。返り値にすべてのシンボリックリンクを含められるように。
glob2regpat()
- patch-7.4.668: 追加。
has()
- patch-7.4.236: パッチがあてられているかを
has('patch-7.4.236')
の形式で確認できるように。
input()
- patch-7.4.047: マッピングから呼ばれた関数の中で動作しない。#469
invert()
- patch-7.3.377: 追加。
luaeval()
- patch-7.3.490: 追加。
map()
- patch-7.4.525:
{expr}
が不正な場合にメモリリークするのを修正。 - patch-7.4.708: 高速化。 #724
match()
matchadd()
- patch-7.4.528:
'regexpengine'
が0の時クラッシュする恐れのあるバグを修正。 #668
matchaddpos()
- patch-7.4.330: 追加。
- patch-7.4.343: (関連する?) #580
- patch-7.4.362: 指定した長さよりも行が短い場合は行の最後までハイライトする(パッチコメントが逆のような?)。同時にマルチバイト文字に関連したバグも修正されている。 #586
matchdelete()
- patch-7.4.343: (matchaddpos()によるハイライトを消す際に限り?)正しくハイライトを消せないのを修正。 #580
matchend()
matchstr()
- patch-7.4.526: 長い文字列で失敗するのを修正。
mkdir()
- patch-7.4.006:
mkdir('foo/bar/', 'p')
が末尾のパスセパレーターでエラーを吐くのを修正。 - patch-7.4.010: patch-7.4.006 以降無効な引数でクラッシュするのを修正。
or()
- patch-7.3.377: 追加。
screenattr()
- patch-7.3.1164: 追加。
screenchar()
- patch-7.3.1164: 追加。
screencol()
- patch-7.3.748: 追加。
screenrow()
- patch-7.3.748: 追加。
search()
- patch-7.4.771: 第二引数
{flags}
に'bceW'、あるいは第二引数{flags}
に'bce'と第三引数{stopline}
を指定したときにカーソル直下のマルチバイト文字の検索に失敗するのを修正。 #747
searchpos()
- patch-7.4.771: 第二引数
{flags}
に'bceW'、あるいは第二引数{flags}
に'bce'と第三引数{stopline}
を指定したときにカーソル直下のマルチバイト文字の検索に失敗するのを修正。 #747
setmatches()
- patch-7.4.745:
getmatches()
の返り値をsetmatches()
で復元できないのを修正。
setpos()
- patch-7.4.310: 第二引数
{list}
が第五要素curswant
を許容するように。
setreg()
- patch-7.4.243: 第二引数
{value}
がリストを許容するように。 - patch-7.4.249: 第二引数
{value}
に数値のリストを渡した場合に働かないのを修正。 - patch-7.4.725:
:call setreg('"', [])
で内部エラーを出すのを修正。 #676
sha256()
- patch-7.3.816: 追加。 #86
sort()
- patch-7.3.224: 第三引数
{dict}
の追加。 "dict" 属性の関数が self を参照できる。 - patch-7.4.341: 第二引数
{func}
に'n'
を指定できるように。要素を数値としてソートする(通常は文字列として扱われる)。 - patch-7.4.351:
安定ソートに。 - patch-7.4.358: 本当に安定ソートに。
- patch-7.4.411: 長さの違う文字列のソートに問題があるのを修正。'foo bar'が'foo'よりも先にソートされていた。
strchars()
- patch-7.4.755: 第二引数
{skipcc}
を追加。合成文字のカウント方法を指定できるように。
submatch()
- patch-7.4.241: 第二引数
{list}
の追加。返り値をリストで受け取れるように。
substitute()
- patch-7.4.045:
\ze
から始まるパターンで正しく動かないのを修正。 - patch-7.4.158: (patch-7.4.045以降?)
\zs
を含むパターンが正しく動作しないのを修正。 #503 - patch-7.4.323: ゼロ幅マッチがマルチバイト文字を破壊するのを修正。 #572
- patch-7.4.499: 高速化。 #648
system()
- patch-7.4.247: 第二引数
{input}
がリストを許容するように。 - patch-7.4.427:
:autocmd
イベントInsertCharPre
にて実行された場合に表示が崩れるのを修正。 - patch-7.4.451: 空文字を引数に渡すとエラーを吐くのを修正。
systemlist()
- patch-7.4.248: 追加。
- patch-7.4.256: 正しく動いてなかったのを修正。 #548
- patch-7.4.597: 返り値に変更を加えられないのを修正。
uniq()
- patch-7.4.218: 追加。
wildmenumode()
- patch-7.3.828: 追加。
winrestview()
- patch-7.4.311: 第一引数の
{dict}
に全ての要素を指定する必要はなくするように変更。curswant
のみ、topline
のみの指定などができる。 - patch-7.4.491:
topline
に負数を指定すると表示が崩れるのを修正。 #637
xor()
- patch-7.3.377: 追加。