Vimのちょっと前のアップデート
でbreakindent
というオプションが加わって
折り返された部分もインデント出来る様になった様で、
しばらく気になったままおいておきましたが
Vimをアップデートして色々設定してみました。
breakindent (bri)
breakindent
はVim 7.4, patch 338から加わったオプションで
1、
wrap
オプションを有効にしている時なんかに
折り返された部分もインデントされるようにするオプションです。
こんな感じで、もともと折り返された部分は左端から始まりますが、 それがインデントされたコラムから始まる様になります。
breakindentopt (briopt)
breakindent
を有効にした時の動作を設定するオプションです。
設定できるのは(カッコ内はデフォルト値):
min:{n}
(n=20): 折り返した後の行では、{n}文字以上は必ず表示する。(インデントが深すぎる場合に、右端でごちゃごちゃしないように。)shift:{n}
(n=0): 折り返した行でn文字さらにインデントする。(下のsbrをセットしていない場合はインデントされた後にさらにshowbreak
が入ってずれるので注意。)sbr
(セットされていない):showbreak
で設定した値を折り返し行の先頭に表示する。sbr
がセットされてない時はインデントの後にshowbreak
を表示し、その後に行の内容を書き出す。
の3つ。
ただ、この値は最初にVimを開いた時には有効になるんですが、
Vimの中で新たにファイルを開いたりすると無効になります。
min
のデフォルトの20
に関しても無効になって0
になってしまいます。
上のgifではbreakindentopt
の値は設定していないのですが、
:help breakindent
でヘルプファイルを開いた後での作業ですが、
デフォルト値も無効化されて
一番短いbreakindent bri
の部分が右端で短くなってしまっていることが見えます。
まだ出来たばかりなので今後仕様が変更されるかもしれませんが 2、 取り敢えず新しく開いたファイルでも有効にしたいので、 autocmdを使って毎回ファイルを開いた時なんかに設定し直す様にしてみました。
現在の業折り返し設定
コレを含めたwrap
やlinebreak
等の行折り返し関連の設定はこんな感じにしています。
1 2 3 4 5 6 7 8 9 10 11 |
|
追記: 2014/07/15
autocmd
のとこで使ってるMyAutoGroup
は
他のところでも自分で定義するautocmd
に宛てていて、
.vimrc
の上の方で
augroup MyAutoGroup
autocmd!
augroup END
とリセットしています。
追記ここまで
wrap
に加えて設定しているlinebreak
は行を折り返す時に、
単語の途中とかで無理やり折り返さずに、良い感じの所で折り返してくれるオプションです。
linebreak
では、breakat
で指定された文字の部分で折り返します。
デフォルトではスペースに加えていくつかの記号が指定されていますが、
スペースだけの方が普通かな、という感じがしたら上のコメントしてある部分みたいに、
breakat
にスペースを指定します。
showbreak
の所は+
に加えて一文字の空白(\
)を入れています。
breakindent
関連の所は古いバージョンの場合にエラーを出さないように無視でするように設定。
breakindentopt
の所はBufEnter
で*
を指定しているので
全てのファイルを開く時にこの設定を有効にします。
特定のファイルのみの場合だけ有効にしたい場合は
1
|
|
みたく拡張子で指定してみたり。
上の設定だとこんな感じです。