Minnu's Filer2

English page.

# Minnu's filer2 のページ

PC-UNIX(Linux, Mac OSX, cygwin)のコンソール上で動作する2画面ファイラー(ファイル管理ソフト)です。Rubyインタプリタ搭載。

## ソースファイルのダウンロード

mfiler2-4.1.0.tgz ダウンロード

## インストール

### パッケージからのインストール

1. Fedora
yum install mfiler2
2. ArchLinux
yaourt -S mfiler2

### 依存ライブラリ・プログラム

端末制御ライブラリcursesに依存しています。大抵のディストリビューションではデフォルトで入っていると思いますが、Debianではlibncursesとlibncurses-devをインストールするのを忘れないでください。
オブジェクト指向スクリプト言語Rubyに依存しています。Rubyのパッケージをインストールしてください。Debianではruby1.8-devも忘れないでください。
エンコード変換ライブラリiconvがあれば漢字ファイル名のエンコードの変換機能が有効になります。
ruby gtk2があればファイルのドラッグアンドドロップを行う@によるmdndが有効になります。

### migemoの組み込みについて

migemoについてはMigemo: ローマ字のまま日本語をインクリメンタル検索を参照ください。
migemoを使うとインクリメンタルサーチで英字入力のままで漢字ファイル名がマッチします。
Migemoをmfiler2に組み込むためにはC/Migemoでバージョン1.3以上を落としてきて/usr/local以下にインストールしてください。(configureに--with-cflagで-Iや-Lなどを指定すれば別のディレクトリでもいけます)
libmigemo.so(cygwinの場合はlibmigemo.dll.a)があればconfigureがmigemoを検出してmfiler2をmigemo付きでコンパイルします。
mfiler2を実行してmfiler2がmigemoのライブラリを探すのに失敗した場合、/etc/ld.so.confにlibmigemo.soのあるディレクトリを記述して(通常/usr/local/lib)ldconfigを実行してください。

### コンパイルの仕方

1)tar xvfz mfiler2-version.tgz
2)cd mfiler2-version
3)./configure
(--prefix=インストールするディレクトリ --with-cflag=追加するコンパイル時のオプション(-I /home/daisuke/migemo -L /home/daisuke/migemoとするとmigemoのライブラリやインクルードファイルを/home/daisuke/migemo以下から探すようになる))
4)make
5)su
6)make install
環境変数$EDITORに好みのエディッタを、$PAGERにページゃを、$SHELLにシェルを設定してください。

## ヒストリー

2009年11月4日 4.1.0 cygwin-1.7に対応。
2008年3月4日 4.0.9b テストコードをアップしてました。修正。
2008年2月20日 4.0.9a /tmpに一時ファイルを作るのをやめました。タイトルの2004-2007を2004-2008年に変更。
2008年2月15日 4.0.9 ls | less, CTRL-Zでジョブをサスペンドした後フォワグランドにジョブをすると画面が固まるバグを修正。安定版にアップ。
2008年2月15日 4.0.8g Windows用のパッケージ作成
2008年2月6日 4.0.8g 「export A="ls -al"; $A」は実行できなかったが実行できるようになりました。
2008年2月5日 4.0.8f cygwinに対応
2008年2月1日 4.0.8c 64ビット環境に対応
2008年1月21日 4.0.8b 起動時日本語ファイルが化けるバグを修正。
2008年1月19日 4.0.8a スーパーインクリメンタルサーチのキャッシュを/tmp/mfiler2から$HOME/.mfiler2/に移動。再起動しても大丈夫になりました。
2008年1月18日 4.0.8 再アップしたのでバージョンをアップ。スーパーインクリメンタルサーチの候補を検索中固まった場合CTRL-Cでキャンセルできたのを辞めました。キー入力が速いと入力が捨てられてしまうのがストレスになるので。
2008年1月18日 4.0.7 スーパーインクリメンタルサーチ追加。
2008年1月5日 4.0.6 パイプのバグを修正。安定版にアップ。
2004-2007年のヒストリ

### バージョンアップ時注意点

