欲しいものリスト

phoenix-powerブログに載せてるコードからも分かるように、インデントはあまりしっかりしてないので、自動化してみました。

airindent.vim

このプラグインは、テキスト変更時にインデントを形成します。

仕組みは簡単で、=Ggg=Gを使います。

しかし、gg=Gの場合は、文頭にカーソル移動してしまいます。

したがって、変換する前の行に再度移動するようにしています。

install

~/.vimrc
1
NeoBundle "syui/airindent.vim"

:NeoBundleInstall

command

コマンド 内容
:AirIndentMoveLine すべての範囲をインデントして戻る
:AirAutoIndentAllStart 自動ですべての範囲をインデントを開始
:AirAutoIndentAllStop 自動インデントの停止

setting

モードの設定があります。1で有効にします。

~/.vimrc
1
2
3
4
5
6
" setting {{{
" インデントの自動化を有効にする
let g:air_auto_indent = 1
" 全範囲を対象にしたインデントのキーバインドを設定する
nm <Leader>- <Plug>(AirIndentMoveLine)
" }}}

code

インデント後に直前の行に戻る

~/.vim/bundle/airindent.vim/plugin/airindent.vim
1
2
3
4
5
6
fu! s:air_indent_move_line()
  "let cline = getline(v:lnum)
  let air_cmove = line(".") . "G"
  exe ":normal gg=G"
  exe ":normal " . air_cmove
endf

文字列として現在行とコマンドを保存します。

そして、保存したコマンド文字列をexeによって実行します。

上のコマンドを自動化する

~/.vim/bundle/airindent.vim/plugin/airindent.vim
1
2
3
4
5
6
fu! s:air_auto_indent_start()
  aug vimrc_air_indent
    au!
    au BufReadPost,BufUnload * call <SID>air_indent_move_line()
  aug END
endf

BufReadPost,BufUnloadによりバッファを開いた時、終了した時に全範囲のインデントを整え、直前の行に戻るコマンドを実行します。