vimスクリプトの基本

Vimスクリプトリファレンス — 名無しのvim使いに書いていることをただ、ただ実行していきます。

Hello Worldと表示させたい

vimで以下のコマンドを入力、実行
:echo "Hello World"

結果が表示される
Hello World

スクリプトファイルを読み込んでHello Worldと表示させたい

コマンドを書いたスクリプトファイルhello.vimを作成
echo "Hello World"

sourceコマンドでスクリプトを読み込む
:source hello.vim

結果が表示される
Hello World

autocmdでHello Worldと表示させたい

実行環境によってはうまく表示されないみたい。

関数でHello Worldと表示させたい

関数を定義したスクリプトファイルhello_func.vimを作成
function! HelloFunc()
  echo "Hello World"
endfunction

「!」を付けると関数を再定義するという宣言になる。
これを付けておけば、もし同じ名前で関数が定義されていても大丈夫。

sourceコマンドでスクリプトを読み込む
:source hello_func.vim

callコマンドで関数を呼び出す
:call HelloFunc()

結果が表示される
Hello World

キーマップでHello Worldと表示させたい

まず、キーマップを定義する

以下のコマンドを実行して、ノーマルモードでzキーを押すと、"Hello World"と表示されるように
定義する。

nmap z :echo "Hello World"<CR>
  • nmapのnはnormalノーマルの「n」
  • はエンター。
  • これはダメ。nmap z echo "Hello World" 「:」は大事だよ〜

マッピングを呼び出して、実行する
z

結果が表示される
Hello World

コマンドechoとコマンドechon

vimスクリプト
 1 echon "Hello"
 2 echon " "
 3 echon "World"
 4 echo "Hey" 
実行してみた結果
Hello World
Hey

複数行にコマンドを記述する

行の先頭に「\」を記述する。ちなみに.で文字列を連結する。

  1 echo "Hello" . " "
  2       \ . "World"
実行してみた結果
Hello World

コメントアウトする

「"」から始まる行は、コメントとして解釈される。
行頭に「"」を記述する必要がある。行の途中から記述してもダメ。

  1 "echo "Hello World"
  2 echo "Hello World"   "コメント
実行してみた結果

「"」を行の途中から記述しているので、怒られる。

vimスクリプトの読込みを停止したい

  1 function! Alphabet()
  2   echo "A"
  3   echo "B"
  4   echo "C"
  5   finish
  6   echo "D"
  7   echo "E"
  8 endfunction
  9 
 10 echo "Hello"
 11 finish
 12 echo "World"
実行してみる

実行結果は

Hello

finishによって、以下のecho "World"は実行されない。

次に、定義した関数Alphabet()を読んでみる。

:call Alphabet()

なんか怒られた。

関数中ではfinishは使えないみたいである。

  • これを忘れてるとハマりそう。

変数宣言の基本の基本

変数宣言
let var = "Hello World"
変数の削除
unlet var
テストのためのスクリプト
  1 let var = "Hello World"
  2 echo var
  3 unlet var
  4 echo var
実行してみる


unletで変数を削除しているので、4行目のechoは怒られる。