version 4.0.0 マクロとコマンドがいろいろ変わっています。ドキュメントはなんとか用意したいと思っています。
version 3.1.6bでcmdline, shellの引数をもとに戻しました。
version 3.1.6aでcmdline, cmdline_noconvert, cmdline_convert, shellの引数が一つ増えました。$HOME/.mfilerを書き直すか消すかしてください。
version 3.1.1cで.mfinfoに互換性がなくなってます。一度~/.mfinfoを消してください。
version 3.0.9aで一部Cレベルのmfiler2関数が変わりました。マニュアルは追い付いていません。ちょっと整理を始めます。整理が終わったら、マニュアルも整理する予定です。
version 3.0.1dでcompletion_hookの仕様が変わりました。戻り値でファイル名の補完を呼び出すなどをしていたのをRubyの関数を呼び出すようにしました。詳しくはcompletion.rbを見てください。
version 2.8.6でview_hook_filerを追加したのでファンクションキーのバインドを表示したい場合はmfiler.rbからview_hook_filerの部分を$HOME/.mfilerにコピーしてください。
version 2.8.5bでcompletionとcompletion2とcompletion_hookの引数が変わりました。squote, dquote, last_squote, last_dquoteが無くなりました。def completion_hookからsquote, dquote, last_squote, last_dquoteを消してください。あとcompletion2やcompletionを呼んでいるところでsquote, dquote, last_squote, last_dquoteを消してください。細かい修正で手間をかけさせて、すみません。
version 2.8.5で設定ファイルが大幅に変わりました。mfsystem.rb->api.rbとkeybind_fdlike.rb, mfcompl.rb->completion.rbに改名されています。キーバインドと関数定義を別ファイルにしました。api.rbに関数をkeybind_fdlike.rbなどにキーバインドが記述されています。一応下位互換があるように定義しましたがカスタマイズされてた方は最初から定義しなおす必要があるかもしれません。ただキーバインドをカスタマイズするのはとてもやりやすくなったと思います。できれば今までの設定ファイルを消して新しくmfiler.rbを$HOME/.mfilerにコピーするのが分かりやすいと思いますが、そのまま継続される方は$HOME/.mfilerにrequire 'keybind_fdlike.rb'を追加してください。Cレベルの関数は何も変わっていないのでそれでも動くとは思います。
version 2.8.1cで.mfinfoの仕様が変わりました。$HOME/.mfinfoを消してください(make時に自動的に消されますが)。
version 2.8.1で%fcなどのマクロを廃止。
version 2.8.0aで%fなどのマクロに%fcが追加されました。コマンドラインに移行する場合は%fcをシェルに直接渡す場合は%fを渡すと異なるエンコードのファイルなどが適切に処理されます。
version 2.6.7でetc/mfiler.rbを弄りました。atexit_hookでreturn atexit_hook_default()。mloop_hookでreturn mloop_hook_default()を呼んでください。

## 実行

mfiler2

## チュートリアル

Minnu's Filer2チュートリアル

## 使い方

