Next: , Previous: , Up: 目次   [Index]


特殊なファイルを編輯する

*usr_23.txt*	For Vim バージョン 8.1.  Last change: 2006 Apr 24

		     VIM USER MANUAL - by Bram Moolenaar

			   特殊なファイルを編輯する

この章では特殊なファイルの編輯について說明します。壓縮ファイルや暗號化されたファイルを編輯できます。多少不便ですが、バイナリファイルも編輯できます。インターネット越しにファイルアクセスする方法も說明します。

|23.1|DOS、Mac、Unix形式のファイル
|23.2|インターネット上のファイル
|23.3|暗號化
|23.4|バイナリファイル
|23.5|壓縮ファイル

DOS, Mac, Unix 形式のファイル

その昔、舊いテレタイプマシンは改行のために 2 つの文字を使つてゐました。1 つ目の文字 (キャリッジリターン。<CR>) でキャリッジを初期位置に戾し、2 つ目の文字 (ラインフィード。<LF>) で用紙を送つてゐたのです。

コンピュータが登場した頃は記憶裝置がとても高價だつたので、改行のために 2 文字も使ふ必要はないと考へる人たちがひました。UNIX の人々は <LF> だけを使つて改行することに決めました。Apple の人々は <CR> を標準としました。MS-DOS (と Microsoft Windows) の人々は <CR><LF> を使ひ續けました。

このやうな事情により、異なるシステム閒でファイルを交換するときには改行文字の非互換が問題になります。Vim はファイル形式を自動的に認識し、それを適切に處理することができます。

fileformats’ オプションを設定して使用するファイル形式を指定してください。例へば、最初に Unix 形式を試し、次に MS-DOS 形式を試すには、次のやうに設定します:

:set fileformats=unix,dos

ファイルを開いたときのメッセージにファイル形式が表示されることがあります。システム標準のファイル形式だつた場合は表示されません。例へば、Unix で Unix 形式のファイルを編輯するときに注意は必要ないでせう。しかし、DOS 形式のファイルなら注意が必要です。次のやうなメッセージが表示されます:

"/tmp/test" [dos] 3L, 71C

Mac 形式なら "[mac]" と表示されます。

ファイル形式は ’fileformat’ オプションに設定されます。現在のファイル形式を確認するには、次のコマンドを使ひます:

:set fileformat?

Vim では次の 3 つの名前が使はれます:

unix<LF>
dos<CR><LF>
mac<CR>

Mac 形式を使ふ

Unix では <LF> が改行文字です。行の途中に <CR> 文字がくることは普通はありません。ただし、Vi (と Vim) のスクリプトでは <CR> 文字が使はれることがあります。

Macintosh では <CR> が改行文字なので、行の途中に <LF> 文字を使ふことができます。つまり、<CR> と <LF> を兩方含んでゐるファイルは、ファイル形式を 100% 確實に判別することはできません。

そのため、Unix では Mac 形式の改行はチェックされません。おそらく、Unix で Mac 形式のファイルを編輯することはあまりないでせう。どうしても Mac 形式のファイルを使ひたい場合は ’fileformats’ オプションに "mac" を追加してください。

:set fileformats+=mac

これで、Mac 形式の改行が認識されるやうになります。ただし、正しく認識できないことがあるので注意してください。

ファイル形式を指定する

古き良き Vi で MS-DOS 形式のファイルを開くと、すべての行末に ‘^M’ が付きます。(‘^M’ = <CR>)。Vim では改行が自動認識されるので、そのやうなことにはなりません。敢へて昔の動作を再現したい場合は、ファイル形式を指定してください:

:edit ++ff=unix file.txt

"++" に續いてオプション名を指定することで、コマンドの設定を變更できます。’fileformat’ なら "++ff" です。もちろん "++ff=mac" または "++ff=dos" と設定することもできます。

この方法ではすべてのオプションを設定できません。現在のところ "++ff" と "++enc" だけが實裝されてゐます。"++fileformat" や "++encoding" のやうにフルネームでも指定できます。

ファイル形式の變換

fileformat’ オプションを使つてファイル形式を變換できます。例へば、README.TXT を MS-DOS 形式から UNIX 形式に變換してみます。まづ、MS-DOS 形式のファイルを開きます:

vim README.TXT

ファイル形式は自動的に認識されます。では、ファイル形式を變換しませう:

