file i/o #8: file

ex コマンド、file。
f[ile][file]
引数 file が指定された場合、現在のパス名を file へ変更する。

file コマンドはファイルの情報を表示する。ファイルが現在のパス名を持っている場合、それを含めて表示する。持っていない場合は、現在のパス名がないことを表示する。

編集バッファが行を持っている場合、現在の行番号と行の総数を含めて表示する。持っていない場合、編集バッファが空であることを表示する。

編集バッファが最後に書き込まれてから変更されている場合、そのことを含めて表示する。readonly オプションがセットされている場合、そのことを含めて表示する。

メッセージはその他のここに定義されていない項目を含めてもよい。

ということで、:f したり ^G したりすることで表示されるあれは割と実装によってまちまちだ。

  • vim 7.3 (香り屋版)
    "wasavi.js" [変更あり] 11622 行 --33%--
    "[無名]" --バッファに行がありません--
  • vim 7.3 (cygwin)
    "wasavi.js" 行 1 (全体 11622) --33%-- col 1
    "[無名]" --バッファに行がありません--
  • nvi 1.79
    wasavi.js: modified: line 2 of 11622 [33%]:
    /tmp//vi.ujMcQJZSaX: unmodified: empty file

表示する項目を大まかに分けると、

  • ファイル名。ファイルシステム上のパス名に割り当てられたそれか、割り当てられていないことを示す文字列
  • フラグ的なもの。変更済み、読み取り専用、等々。
  • バッファの状態。バッファ中のカーソル位置、またはバッファが空であることを示す文字列

ということになると思う。ということで、
"ファイル名" [フラグ的なもの] バッファの状態
ということにする。フラグが複数の場合はカンマで区切る。

こんな感じか。
とりあえずファイル操作系の ex コマンドはこれでだいたい実装したことになる。実はファイル名を入力する際の補完機能も作らないといけないのだが……。

Leave a Reply

Your email address will not be published. Required fields are marked *