前回の続きです。
この賞はVim scriptの記法について。
- let 変数定義に使います。 以下のようにs:を付けるとスクリプトローカルな変数を定義できます。 let s:count
使わなくなったら、unlet s:countで変数を削除してメモリを解放します。
exists() 変数の存在確認結果を返す。 引数は変数名の文字列を指定するため、以下のように実行します。 if exists("s:count")
$HOME $で始まるのは環境変数。
&ic &で始まるのはオプション。 &icはignorecaseオプションのこと。
@r @で始まるのはレジスタ。
. ピリオドを使って文字の連結ができます。 Perlと同じ。
a ? b : c aならばb、aでないならc。 よくある3項演算子。
a =~ b aがbパターンにマッチする。 =~ではなく、!~ならマッチしない。 Perlと同じ。ただし、大文字小文字を区別しない。 パターンは文字列として指定する。 "test" =~ "e"
a =~# b aがbパターンにマッチする。大文字小文字を区別する。 Perlと同じ。 =~?とすると大文字小文字を区別しない。
continue.break while文のループ中で、次のループへ遷移したりループを終了する。
eval 文字列を評価した結果を返す。 executeコマンドは結果をコマンドとして実行するが、evalは評価のみで価を返す。
function 関数定義。 関数名は大文字で開始。 関数の中で引数を参照するときは、a:countという形でa:を付ける。 関数の中でletコマンドによって定義した変数は関数ローカルな価となる。 s:等を付けた場合はそれに従う。
function FunctionName() range rangeを付けると範囲指定を受け付ける。以下のように実行できる。 10,30call FunctionName 範囲は、a:firstline、a:lastlineで参照する。
rangeを付けなかった関数を10,30callで呼ぶと、同じ関数を21回呼ぶことになる。
function FunctionName(Start, ...) ...で可変長引数を指定。 a:0は可変長引数の数。a:000は可変長引数のリスト。 a:1は可変長引数の最初の値。
function() 引数に指定した関数名の関数への参照を返す。 let Func1 = function( 'FunctionName') 参照を代入する変数名は大文字で始める。
関数参照を実行するにはcall()関数を使う。
call() call( Func1 , []) 第2引数は参照している関数の引数リスト。
[] リスト。 ['a'] + ['b','c'] "これは['a' , 'b' , 'c'] extend(['b','c'])でも同じ。 add()を使うと、入れ子になる。
for n in [] リストの要素をnに代入しながらループ。 rangeと組み合わせて指定回数ループ可能。
range() range(3)とすると[0,1,2]のリストが返る。
{} 辞書。 let dict = {'a':'b', 'c':'d'} echo dict['a'] echo dict.a
for n in sort(keys(dict)) 辞書のキーでループ。
function dict.FunctionName dict 辞書に対する関数として定義。 以下のように実行すると、self変数に辞書そのものを格納して関数を実行する。 let dict = {} function dict.FunctionName dict endfunction echo dict.FunctionName
get() 辞書にキーがあれば価を返し、なければデフォルト価を返す。 get(dict, key , default)
map() リストの各要素に第二引数の処理を加えたリストを返す。 map(alist,'command') 第2引数は文字列として渡す。
copy() 辞書をコピーする。
try, catch, finally, endtry エラーを例外とする。
ma"aYHmbgg"aP
bzt
a ビューの復元のサンプル。 YとPは違うコマンドでも良い。 aとbのマークを付けて、aで移動してztでスクロールして、
aでカーソル移動。