改行文字
そういやまとめようと思っていながら今になってまとめる series 。 RTM の整理をしてたら出てきた task をつぶしてるだけとも言う。
で、実際のところは 'fileformat' と 'fileformats' の設定はどういう効果があるのかってハナシ。とりあえず :help 'fileformat' と :help 'fileformats' を読むと既存の file を buffer に読み込むときと新規に buffer を作るとき以外には関係ないようなのでその 2 つで分けてみる。それぞれ「読込」と「新規」という呼び方ね。まず表。
'fileformats' | ||
---|---|---|
設定あり | 設定なし | |
新規 | 'fileformats' の最初の値 | 'fileformat' の既定値 |
読込 | 'fileformats' と file の内容による | 'fileformat' の既定値 |
'fileformat' の既定値は help で確認可能。 Kaoriya さんとこのだったら "dos" 。あと「読込」かつ「 'fileformat' 設定あり」の詳細は help に詳しく書いてあるんだけど見落としやすい注意点としては以下。
- 'fileformats' に 2 つ以上の値を指定する & 「読込」の場合、値の「順番」は関係ない
2 つ以上指定されていると自動認識が働く
( 俺訳 ) と書かれているので指定する数に気をつける。- ただし新規 buffer の設定は順番が関係する ( 最初の値が使われる ) 点に注意。
- 値 "dos" と "mac" はどちらか一方しか実質的に有効でない。
というあたり。上記をひっくるめて考えると 'fileformats' の設定は実質以下の 8 通りしかないわけだ。
:set fileformats=
- すべての改行を 'fileformat' の既定値として取り扱う
:set fileformats=dos
- すべての改行を <CR><NL> として取り扱う
:set fileformats=unix
- すべての改行を <NL> として取り扱う
:set fileformats=mac
- すべての改行を <CR> として取り扱う
:set fileformats=dos,unix
- 既存 file の改行の取り扱いを <CR><NL> か <NL> かで自動判定し新規 buffer の改行は <CR><NL> として取り扱う
:set fileformats=unix,dos
- 既存 file の改行の取り扱いを <CR><NL> か <NL> かで自動判定し新規 buffer の改行は <NL> として取り扱う
:set fileformats=mac,unix
- 既存 file の改行の取り扱いを <NL> か <CR> かで自動判定し新規 buffer の改行は <CR> として取り扱う
:set fileformats=unix,mac
- 既存 file の改行の取り扱いを <NL> か <CR> かで自動判定し新規 buffer の改行は <NL> として取り扱う
そして 'fileformat' の操作は現在の buffer にしか効果がない。なので .vimrc に書いても無視される ( 起動時に最初の buffer が作られる前に .vimrc の処理をするはずなので 'fileformat' で変更すべき buffer 自体がないはず ) 。これ当たり前に思えるけど重要なんだよね。
というところ。少し複雑だけど「伝統」でもあるので仕方ない。