vimのhelpを読んで新たに覚えた便利なコマンド(usr41)

  • 投稿日:
  • by
  • カテゴリ:

前回の続きです。

この賞は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"aPbzta ビューの復元のサンプル。 YとPは違うコマンドでも良い。 aとbのマークを付けて、aで移動してztでスクロールして、aでカーソル移動。