:set fileformat=unix
:write

ファイルは Unix 形式で保存されます。

インターネット上のファイル

誰かがあなたにメールを出しました。メールには URL が書いてあります。例:

そのことならここに情報があつたよ。
        ftp://ftp.vim.org/pub/vim/README

他のプログラムを使つてファイルをダウンロードし、それを Vim で開いても構ひませんが、もつと簡單な方法があります。

カーソルを URL の上に移動して次のコマンドを入力してください。

gf

運が良ければ、ダウンロード用のプログラムが實行され、ダウンロードされたファイルが開かれます。

新しいウィンドウで開きたい場合は "CTRL-W f" を使つてください。 ダウンロードが失敗してエラーメッセージが表示された場合は、次のやうな原因が考へられます。

殘念ながら、エラーの原因を把握するのは非常に困難です。エラーが起きた場合は手作業でファイルをダウンロードしてください。

インターネット經由のファイルアクセスは netrw プラグインによつて實行されます。現在、以下の形式の URL が認識可能です。

ftp://ftp を使ふ
rcp://rcp を使ふ
scp://scp を使ふ
http://wget を使ふ (讀込專用)

Vim 自身は通信機能を持つてゐません。インターネットアクセスは外部プログラムを使つて實行されます。"ftp" と "rcp" はほとんどの Unix システムで利用できるはずです。"scp" と "wget" は別途インストールする必要があるかもしれません。

