basyura's blog

あしたになったらほんきだす。

hatena.vim を読む

command! -nargs=? HatenaEdit            call <SID>HatenaEdit(<args>)

HatenaEdit という名前で関数を定義。HatenaEdit を与えられた引数付きで呼び出す。

コマンド定義

:com[mand][!] [{attr}...] {cmd} {rep}
			ユーザ定義コマンドを定義します。コマンド名は {cmd} で
			それを置き換えるテキストが {rep} です。{attr} はコマン
			ド属性(下記参照)です。既にコマンドが存在している場合は
			エラーになります。! を指定した場合は再定義されます。

	<args>	与えられた通りのコマンド引数(上記の通り、カウントやレジスタが
		指定された場合は<args>に含まれません)。

引数定義

-nargs属性を指定すると、ユーザ定義コマンドが引数指
定できるようになります。次の属性が指定できます:

	-nargs=0    引数を取らない (指定なしと同じ)
	-nargs=1    1個の引数をとれる (必ず引数が必要)
	-nargs=*    いくつでも引数を取れる (0個以上)
	-nargs=?    0 もしくは 1 個の引数が取れる
	-nargs=+    引数が必ず必要。数はいくつでもよい

ここでは、引数は (エスケープされていない) スペースやタブ文字で分けられているも
のとしています。

SID

マップコマンドを実行すると、
"<SID>" は、<SNR> という特別なキーコードとスクリプト固有の番号、そしてアンダー
スコアに置換されます。例: >
	:map <SID>Add
これは"<SNR>23_Add"といったマップを定義します。

SID は関数名の衝突に使ってるんだと思うけど、悪い例が見つからなかった。