vim script 入門 – 変数とスコープ

   2017/05/01

私は、正直vimスクリプトについては初心者であり、解説するほどの知識はありませんが、分からないことや疑問に思った事を調べつつまとめていきたいと思います。まずは、タイトルにある通り”変数とスコープ”について簡単にまとめてみました。

基本的な事

vim scriptの変数名は、アルファベット大文字小文字、アンダースコアと数字を含むことができます。但し、数字から始めることはできません。 ※ここでいうアルファベット大文字小文字とはa-z, A-Zを意味します。変数には他のスクリプト言語と同様にスコープがあります。 スコープを指定するには、変数の前にprefixを付けます。例えばg:my_variable のようにg:を付けるとグローバル変数、l:my_variable のようにl:を付けると関数内のローカル変数になります。スコープのprefixを省略すると、関数の外で変数を定義した場合はグローバル変数、関数内ではローカル変数となります。関数に渡された引数を参照する場合は、a:replayのようにa:を変数に付けます。

Hello World!
What’s up!
Not much

もう一つ、s:を変数の前に付けるとスクリプトスコープとなります。スクリプトスコープの変数は、文字通りそのスクリプトファイル内のみで利用可能となります。

変数のデータ型

vimスクリプトには6つ変数のデータ型があります。

  1. Number
  2. String
  3. Function reference
  4. List
  5. Dictionary
  6. Float

では、一つずつ見ていきます。

1. Number

Number型の変数は、10進数、8進数、16進数となることが可能です。8進数の表現は、0から始まる数値で、16進数は0xまたは0Xから始まる数値です。これら以外は10進数となります。 負の値は、”-“を数字の前に付けます。 この辺りは他のスクリプト言語と変わらないですね。

2. String

文字列には、ダブルクオート、シングルクオートで囲った文字列があります。ダブルクオートは、特別なキャラクタ(例えば、\n \e \t \")が内部で使えます。※詳細は、:help exp-quote を参照のこと。 ダブルクオートは、コメントにも使われますので、閉じないとコメントになってしまいます。

3. Function reference

関数の参照型変数(Funcref)は、文字通り関数への参照です。関数定義の名前自体もこのタイプになります。関数を定義する際、その名前は大文字で開始しなければなりませんが、この変数も大文字でなければなりません。関数参照型の変数に、関数の参照を代入するには、function関数を使います。

Hello World!
What’s up!
Not much

4. List

[]内にカンマ区切りで値を並べたものがListになります。値は、どのデータ型でも設定することが可能です。vimにもともと付属されている関数で設定、取得、削除等の操作ができます。

add関数

remove関数

insert関数

reverse関数

sort関数

sublistについて

[:]を使ってListの一部分を取り出すことができます。例えば以下のように[0:2]リストの0番目から2番目までを切り出します。[:2]のように0を省略して書くこともできます。(結果は同じ)また、負の値を指定するとリストの後ろからカウントします。[0:-1]は、全リストを切り出します。

5. Dictionary

Dictionaryは、順番を持たない連想配列のようなものです。キーと値の組み合わせ”:”でつなぎ、カンマ区切りで{}に並べます。キーは、Stringでなければなりません。数値も指定できますが自動的に文字列に変換されます。

6. Float

浮動小数点数です。vimにもともと付属されている関数で文字列に変換(str2float)したり、整数値に変換(float2nr)することができます。FloatとNumberの和はFloatに変換されます。変数のデータ型は、type関数で確認することができます。 (0:Number, 1:String, 2:Funcref, 3:List, 4:Dictionary, 5:Float)

 

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら