the Minnu's Filer2

Meta + ?というのはESCAPEキーを押してすぐ?キーを押すという意味です。端末によってはAlt + ?でいける端末もあります。または設定でかえられる場合もあります。このキーバインドはAlt + ? でいける端末じゃないと辛いです。

## 使い方

### カーソル移動

カーソルキーや, PAGE UP, PAGE DOWNキー、CTRL-P,N,B,F,A,E,D,Uでカーソル移動(emacs風)

### ディレクトリ移動

Enterキーでカーソル下のディレクトリに移動
BSキー、CTRL-Hキーで親ディレクトリに移動
'\'キーでルートディレクトリに移動
'~'キーでホームディレクトリに移動

### マーク操作

Spaceでファイルマーク(反転)
HOMEで全ファイルマーク(反転)
ENDで全ファイルマーク(反転。ディレクトリ含む)
*でマークメニュー。glob_mark "*", "*", "*", "*"は第一引数はファイル名(ワイルドカードで指定可能)、第二引数は所有ユーザー(*はすべてのユーザー）、第三引数は所有グループ(*はすべてのグループ)、第四引数はパーミッション(*はすべてのパーミッション)、regex_markはファイル名が正規表現による指定
例)
拡張子がcppで所有者がdaisuke所有グループがwheel,パーミッションはなんでもいいファイルのマークをオンにする
glob_mark "*.cpp", "daisuke", "wheel", "*"
toggle mark? no
toggle markというのはマークの反転で、マークがonならoffにoffならonになります。toggle markしないと単にonになります。
toggle markはこういう場合に使いやすいです。
拡張子がすべてcppのファイルをマークしたいがmから始まるファイルや所有者がrootのファイルはマークを外したい
glob_mark "*.cpp", "*", "*", "*"
toggle mark? no
glob_mark "m*.cpp", "*", "*", "*"
toggle mark? yes
glob_mark "*.cpp", "root", "*", "*"
toggle mark? yes
逆にtoggle markしない場合はこいうときに。
拡張子がcppとcのファイルをマークしたい
glob_mark "*.c", "*", "*", "*"
toggle mark? no
glob_mark "*.cpp", "*", "*", "*"
toggle mark? no
[で範囲選択マーク開始
]で範囲選択マーク終了
ESC, CTRL-Gでマークをクリア
マークすると一括操作ができる

### ファンクションキーを使った操作

F1で全てのファイル操作メニュー
F2で改名
F3で属性変更
F4でファイル編集
F5でマークファイルをコピー
F6でマークファイルを移動
F7でマークファイルをリンク
F8でごみ箱
F9でディレクトリ作成
F10で新規ファイル
F11で実行
F12でコマンドラインへ移行

### ファイル操作

Meta+cでマークファイルをコピー
Meta+Cでメニューからコピー方法を選んでコピー
Meta+mでマークファイルを移動
Meta+Mでメニューから移動方法を選んでファイル移動
Meta+dでゴミ箱($HOME/mtrashbox)へ移動
Meta+Dでメニューから削除方法を選んでファイルを削除
Meta+rで改名
Meta+Rで改名2
マークしてMeta+rで正規表現による改名。(例) gsub_rename /(.+)\.(c$|cc$)/, "\\1.cpp" でマークファイルの拡張子c,ccをcppに改名。
Meta+nで新規ファイル作成
Meta+Nでその他の新規ファイル作成
Meta+kで新規ディレクトリ作成
Meta+lでマークファイルのシンボリックリンクを作成
Meta+Lでシンボリックリンク作成2
Meta+eで編集
Meta+Eでファイル名を指定して編集
Meta+vでページャの起動
Meta+aでファイルの属性変更メニュー
Meta+pで圧縮
Meta+Pで圧縮2
Meta+uで解凍
Meta+Uで解凍2
Meta+gで文字列検索。行番号が書いてある行でEnterを押せば$EDITORがその行番号で起動する。
Meta+Gでメニューから文字列検索
Meta+bで現在のディレクトリでコピーファイルの作成
#でsudoによるファイル操作

### コマンドライン操作

