はじめに
Vim Script を書いているときに、let s:hoge
というような変数定義を書くことがあると思います。その時の変数の前置子につけるアルファベットの意味をいつも忘れてしまうので、まとめておこうと思います。
そもそも変数の前置子につけるアルファベットは何か
Vim のマニュアルを調べてみると、変数のスコープを指定するもののようでした。以下、マニュアルを引用します。
前置子の種類 | 前置子 | スコープ |
---|---|---|
buffer-variable | b: | 現在のバッファにローカル |
window-variable | w: | 現在のウィンドウにローカル |
tabpage-variable | t: | 現在のタブページにローカル |
global-variable | g: | グローバル |
local-variable | l: | 関数にローカル |
script-variable | s: | :sourceされたVim scriptにローカル |
function-argument | a: | 関数の引数(関数内のみ) |
vim-variable | v: | グローバル、Vimがあらかじめ定義 |
例えば変数のスコープをグローバルにした場合、他のプラグインからもアクセスできるため、他の変数との衝突は気にする必要がありそうです。
Vim Script 内でのみアクセスできる変数の場合は、スクリプトローカルを意味する s:
をつければ良さそうです。
調べていて面白いなと思ったのは、バッファ、ウインドウ、タブページ内でローカルな変数を定義できることでした。他のバッファ、ウインドウ、タブに影響を与えないようにする変数も定義できるのは便利ですね。
おわりに
普段と違う文法については、意味を知ってから使うほうが楽しいと思うので、引き続き調べていこうと思います。