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 は関数名の衝突に使ってるんだと思うけど、悪い例が見つからなかった。