Vim をただのエディタとは思っていない、Vim 使いの「ブイ」(仮名)です。この連載も続きに続いて第 11 回となりました。11 回目のテーマは「特殊ファイルの編集」です。Vim はテキストエディタですが、zipや tar といった一部のバイナリファイルを開くことができます。さらに、リモートにあるファイルをローカルの Vim で直接編集することができます。
1 Vim で圧縮ファイルを開く¶
さて、では Vim 上で圧縮ファイルの中身を除いてみましょう。Vim 内で次のコマンドを実行します。hoge.zip はカレントディレクトリにある zip ファイルとします。
:edit hoge.zip
上記のコマンドを実行すると、ファイルブラウザが起動し、zip ファイルの中身を覗くことができたと思います。さらにファイル名の上で <CR>
キーを入力すると、そのファイルの中身を見ることができます。Vim は zip ファイルだけではなく、bzip2 や gz, tar ファイルを展開して中身を表示することができます。
業務ではメールで圧縮ファイルが送られてくることがよくあります。圧縮ファイルの中身を確認して、メールの返信をしないといけない、そんなときにいちいち解凍コマンドを実行するのは手間です。しかし Vim を使用しているなら、ファイルを解凍しなくても中身を簡単に読むことができます。
2 Vim でリモートファイルを開く¶
1 で紹介した機能は外部プラグインである netrw とそれに関連するプラグインにより実現されています。netrw は Vim に標準で添付されているため [1]、標準機能のように使用することができます。
netrw は “NETwork Reader Writer” の略で、本来はリモートファイルをローカルの Vim 上で開くためのプラグインです。netrw でリモート (SSH 先) にあるファイルを開く場合、次のコマンドを実行します。
:edit scp://hostname/path/to/file
リモートのファイルを開く場合、ファイルのパスをプロトコル風に指定します。ssh 先のファイルの編集ですが、プロトコル名は “ssh” ではなく “scp” となっているの で注意してください。この “scp” とは内部で使用しているコマンドの名前です。netrw は ssh 先から scp コマンドでローカルにファイルをコ ピーしていだけなのです。”hostname” とは接続先のホスト名、”path/to/file” とは編集するファイ ルへのパスを指定します。そのパスがディレクトリの場合、最後に “/” を付加するのを忘れないでください。netrw はリモートのファイルだけでなく、リモートのディレクトリを開くこともできます。
開いたファイルは、通常のファイルと同様に :w
コマンドを用いて保存することができます。
そもそもリモートにある Vim を使わず、ローカルにある Vim で編集するとなぜ嬉しいのでしょうか。リモートには Vim がインストールされていないことも (時には) ありますし、Vim がインストールされていたとしても自分が普段使用している Vim のバージョンより古いことが多いです。さらに、リモートの環境に Vim の環境を整えるのは難しく、自分が普段使用している Vim とは異なる設定で作業しなくてはいけません。リモートの Vim は通信のオーバーヘッドがあるため、ローカルの Vim よりも動作が遅くなるという問題もあります。リモートのファイルをローカルで編集することでこれらの問題を解決することができるのです。
ただし、netrw は ssh のセッションを保存していません。この方式だと接続中に動作が不安定にならないという利点はあるのですが、ファイルを編集する度に ssh の認証ダイアログが出てくると大変です。この機能を使用する場合は、公開鍵認証を設定しておくことを推奨します。
netrw は ssh 以外にも、ftp, sftp, http, rcp, rsync といったプロトコルを扱うことができます。詳細は、:help netrw
を参照してください。
3 Vim でディレクトリを開く¶
実は、Vim はローカルにあるディレクトリを開くことができます。これも netrw の機能です [2]。ディレクトリを開くためには、次のコマンドを利用します。
:edit ディレクトリ名
または
:Explorer ディレクトリ名
:Explorer
は入力が大変なので、:edit
をそのまま使う人のほうが多いでしょう。ディレクトリを開いたら、<CR>
を押すとそのファイルを編集することができます。
次回のテーマは「 Vim と日本語」についてです。
[1] | Vim は Emacs とは異なり、標準で添付されているプラグインの数が極めて少ないです。それは組み込みの機能を強力にするという Vim の思想から来るものでしょう。標準で添付されている netrw はかなり珍しい例です。 |
[2] | 正確には、もともとローカルファイルを開くための explorer.vim というものがあり、netrw に統合されたのです。 |