VimScriptで躓きやすいところ

というか,今日初めてVimScript触ったので,躓いたところを列挙しただけです.

実行

:source %

出力

改行あり出力
echo v
改行なし出力
echon v

代入

代入
let v = 0
演算代入
let v += 1

文字列と配列

文字列結合
let s = 'ABC'.'DEF'
let s .= 'GHI'
配列スライス

文字列でも使える

let v = [1, 2, 3, 4, 5]
v[1] #=> 2
v[1:3] #=> [2,3]
v[1:] #=> [2, 3, 4, 5]
v[:-1] #=> [1, 2, 3, 4]
文字列と数値の掛け算

できない

"TEST"*3 #\=> "TESTTESTTEST"

真偽値型

はない
代わりにtrueは非0(1など), falseは0を使う

制御構文

if文
if bool
  ...
elseif
  ...
endif
for文

foreachっぽいかんじ

for x in list
  ...
endfor
while文
while bool
  ...
endwhile

関数

関数定義

関数名は大文字からはじめる
:source %するときはすでにある関数を上書きするのでfunction!する

function f(v)
  ...
endfunction
引数の参照

引数の参照をするにはプレフィックスa:をつける

a:v

組み込み関数

range(10) #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10) #=> [2, 3, 4, 5, 6, 7, 8, 10]
nr2char(72) #=> 'H'
char2nr('H') #=> 72
getline("1", "$") # 今開いているバッファの行をリストとして得る
setline("1", list) # 今開いてるバッファに行のリストを挿入する
split("A,B,C", ",") #=> ["A", "B", "C"]
join(["A", "B", "C"], ",") #=> "A,B,C"