view: ファイルをvimのリードオンリーモードで読む

日本語を読む


先日のvimの文字コード判別のエントリ は、結局、小ネタといえないボリュームになってしまったので、今日こそは小ネタをひとつ。

先日紹介した設定で、vimで日本語のファイルの読み書きは容易になったはずです。しかし、日本語のファイルに「書き込む」必要がある事はそれほど多くなく、普段は単に読めればOK、という人も多いかと思います。

その用途には、less に文字コードの自動変換機能を追加した jless というソフトが有名ですが、これがインストールされていない環境も多く、自分の好き勝手に出来ないサーバーで途方に暮れる事もあります。

「読むだけ」の用途に便利

私は、以前紹介したiconvで、

$ iconv -f euc-jp Japanese.txt | less

などとしてしまう事が多いのですが、これだと、テキストの文字コードを指定しなければならないので、面倒ですよね。

せっかく、 vim に日本語の自動判別の機能を付けたのだから、

$ vim Japanese.txt

とするのも良いかもしれません。でも、本当に見るだけで良くて、編集する気が無いなら、以下のコマンドを試してみてください。

$ view Japanese.txt

view は、vimをリードオンリーモードで起動するための別名で、 "vim -R" と等価のものです。リードオンリーモードでは、バッファの編集は通常通り出来るのですが、":w"などとしてもファイルが上書きされなくなり、うっかりミスでファイルを書き換えてしまう事を防げます。

気が変わって編集したくなったら?

閲覧するだけのつもりだったのに、(ドキュメント中にtypoを見付けた、とかの事情で)突然編集したくなったら?

そんな時は、普通に修正した後、":w!" のように、保存系のコマンドに "!" を付けて実行すれば、何事も無く保存でき、同時にリードオンリーモードが解除されますので、以降は普通に保存できるようになります。

リードオンリーモードのフラグは、"readonly" という名の、バッファにローカルなbool値のオプションなので、":set ro" や ":set noro" とすれば自在にリードオンリーモードを設定/解除できます。"ro"は"readonly"、"noro"は"noreadonly"の短縮形ですね。(バッファにローカルなオプションですが、個人的には"set"が適切な場面が多いような気がします。)


ちなみに、lessでテキストファイルを閲覧中にも、突然ファイルを編集したくなる時があるかと思いますが、そんなときは v キーを押しましょう。そうすると、less は、そのファイルを、$VISUAL や $EDITOR の環境変数で指定したエディタ(無指定なら vi)で開きなおしてくれるので、そのまま編集できます。