Skip to content
thinca edited this page Jan 3, 2014 · 22 revisions

はじめに

ここの内容は今のところ叩き台レベルであり、今後変更される可能性がある。(TODO 早めに議論して fix できる部分から fix させていく)

インデント

スペース2文字でインデントを行う。 このために以下の modeline を全てのスクリプトファイルに追加する。

" vim: tabstop=2 shiftwidth=2 expandtab

例外

vital.vim はライブラリであるため、エラーの通知は例外を投げることで行う。直接 :echo などをしてはいけない。 例外を投げる場合は、vital: {module-name}: と言う prefix を付ける。

禁止されている機能

以下の機能は、複数の vital がインストールされていた場合に衝突する可能性があるため、基本的に使用してはいけない。

  • ユーザー定義コマンドの定義
  • キーマッピングの定義
  • augroup/autocmd の定義
  • グローバル変数の定義/参照

ただし、これらの定義を補助する機能を提供する目的のライブラリなどに関しては例外となる。

折り畳みコメント

折り畳みコメント(" {{{ のようなもの) は基本的に付けない。

Abbreviation of commands/options

コマンド名・オプション名は省略してはいけない。

  • 悪い例: fun ..., &tw
  • 良い例: function ..., &textwidth

命名

関数名、変数名はcamelCaseではなくunderscoreにする

  • 悪い例: thisIsAPen()
  • 良い例: this_is_a_pen()

空行

  • 関数定義の間に一行の空行を入れる。
" NG
function! s:hoge()
	
endfunction
function! s:foo()
	
endfunction

" OK
function! s:hoge()
	
endfunction

" 空行を入れる

function! s:foo()
	
endfunction
  • functionの直後、endfunctionの直前に空行を入れない。
" NG
function! s:hoge()

	let value = 10

endfunction

" OK
function! s:hoge()
	let value = 10
endfunction

l:をつけるかつけないか

つけない。ただし以下の場合のみつける。

  • countという名前のローカル変数を利用するとき
  • buffer localなoptionの値を参照するとき (例: &l:include)

object-orientedなインタフェースを提供するか (例: newして得た辞書がいろいろ関数を所持している)

必然性があるときのみ提供し、そうでないときはベタな関数を提供する (どうせ名前空間があるので)。

Clone this wiki locally