2013年5月30日木曜日

vim でタブとスペースを変換する.

インデントが,スペースだったりタブだったりするのは歴史的背景だとか統合開発環境だと関係ないだとか色々な理由があるようだが,僕はスペースでインデントされてるのを見ると正直,反吐が出る.

vim使いの人ならわかってもらえると思うが,スペースでインデントされてるとカーソル移動にやたらと時間がかかるし,行頭がタブの終了場所ではなく,本当の行頭になってしまう.

(それぐらいの設定は.vimrcに書けとか言わないで!)

もしどっちでも良いと思っている人がいたら,この機会に是非すべてタブで統一していただきたいところである.

とは言っても,そんな我儘ばかりも言っていられないし,自分で対処するほうが結果的には早いので,vimで複数の連続したスペースをタブに変換する方法.

スペースをタブに変換する場合
:set noexpandtab
:retab 4

タブをスペースに変換する場合
:set expandtab
:retab


で,まあ当然自動化できるわけで,.vimrcに書くならこんな感じ

:set noexpandtab
:set tabstop=4
:set shiftwidth=4
:set softtabstop=0

noexpand
タブをスペースに変換しない(デフォルトなので書かなくても良い)

tabstop
タブをスペース何個分で表示するか.

shiftwidth
シフトオペレータ(>>)やautoindentで挿入される量.

softtabstop
タブを押した時にスペース何個分カーソルが進むか(tabstopよりも優先順位が高い).0に設定するとtabstopの値になる.

色々と複雑だが,上のように書いておけばもれなくタブ=スペースx4になるので,あとはファイルを開いた時に,

:retab!

とすれば,スペースがタブに変換される.ついでに,

:set autoindent

なんかも書いておくと良い.






0 件のコメント:

コメントを投稿