Meta+hでコマンドライン
Meta+Hでコマンドラインメニュー
:でシェル起動
!でGUIファイルマネージャー起動
Meta+xで実行
マークしてENTERで%m（マークファイルに展開されるマクロ)を書いてコマンドラインに移行。
Meta+Xでrubyスクリプトの実行。マーク中のファイルの配列を得たい場合はadir_markを使ってください。
例)マークファイル全てのファイルの名前にaを加えたい。
adir_mark().each do |f|
File.rename(f, f+"a")
end
TABで補完。TABを2回押すと補完候補のメニュー選択。
ディレクトリ指定時はCTRL-Wの後方単語削除が便利というか必須です
CTRL-Rでヒストリ検索。cdplayCTRL-Rでcdplayを含むヒストリを検索。
meta-hで現在入力中のコマンドのman
先頭にスペースがあるとヒストリにコマンドを追加しない。
zshのように一部のコマンドに細やかな補完があります。ためしにkill [TAB]を押してください。
apt-get, dpkgのパッケージ名補完があります。Debian系のディストリビューションでは便利に使ってもらえると思います。
Meta+1-9でCTRL-Zでサスペンドしたジョブを前面に出すことができます。

### インクリメンタルサーチ

英字キーをそのまま打つとインクリメンタルサーチ。インクリメンタルサーチの入力があるときにMeta+上キー（Meta+CTRL-P)で後方一致を再検索, Meta+下キー(Meta+CTRL-N)で前方一致を再検索, SPACEでマークして前方一致を再検索。
migemoは単語の区切りを大文字で英字を入力することでマッチします。
例)
01ほげ
/01Hoge
千と千尋の神隠し
/SenToChihiroNoKamikakusi

### スーパーインクリメンタルサーチ

実行前にキャッシュを作っておかないといけない。キャッシュは$,sにより作られる。
Fにより起動。ファイル名を入力すればそのファイル名にマッチするファイルが全ハードディスク上から探される。一度に表示される候補数は17まで。.mfilerのsisearch_candiate_max_asciiにより候補数が増やせる。増やしてもあまりマシーンパワーは要らない。
migemoもライブラリがあり.mfilerのsisearch_migemoをtrueにすれば有効になる。候補の一番最後に一つだけ表示される。.mfilerのsisearch_candidate_max_migemoにより候補数は増やせるがマシーンパワーがかなり必要。
例)
F,messages,ENTER → /var/log/messageに移動
F,onGaku, ENTER - /home/daisuke/音楽に移動

### 漢字ファイル名エンコード変換

$のfilename_kanjicodeでファイルシステムのエンコードが指定できます。
unknownの場合は端末のエンコードとファイルシステムのエンコードが同じだと仮定します。端末のエンコードと異なるファイル名の場合、エンコードを自動判別して端末のエンコードに変換して表示します。
filename_kanjicodeが指定された場合
指定されたファイルシステムのエンコードが端末のエンコードに変換されて表示されます。
ファイルシステムのエンコードが指定された場合、コマンドラインの実行前にコマンドラインがファイルシステムのエンコードに変換されてコマンドが実行されるので注意してください。(端末のエンコードがutf8でもファイルシステムのエンコードがeucjp ならecho "漢字">>fileのコマンドはfileにeucjpで漢字と入力される)

### ファイル検索