":edit" や ":split" などのコマンドでファイルを開くときにも URL を指定できます。もちろん保存もできます (http:// は不可)。

パスワードの指定方法など、詳細は |netrw| を參照してください。

暗號化

情報を祕密にしたいことがあると思ひます。例へば、生徒と共有のコンピュータを使つてテストを作成してゐる場合、賢い生徒にテスト問題を盜み見られてしまふやうでは困ります。Vim の暗號化機能を使つて情報を保護しませう。

ファイルを暗號化するには、Vim の起動引數に "-x" を指定します。例:

vim -x exam.txt

プロンプトが表示されるので、ファイルを暗號化または複號するための鍵を入力してください:

暗號化用のキーを入力してください:

愼重に祕密鍵を入力してください。入力した文字は表示されません。代はりにスター (‘*’) が表示されます。入力ミスがあると大變なので、念のため、もう一度同じ鍵を入力してください:

もう一度同じキーを入力してください:

ファイルの編輯方法は通常のファイルと同じです。祕密にしたいことを書き込んでください。ファイルを保存すると、暗號化されて保存されます。

次にそのファイルを Vim で開くと、鍵を入力するためのプロンプトが表示されます。既に暗號化されたファイルを開くときは "-x" 引數を指定する必要はありません。通常の ":edit" コマンドで開くこともできます。暗號化ファイルにはマジック文字列が埋め込まれてゐるので、Vim は暗號化ファイルを認識できます。

他のプログラムで暗號化ファイルを開くと、ゴミが表示されます。たとへ Vim で開いたとしても、不正な鍵を使つた場合は、やはりゴミが表示されます。鍵が正しいかどうかを判斷する機能は Vim にはありません (暗號をより鞏固なものにするため)。

暗號化と解除

ファイルの暗號化を解除するには、’key’ オプションに空文字を設定します:

:set key=

空に設定してからファイルを保存すると、暗號化されずに保存されます。

key’ オプションに鍵を設定すれば暗號化を有效にできますが、それは安全ではありません。パスワードがコマンドラインに表示されるので、肩越しに盜み見られてしまひます。

安全に暗號化を有效にするには、":X" コマンドを使つてください。"-x" 引數を使つたときと同じプロンプトが表示されます:

:X
暗號化用のキーを入力してください: ******
もう一度同じキーを入力してください: ******

暗號化の限界

Vim で用ゐられてゐる暗合アルゴリズムはそれほど協力ではありません。いたづら小僧を擊退するには十分ですが、暗號エキスパートのハックには耐へられません。スワップファイルとアンドゥファイル中のテキストは暗號化されてゐます。しかしながら、これはブロックによるブロックが行はれ、パスワードをクラックするのに必要な時閒を減らすかもしれません。スワップファイルを使はないやうにすることもできますが、Vim はすべてのテキストをメモリにのみ保持してゐるので、クラッシュした時にそれまでの作業を失つてしまふことになるでせう。あなたがバッファをアンロードした後にアンドゥができなくなる不利益があるだけですが、アンドゥファイルも無效にすることができます。

スワップファイルを使はないやうにするために、コマンドライン引數に "-n" を與へます。例へば、暗號化されたファイル "file.txt" をスワップファイル無しで開くには、次のコマンドを使ひます:

vim -x -n file.txt

既にファイルを編輯中なら、次のコマンドでスワップファイルを無效にできます:

:setlocal noswapfile

スワップファイルが無いといふことは、リカバリできないといふことです。普段よりまめにファイルを保存し、クラッシュによるリスクを抑へませう。

メモリ上のファイルは暗號化されてゐません。權限さへあれば誰でもエディタのメモリを調べてファイルの內容を知ることができます。

viminfo ファイルを使つてゐる場合、レジスタの中身が平文で保存されることにも注意が必要です。

本氣でファイルを祕密にしたいなら、ネットワークから切り離したマシンで作業し、强力な暗號化ツールを使ひ、そのマシンを使はないときは金庫に入れておきませう。

バイナリファイル

Vim はバイナリファイルを編輯できます。專用ツールではないので若干の制限はありますが、ファイルを讀み込み、編輯し、保存できます。

Vim の便利な (そして今は邪魔な) 機能を無效にするために、"-b" 引數を付けて Vim を起動してください:

vim -b datafile

binary’ オプションがオンになります。これにより、餘計な機能が無效になります。例へば、’textwidth’ が 0 に設定され、自動整形が無效になります。そして、ファイルは Unix 形式で讀み込まれます。

バイナリモードを使ふと、例へば實行ファイルのメッセージを變更できます。ただし、文字を插入したり削除したりするとプログラムが動かなくなつてしまふので注意してください。"R" コマンドの置換モードを使ひませう。

バイナリファイルには非印字可能文字がたくさんあります。これを 16 進數で表示するには、次のやうに設定してください:

:set display=uhex

あるいは、調べたい文字にカーソルを移動して "ga" コマンドを使ひます。例へば、<Esc> の上で "ga" を實行すると、次のやうに表示されます:

<^[>  27,  Hex 1b,  Octal 033 ~

ファイルに含まれてゐる改行コードが少ない場合、’wrap’ オプションをオフにすると全體をざつくり眺めることができます:

:set nowrap

バイト位置

次のコマンドで現在のカーソル位置をバイト單位で表示できます:

g CTRL-G

冗長なメッセージが表示されます:

列 9-16 / 9-16; 行 277 / 330; 單語 1806 / 2058; バイト 10580 / 12206

末尾の數字に注目してください。カーソルの位置とファイルの大きさがバイト單位で表示されてゐます。’fileformat’ の設定による改行の種類もちやんと考慮されてゐます。

指定したバイト位置に移動するには "go" コマンドを使ひます。例へば、2345 バイト目に移動するには、次のやうにします:

2345go

XXDを使ふ

本物のバイナリエディタは、テキスト表示と 16 進表示の 2 通りの方法でファイルを表示します。"xxd" を使つてファイルを變換すれば Vim でも同じやうに表示できます。"xxd" は Vim に附屬してゐます。

まづ、ファイルをバイナリモードで開いてください:

vim -b datafile

そして、xxd を使つて16進數ダンプ形式に變換します:

:%!xxd

テキストは次のやうに變換されます:

0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;'1.".....i.59.

あとは、好きなやうにテキストを編輯してください。普通のテキストを編輯するのと同じです。16 進數部分を變更しても、テキスト部分は更新されません。逆も同樣です。

編輯が濟んだら變換し、テキストに戾します:

:%!xxd -r

16 進數部分への變更だけが反映されます。右側のテキスト部分への變更は無視されます。

詳細は xxd のマニュアルを參照してください。

壓縮ファイル

これは簡單です。壓縮ファイルを編輯するのに特別な操作は必要ありません。ただファイルを開くだけです。"gzip" プラグインが展開の面倒をみてくれます。ファイルを保存すれば勝手に壓縮してくれます。

現在、以下の壓縮形式がサポートされてゐます:

.Zcompress
.gzgzip
.bz2bzip2

實際の壓縮と展開には上記のプログラムが使はれます。無い場合は別途インストールしてください。


Next: , Previous: , Up: 目次   [Index]