netrwでファイルをコピー・移動する マーク機能の使い方
netrwでファイルをコピーしたいだけなのに、いきなりmcを押しても何も起きません。netrwのファイル操作は「マークを付けてから実行する」という、CUIファイラらしい2段階の手順を踏む必要があります。
| キー | これだけ覚える |
|---|---|
| mf | カーソル位置のファイルにマークを付ける/外す |
| mt | コピー・移動先のディレクトリを指定(target) |
mc / mm | マークしたファイルをtargetへコピー/移動 |
| mu | すべてのマークを外す |
マークの付け外し
| キー | 動作 |
|---|---|
| mf | カーソル位置のファイルにマークを付ける/外す |
| mu | すべてのマークを外す |
| mr | 正規表現(*などのワイルドカード)でまとめてマークする |
| mt | コピー・移動先のディレクトリを指定する(target設定) |
コピー・移動の手順
ファイルをコピーする場合、次の3ステップを踏みます。
1. コピー先のディレクトリでmtを実行(target指定)
2. コピー元のファイルでmfを実行(マーク)
3. mcを実行(コピー実行)
移動したい場合は最後をmmに変えます。目的地を先に指定してから対象を選ぶ、という順序は最初は戸惑いますが、慣れれば一般的なCUIファイラの操作感と大きくは変わりません。
mtで指定する移動先が深い階層にあると、そこへ辿り着くだけで手数がかかります。よく使う移動先はブックマークに登録しておくとgbだけで飛べるので、target指定と元ファイルの選択を行き来するのが楽になります。
| キー | 動作 |
|---|---|
| mc | マークしたファイルをtargetへコピー |
mm | マークしたファイルをtargetへ移動 |
| md | マークしたファイル同士の差分を表示 |
| mz | マークしたファイルを圧縮/展開 |
表の下2つは方向を自分で選びません。mdは2つ以上マークしたときだけ意味があり、mzはマークしたものが圧縮済みなら解凍、未圧縮なら圧縮、という向きの自動判定で動きます(:help netrw-mz)。同じキーで往復するので、いま何がマークされているかを見てから押すのが安全です。
マークを使わない単純な操作
新規作成や削除、リネームのようにマーク不要の操作もあります。
| キー | 動作 |
|---|---|
| % | 新規ファイルを作成 |
| d | 新規ディレクトリを作成 |
| D | カーソル位置(またはマークした)ファイル・ディレクトリを削除 |
| R | ファイル・ディレクトリをリネーム |
正規表現で複数ファイルをまとめてマークする
1つずつmfを押すのが面倒な場合は、mrでパターンを指定して一括マークできます。
mr *.log
ワイルドカードや正規表現で対象を絞り込めるので、拡張子ごとの一括削除や一括圧縮をしたいときにmfを連打するより早く済みます。
Windowsでの既知の制約
Windows環境では、マークを使ったコピー・移動が正常に動作しないことがあります。これはnetrwが内部的にUnix系のコマンドを前提にした処理を行っているためで、確実な回避策は見つかっていません。Windowsを主に使っていてファイル操作の頻度が高いなら、コピー・移動についてはOS標準のエクスプローラーや、NERDTreeのようなクロスプラットフォーム対応のファイラープラグインに任せたほうが安定します。
最初はtargetを指定せずにmcを押して「何も起きない」と戸惑いました。手順の順序さえ覚えてしまえば迷うことはなくなりましたが、複数ファイルを別々の場所に振り分けたいときは、targetを都度切り替える必要があって少し手間がかかります。単純な1対1のコピーなら十分実用的です。
まとめ
netrwのファイル操作はマークして実行する2段階方式です。手順さえ覚えれば移動・コピー・削除・圧縮まで標準機能だけで完結します。Windowsでのコピー・移動の不安定さだけは念頭に置いておくと安心です。圧縮のmzも同じマークをそのまま使うので、圧縮・解凍のために手順を覚え直す必要はありません。