変数のスコープ
作者: 小見 拓
—
最終変更
2012年01月08日 12時14分
変数のスコープ
- 変数はファンクション内でのみ使用可能。
:let l:var1 = "text value"
- ファンクション内でのみ使用可能。ファンクションの引数用。
:let a:var2 = "text value"
- 変数はスクリプト内でのみ使用可能。
:let s:var3 = "text value"
- 変数はバッファ内でのみ使用可能。
:let b:var4 = "text value"
- 変数はウィンドウの範囲でのみ使用可能。
:let w:var5 = "text value"
- 変数はタブの範囲でのみ使用可能。
:let t:var6 = "text value"
- 変数はどこからでも使用可能。
:let g:var7 = "text value"
- 同じく、変数はどこからでも使用可能。
:let var8 = "text value"
- vimエディタが定義、設定する変数。
:let v:var9 = "text value"
- 変数のスコープの使い分けサンプル
:if exists("g:loaded_hello") :finish :endif " 外部からでも、変数を操作させたい時は「g:」を使う。 " (ここの場合、他のスクリプトでg:loaded_helloを1に変更して、 " スクリプトを読み込まないようにできる。) :let g:loaded_hello = 1 " そのスクリプト内だけで使用する変数は「s:」を使う :let s:save_cpo = &cpo :set cpo&vim :function! Hello(opt) " ファンクションの中だけで使用する変数には「l:」を使う :let l:text = "Hello World " " ファンクションのパラメータは「a:」で参照できる :let l:text .= a:opt :echo l:text :endfunction :command! -narg=1 Hello :call Hello(<f-args>) :let &cpo = s:save_cpo
Note
このサイトで公開している「vimスクリプト リファレンス」では、
サンプルコードでスコープを使用していません。
なぜなら、スコープを使用したサンプルコードを書いてしまうと、
そのままではコピーしても動かない可能性が高いので、
読む方が混乱すると考えたからです。
余裕のある方は、当サイトのコードをスコープを使用したコードに置き換えてから、
使用してください。
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 10 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 11 years ago