kitaro-tn
10/21/2017 - 6:13 PM

VimScript入門編

VimScript入門編


echo "Hello"

" 改行なし
echon "Hello"
echon " World"

" 変数代入
let x = 1
let y = 1
echo x + y

"" 文字列

" 結合
let str = "aaa" . "bbb"
echo str
let str = join(["aaa", "bbb", "ccc"], ",")
echo str

" 分割
let row = split("a,b,c", ",")
echo row

" 長さ
echo strlen("abcde")

"" リスト

let list = [1, 2, 3]
echo list
echo list[0]

" 長さ
echo len(list)

" 任意の要素を取り出す
let first = remove(list, 0)
echon "first="
echo first
echon "remove after list="
echo list
let last = remove(list, -1)
echon "last="
echo last
echon "remove after list="
echo list

"" 辞書

let dict = {'a': 1, 'b': 2}
echo dict
echo dict['a']

" キー取得
echo keys(dict)

" 値取得
echo values(dict)

" [key, value]の形式のリストで取得
echo items(dict)

" キー存在確認
echo has_key(dict, 'a')

" キー削除
call remove(dict, 'a')
echo dict

"" 制御コマンド

" 条件分岐
let flag = 1
if flag == 1
  echo "ture"
endif

" 三項演算子
echo flag == 1 ? "true" : "false"

" 繰り返し
let i = 0
while i < 5
  let i += 1
  echo i
endwhile

" リストの中身を走査する
for e in [1, 2, 3]
  echo e
endfor

"" 関数

" 組み込み関数名と区別するため大文字から始める必要がある
" !で既存の関数を上書きするという意味
" 関数内で引数にアクセスするには、`a:`という接頭詞が必要
" 同一スクリプト内でのみ使える関数を定義するには、関数名の前に `s:`という接頭
" 詞が必要。この場合、関数名は大文字で始めなくても良い
function! Sum(x, y)
  return a:x + a:y
endfunction

echo Sum(1, 3)