findを利用してファイルを条件により検索し、その検索にマッチするファイルを表示する機能。Meta+Fにより起動。allはカレントディレクトリ以下のすべてのファイル。nameはファイル名による検索。regexは正規表現による検索。検索対象はパスも含む。例えばカレントディレクトリの./abcというファイルは"abc"はマッチせず".*abc*"がマッチする。modified timeはX日以内に修正されたファイル、modified minはX分以内に修正されたファイル、userはそのファイルの所有者、groupはファイルのグループ、permisionは引数のパーミッションと同じファイル。例えば、755ならパーミッションが755のファイルにマッチ。-111なら実行権のあるファイルにマッチ。sizeは-120cで120バイト未満のファイル+120cで120バイトより大きいファイルにマッチ。-100kで100kバイト未満のファイルにマッチ。typeはfでレギュラーファイル、dでディレクトリ、lでシンボリックリンク、sでソケット、pで名前つきパイプ、bでブロックファイル、cでキャラクタースペシャルファイルにマッチ。詳しくはfindのマニュアルを見てください
gr(e)pは文字列を含むファイルを検索して表示する。gr(E)p -Rはカレントディレクトリから再帰的に文字列を含むファイルを検索して表示。
(l)ocateはハードディスク内でマッチするすべてのファイルを表示。
(w)ild cardはワイルドカードにマッチするファイルを表示。**/*.cでカレントディレクトリ以下のすべてのcファイルを表示。*/*/*.cで第三層目にあるcファイルを表示。区切りは\0で区切る。*.{c,cpp,h}\0etc/*.rbなど。
ディレクトリを移動すれば仮想ディレクトリを終了する。
ESC, CTRL-Gを押せば仮想ディレクトリを終了する。

### プレイリスト

好きなファイルで構成した仮想のディレクトリを作成する。
ファイルのフルパスが１行ごとに記述された.listという拡張子のファイルを作成してください。そのファイルを選択してEnterを押せばプレイリストが始まります。
mfiler2を利用してプレイリストファイル(.list)を作成することもできます。Nを押してplay (l)istを選択してください。好きなファイル名を指定してください。その後そのプレイリストに加えたいファイルに移動して$のその他メニューを選んでadd cursor file to making playlistを選択してください。そのカーソル下のファイルがプレイリストファイルに追加されます。
この機能とソート無しを組み合わせれば任意の順番でファイルを並び替えたファイルリストが作成できます。スクリプトや%m1で利用すれば便利です。
プレイリストには絶対パス表示のstart_playlist2と相対パス表示のstart_playlistがあります。
ディレクトリを移動すれば仮想ディレクトリを終了する。
ESCを押せば仮想ディレクトリを終了する。

### ソート

sでソートの設定ができます。
nameは名前順でソート。extensionは拡張子順。sizeはファイルサイズ順。timeは更新時間順。permissionはパーミッション順。userはユーザー名順。groupはグループ名順。randomはランダムにソート。noneはソート無し。toggle dir upはソート時ディレクトリを上に上げるかどうか。reverseは逆順。

### 画面モード

Vで画面モードが設定できます。
2dir (a)llは２画面モード。1dir(1)は１画面１行表示。1dir(2)は1画面２行表示。1dir(3)は１画面３行表示。1dir(5)は一画面５行表示。
toggle focusbackはファイル名がはみだした場合、ファイル名の後半部分を表示。toggle removedirはファイル名にディレクトリ名が付く場合、ディレクトリ名を省く（仮想ディレクトリ用)。toggle colorはカラーモードにするかどうか。toggle mtimeは更新時間を表示するかどうか。toggle sizeはサイズを表示するかどうか。toggle userはユーザーを表示するかどうか。toggle groupはグループを表示するかどうか。toggle permissionはパーミッションを表示するかどうか。toggle nlinkはリンク数を表示するかどうか。toggle list modeは一覧表示にする。もう一度選ぶと元のモードに戻る。toggle nameonly modeは名前だけ表示する。もう一度選ぶと元のモードに戻る。

2dir (a)llは２画面モード。1dir(1)は１画面１行表示。1dir(2)は1画面２行表示。1dir(3)は１画面３行表示。1dir(5)は一画面５行表示。
toggle focusbackはファイル名がはみだした場合、ファイル名の後半部分を表示。toggle removedirはファイル名にディレクトリ名が付く場合、ディレクトリ名を省く（仮想ディレクトリ用)。toggle colorはカラーモードにするかどうか。toggle mtimeは更新時間を表示するかどうか。toggle sizeはサイズを表示するかどうか。toggle userはユーザーを表示するかどうか。toggle groupはグループを表示するかどうか。toggle permissionはパーミッションを表示するかどうか。toggle nlinkはリンク数を表示するかどうか。toggle list modeは一覧表示にする。もう一度選ぶと元のモードに戻る。

### ディレクトリスタック

CTRL-Tで現在のディレクトリをタブ化
CTRL-Wで現在のディレクトリを削除
Meta+0でタブを前面にだす

### ディレクトリウィンドウ操作

Meta+oで左右のディレクトリウィンドウのコピー。１画面時カーソル下のディレクトリを開く
Meta+Oで左右のディレクトリウィンドウのコピー2
Meta+wで左右のディレクトリウィンドウの交換
TABで１画面時２画面にする。２画面時反対側のディレクトリに移動する
Meta+qで２画面時１画面にする。１画面時mfiler2を終了する

### ファイルのコピペ

ファイルをマークしてください。その後$ cでコピーをして、好きなディレクトリに移動して$ vすればマークしたファイルがそのディレクトリにコピーされます。$ xの切り取りはファイルを移動します。

### マスク

+のglob mask, regex Maskでマスクを設定できます。
マスクを設定するとマスクと一致するファイルしか表示されません。glob maskはグロブ（ワイルドカード, *, a[cd]eなど)によってマスクを設定します。regex Maskは正規表現によるマスクです。
引数はglob_mask(マスク名, ユーザー名, グループ名, パーミッション)です。
マスクを終了するにはもう一度マスクを設定するか.(ドット)を押せばいいです。
"."キーでドットファイルの表示・非表示

### フィルター

+のメニューから選択して実行してください。
フィルターをかけてファイルを絞り込むことができます。これはファイルの再読み込みも発生しませんし、連続してフィルターをかけることもできます。
ただし、もう一度ファイル読み込みが発生すると解除されてしまいます(CTRL-Lを押すや、ディレクトリを移動するなど)
glob_filer グロブ, ユーザー, グループ, パーミッション, ディレクトリー, シンボリックリンク, レギュラーファイル
使用例)
Meta+f, allでカレントディレクトリ以下のすべてのファイルを表示する。
glob_filter "*", "*", "*", "*", false, true, true
ディレクトリをフィルターにかけて消し見やすくする
glob_filter "*", "root", "*", "*", true, true, true
rootなファイルだけを表示する
glob_filter "*.cpp", "*", "*", "*", true, true, true
拡張子がcppのファイルを表示する。
目的のファイルが見つかった。

### 他のX端末でコマンド実行

コマンドを別のX端末上で実行する機能
zで次回のコマンド実行がそうなる
Zでもう一回Zを押すまでコマンドの実行がそうなる
コマンドラインではMeta-zを入力するか%tを付けて実行すればそうなります。
注意)この機能を使うためにはXの起動時に環境変数$EDITORにエディッタが, $PAGERにページャ, $SHELLにシェルが設定されている必要があります。設定されていないとeでのファイルの編集などが機能しません。
cygwinで使うにはckが$PATHの通ったディレクトリにある必要があります。
コマンドは$SHELLで指定されたシェル上で実行されることに注意してください。

### GNU screenを使った仮想端末機能

疑似タブ付き端末。コマンドの同時並列実行が可能になる。
GNU screen上だとコマンド実行が仮想端末上で行われる。mfiler2はscreen上で実行されているかどうか$TERMを見て判断する。判別に失敗する場合は/usr/local/etc/mfiler.rb($HOME/.mfiler)のoption_gnu_screenをtrueにする必要あり。
注意)GNU screen上でmfiler2を使う場合はscreenを起動する前に環境変数$EDITORにエディッタが, $PAGERにページャが, $SHELLにシェルが設定されている必要があります。設定されていないとeでのファイルの編集などが機能しません。
全てのシェルコマンド実行がバックグランド実行になります。mfiler2上で実行したい場合はコマンドラインに%sをつけてください。
コマンドは$SHELLで指定されたシェル上で実行されることに注意してください。

### その他

Meta-Leftキーで戻る
Meta+jでディレクトリの移動用メニューが開きます。add current path to jump menuでディレクトリを追加。一つめの引数はタイトル、二つ目の引数はバインドするキー。delete jump menuでディレクトリを選んで削除。clear jump menuでディレクトリのクリア。終了時に設定したディレクトリは保存されます。
Meta+Jでディレクトリ移動メニュー
"^"キーでマークファイルをカーソル位置に移動
Ctrl-Lで画面の再描写
Meta+iでファイルの情報表示。directoryならサイズ合計。それ以外はfileコマンドの実行。
$でその他のメニュー。
Meta+Kでコンパイル(make)ファイル名と行番号のある行でEnterキーを押せば$EDITORが起動します。
Meta+yでユーザーオリジナルコマンド
オリジナルのコマンドを追加するには/usr/local/etc/.mfilerを$HOME/.mfilerにコピーして編集してください。
@でドロップ用ウィンドウ表示
?でヘルプ
CTRL-Cで終了