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)で開きなおしてくれるので、そのまま編集できます。