キーバインドは２つから選択できます。キーバインドを変える為には/usr/local/etc/.mfilerを$HOME/.mfilerにコピーをして
require "keybind_fdlike.rb"
#require "keybind_mfiler2.rb"
のどちらかを有効にすることによって選択できます。(#はコメント)
よく分からない人はデフォルトで使ってください。国産パソコン(PC-98, X68K, FM-TOWNS)があった時代からメジャーなWindowsのファイラーなどでも一般的なキー操作です。WindowsであふやDFなどを使っている場合はおすすめです。もう一つはインクリメンタルサーチを操作の柱に据えたオリジナルのキーバインドです。目的のファイルに素早くアクセスできます。ただしMeta(Alt)+英字キーを多用するので端末がAlt+英字キーでESC+英字キーのキーコードを排出するものでないと使いにくいかもしれません。mltermではオプションに --meta=escをつければAlt+英字キーでESC+英字キーのキーコードが排出されるようになります。他の端末でも同様にオプションや設定画面があると思うので、それで対応してください。
fd風キーバインド(デフォルト)
エキスプローラー風オリジナルバインド

### カスタマイズ

設定ファイルは.mfilerが/usr/local/etcにあります。設定ファイルをカスタマイズする場合は/usr/local/etc/.mfilerを$HOME/.mfilerにコピーして修正してください。/usr/local/etc/.mfilerより$HOME/.mfilerの方が優先されます。
$HOME/.mfinfoに描写オプション情報とタブ情報と現在開いているディレクトリ情報とjump menuのディレクトリが保存される
HOME,ENDキーなどが効かない端末の場合、keymapを変更してください。キーコードはmfiler2付属のmkeycodeコマンドを実行して調べてください。ひとつのキーに複数のキーコードを登録可能です。

### エディッタの話

ジョブコントロール, GNU screen, 別端末実行機能を使ってファイラからvimを１ファイルごとに立ち上げて作業する場合、エディッタプロセス間の文章のコピーアンドペーストが問題となります。vimプラグインyanktmpを導入してください。vimプロセス間でコピーアンドペーストが可能になります。
vim7, gvimのタブ機能で、タブとしてファイルを開きたいときはexport EDITOR="vim --remote-tab-silent"かexport EDITOR="gvim --remote-tab-silent"としてe, F4してください。ただしvimが+clientserverでコンパイルされている必要があります。これはvim --versionで確認できます。
emacsの場合。mfiler2のeかF4でemacsプロセス上のバッファとしてファイルを開きたい場合はexport EDITOR="emacsclient -n"を使ってください。.emacsに(server-start)を記述してemacsを立ち上げてください。先にemacsが立ち上がっている必要があります。この設定はうちの環境ではWindowシステム上のemacsしか有効ではありませんでした。CUIのemacsでは/usr/local/etc/main.rbのrun_emacsの記述がヒントになるかもしれません。
ウィンドウシステム上のエディッターではgeditもおすすめです。geditの場合、$EDITORにgeditを設定するだけで問題 無く使用することができます。(先にgedit &と起動しておく必要あり)
ウィンドウシステム上のエディッタを使う場合裏技的にこのようにも設定できます。export EDITOR="emacs&"やexport EDITOR="gvim&"など。これはmfiler2のシェルのコマンド解釈がbashなどと異なっているためできることです。気持ち悪い方は.mfilerに

    keycommand NOMETA, KEY_e,      "*",     "shell('%Q gvim %f &', '%f')"

などとしてください。

## Mac OSXでの実行

標準のターミナルは日本語の処理に問題があります。vimなどでも同様に日本語に不具合を確認しているので他のターミナルを使った方が良いでしょう。おすすめはiTermです。encodingをutf-8にすれば問題なく日本語が通ります。
Enterによる拡張子別ファイル実行はopenに頼っています。Finderにて拡張子ごとに使用したいアプリケーションを設定してください。mfiler2でもFinderで設定したアプリケーションがEnterにて開くようになります。openは複数のファイルの引数に対応しているので複数のファイルをマークしてのEnterでも問題ありません。
Mac OS Xではまだ@によるファイルのドロップには対応していません。これは対応する予定です。
Lによるリンク作成２でエイリアスを作成することができます。ただしosxutilsがインストールされている必要があります。

## cygwinでの実行

基本的に拡張子別ファイルの実行はcygstartに頼っているので拡張子別ファイル実行に特に設定は必要ないですが、複数選択してEnterで実行をした場合cygstartでは対応できないのでmp3,midiなどの拡張子のファイルを複数選択してEnterを押した場合mfiler2が自力でメディアプレイヤーを呼び出しています。なので、メディアプレイヤー(C:\Program Files\Windows Media Player\wmplayer.exe)のリンクをパスの通ったディレクトリにおいて置いてください(/usr/local/binや~/binなど)。
単機能ツール集のコンテキストメニューのContextMenu.exeのリンクがパスの通ったディレクトリにあればMeta+@によってコンテキストメニューを表示できます。
Creaft Dropのcdrop.exeのリンクがパスの通ったディレクトリにあれば@によってファイルを任意のアプリケーションにドラッグ＆ドロップすることができます。
lvをページャに、ckを端末エミュレーターとして使うと日本語も綺麗に表示できます。
エディッタをコンソールエディッタからWindowsのものに変えたい場合はexport EDITOR="sakura&"でいけます。気持ち悪い方は/usr/local/etc/.mfilerをホームディレクトリにコピーして.mfilerに以下の行を追加してください。(サクラエディッタの場合)

    keycommand NOMETA, KEY_e,      "*",     "shell('%Q sakura %f &', '%f')"

## マニュアル

mfiler2 マニュアル
mfiler2 shell マニュアル

## その他

ラインセンスはGPLに準拠します。プログラムの実行は自己責任でお願いします。

## 連絡先

minato.daisuke@gmail.com

## 既知の問題

原因は良くわからないのですが、GNU screen上や他端末コマンド実行機能で実行したコマンド後CTRL-Cを押さないとだめになるバグがあります。その場合/tmp/mfiler*を消してもらえれば、元に戻ります。

## 前バージョンでの不具合

JPCERTより1.40d以前のバージョンで脆弱性があると報告を受けました。このページを見てください。