l
UNIX(Linux, FreeBSD, Mac OSX, cygwin)のコンソール上で動作する1/2画面ファイラー(ファイル管理ソフト)です。Rubyインタプリタ搭載。
こんな方に向いてます。
端末制御ライブラリcursesに依存しています。大抵のディストリビューションではデフォルトで入っていると思いますが、Debianではlibncursesとlibncurses-devをインストールするのを忘れないでください。
オブジェクト指向スクリプト言語Rubyに依存しています。Rubyのパッケージをインストールしてください。Debianではruby1.8-devも忘れないでください。
エンコード変換ライブラリiconvがあれば漢字ファイル名のエンコードの変換機能が有効になります。iconvがあるかどうかは/usr/include/iconv.hがあるかどうかで判断しています。
ruby gtk2があればファイルのドラッグアンドドロップを行う@によるmdndが有効になります。
migemoについてはMigemo: ローマ字のまま日本語をインクリメンタル検索を参照ください。
migemoを使うとインクリメンタルサーチで英字入力のままで漢字ファイル名がマッチします。
Migemoをmfiler2に組み込むためにはC/Migemoでバージョン1.3以上を落としてきて/usr/local以下にインストールしてください。
/usr/lib/libmigemo.soか/usr/local/lib/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 --with-ruby-header-path=XXX --with-ruby-lib-path=XXX --with-ruby-lib-name=XXX
--with-ruby-header-path="ruby.hのあるディレクトリ" 通常"/usr/lib/ruby/rubyのバージョン(1.8など)/アーキテクチャ(i386-linuxなど)"にあります
--with-ruby-lib-path="librubyXX.soのあるディレクトリ" 通常"/usr/lib", "/usr/lccal/lib"にあります。
--with-ruby-lib-name="ライブラリの名前" libruby.soなら"ruby", libruby1.8.soなら"ruby1.8"を指定してください。
4)make
5)su
6)make install
環境変数$EDITORに好みのエディッタを、$PAGERにページゃを、$SHELLにシェルを設定してください。
コンパイルエラーがあればエラーの出力とmfierのバージョン、OSとgccのバージョンを添えて掲示板やメール(minato.daisuke@gmail.com)で報告してもらえると、できる限りこちらで対応します。
バージョンアップ時、起動時にセグったら$HOME/.mfiler, $HOME/.mfinfoが怪しいかもしれません。両方のファイルを消して再び起動してみてください。
2ch Linux版 【2画面ファイラ】 mfiler2 【Rubyインタプリタ】
CVSサーバーを用意してます。興味がある方アカウントを配布します。Solarisがある方募集中。あとDebianなど各種ディストリビューションのパッケージを作成していただける方も募集しております。
2007年11月3日 3.1.8 ファイル検索の仮想ディレクトリでfindなどを実行中に画面に出力が出るようになりました。途中でCTRL-Cしても安定して動作します。locateの結果を使った仮想ディレクトリも追加。
2007年8月25日 3.1.7 mfiler2 -m [パス] で起動中のmfiler2のカレントディレクトリを移動できるようになりました。
2007年8月25日 3.1.6d C,Mによるジャンプメニューへのコピー、ファイル移動にバグがありました。
2007年8月17日 3.1.6c option_left_right_dir_upがtrueで1画面時左端で左キーで上ディレクトリにあがるようになりました。
2007年8月11日 3.1.6b cmdline2を追加。cmdline, shellは前通りになりました。
2007年8月11日 3.1.6a cmdline, cmdline_noconvert, cmdline_convert, shellの引数が一つ増えました。$HOME/.mfilerに互換性が無くなりました。
2007年8月4日 3.1.6 ファイルのコピペ、カットを追加。$から使えます。
2007年8月3日 3.1.5d コマンドラインでカラーによる色づけのアルゴリズムを改善。空白を含むコマンドやクォートの問題など問題なくなったと思います。色付けする範囲を拡張。コマンドライン引数やリダイレクト記号なども色づけするようになりました。
2007年8月3日 3.1.5c 下記の機能にバグがありました。
2007年7月31日 3.1.5b ファイル名によって正規表現で色づけをできるようになりました。
2007年7月30日 3.1.5a Meta+?キーのEscapeを押してからの待ち時間を大幅に増やしました。これによって単体のEscapeキーは使いにくくなってしまいましたが、Alt+?キーでEscapeキーを排出しない端末では使いやすくなりました。一応設定ファイルで待ち時間を設定できます。
2007年7月29日 3.1.5 Mac OSXに正式対応。Lによるリンク作成にエイリアス作成を追加(要osxutils)
2007年7月29日 3.1.2f MacでCによるcpのオプションの問題を解決。
2007年7月28日 3.1.2e Mac環境の場合の設定ファイルを調整。
2007年7月27日 3.1.2d 環境によってはBSキーで親ディレクトリにたまにあがらないバグがありました。Mac OSXでの動作確認を開始。とりあえずコンパイルは通ります。
>
2007年7月23日 3.1.2c コマンドラインでカラーを使うようになりました。
2007年7月22日 3.1.2b 端末のタイトルにカレントディレクトリのパスやジョブ情報を表示するようにしました。
2007年7月20日 3.1.2a cygwinで!によるファイルマネージャー起動ができないバグを修正。
2007年7月20日 3.1.2 コマンドライン補完でカラーや強調を使うようになりました。mfiler2内蔵シェルがクォートを解釈するようになりました。sjis,eucjp時の漢字の補完のバグを修正。
2007年7月20日 3.1.1c オプションset_menu_scroll_cycleを追加。メニューのスクロールを循環するか否かを決められます。.mfilerで指定してください。set_view_fname_divide_extを追加。ファイル名の拡張子を別に表示するか否かを決められます。Vのメニューにバインドされています。$option_tab_remain_dirを追加。tabで1画面から2画面に移行時毎回カレントディレクトリから始めるか、ディレクトリ位置を保存するかが選べます。.mfilerで指定してください。
2007年7月16日 3.1.1b マークファイル改名のインターフェースを変更。日本語表示に難がありました。2画面時スクロールの仕方が遅いのでデフォルトのスクロールの仕方をafuタイプからfdcloneタイプに変更。
2007年7月15日 3.1.1a コマンドラインで単語の区切りに.を加えました。
2007年7月14日 3.1.1 表示オプションをVにバインド。表示オプションにパーミッションやサイズなどの表示/非表示が加わりました。2画面でファイル名とパーミッションのみ表示などが可能になりました。
2007年7月10日 3.1.0c 1画面表示1のときにセグるバグがありました。表示画面をちょっと修正。2画面表示モードが2つになりました。
2007年7月6日 3.1.0b FreeBSDでジョブコントロールにバグがありました。修正。
2007年7月6日 3.1.0a 内蔵シェルのパイプにバグがありました。原因がわからないので対処療法的です、、(shell.cppのusleepの部分)
2007年7月6日 3.1.0 mdndを追加。@でファイルのドロップができるようになりました。.を含むディレクトリで巧くファイル名を表示していないのを修正。
2007年7月3日 3.0.9g 下記の機能に..を含むファイル名にバグがありました。
2007年7月3日 3.0.9f あふのように拡張子を別に表示するようになりました。
2007年7月3日 3.0.9e デフォルトのキーバインドをfdlikeに戻しました。
2007年7月3日 3.0.9d デフォルトのキーバインドをmfiler2オリジナルにしました。FDライクが好きなひとは背訂ファイルを書き換えてください。set_isearch_option1を追加。これをデフォルトとしました。インクリメンタルサーチの動作が変わっています。先頭一致に失敗したら部分一致を試すようにしました。screen上でMeta+カーソルキーが効くようになりました(OSやディストリビューションによっては依然効かないかもしれません。mkeycodeでキーコードを調べてkeymapで登録してください)
2007年7月2日 3.0.9c プレイリストの表示に絶対パス表示と相対パス表示の二つを用意。Hによるコマンドラインメニューを追加。
2007年6月30日 3.0.9b 内蔵シェルに``と$()の機能を追加。
2007年6月28日 3.0.9a ファイル名からディレクトリ部分を取り除く表示オプションを付けました。$HOME/.mfinfoの仕様が変わりました。ソートや表示オプションなどが2画面両方個別に記憶するようになりました。端末エミュレータのタイトルを変えないオプションを追加。編集中のプレイリストのファイルを変更できるようになりました。一部Cレベルのmfiler2関数が変わっています。マニュアルは更新が追い付いていません。ちょっとmfiler2関数を整理する予定なので、そのときマニュアルも更新します。起動時に端末のサイズを変更しても落ちないようになりました。"^"キーでカーソル位置にファイルを移動を追加。
2007年6月21日 3.0.9 プレイリスト機能を追加。ソートにソートしないを追加。ファイル名がはみだした場合後ろを優先して表示するオプションを追加。ファイル検索に文字列を含むファイルを表示を追加。ディレクトリの作成をmkdir -pのようなa/aなどによる作成も対応。
2007年6月18日 3.0.8 バックグランドジョブが裏で終了した場合、ちゃんとジョブリストからジョブが消されるように成りました。FreeBSDでバックグランドジョブの動作がおかしかったバグを修正。今度こそ内蔵シェル関連のバグがなくなったと思います(自信なし)
2007年6月16日 3.0.7d Jをコマンドラインによるジャンプからジャンプメニューに変更。Hのヒストリをジャンプメニューに入れてHは廃止。
2007年6月15日 3.0.7c $PWDがディレクトリの左右移動で変更されないバグを修正。!によるファイルマネージャー起動でxfceの新ファイルマネジャーthunarに対応しました。xffmへの対応は打ち切り。
2007年6月14日 3.0.7b *によるマークメニューを改良。
2007年6月12日 3.0.7a デフォルトを2画面モードにしました。メニューにカーソル位置を%で表示するようにしました。inputboxでカーソルが移動しないバグを修正
2007年6月7日 3.0.7 設定ファイルを整理。CentOSに対応できたと思います。
2007年6月4日 3.0.6 内蔵シェルが安定したので安定版にあげました。mmake,mgrep,mfind中にCTRL-Cを押しても処理を中断するだけでmfiler2自体が落ちないようになりました。
2007年6月3日 3.0.5 内蔵シェルのバグがなくなったと思います。
2007年6月2日 3.0.3 内蔵シェルのシグナル,パイプ処理などにバグを修正。まだ内蔵シェルにバグはあります。
2007年6月1日 3.0.2a Meta-xによるスクリプト実行でマークが無効になっているのを修正しました。keybind_mfiler.rbにMeta-Xによるスクリプト実行を追加。
2007年6月1日 3.0.2 FreeBSDで動作確認。FreeBSDで内蔵シェルが正しく動作するようになりました。
2007年5月28日 3.0.1d completion_hookの仕様が変わりました。戻り値でファイル名の補完を呼び出すなどをしていたのをRubyの関数を呼び出すようにしました。詳しくはcompletion.rbを見てください。内部的にすっきりした形になったと思います。
2007年5月27日 3.0.1c utf8端末でeucjp,sjisの文字列を描写しようとすると画面が固まるバグを修正
2007年5月25日 3.0.1b ジョブがあるときスクロールがおかしかったバグを修正。
2007年5月25日 3.0.1a シェルでシングルクォートとダブルクォートの展開に問題がありました。エキスプローラー風オリジナルバインドでジョブセレクトのバインドを用意しました。
2007年5月23日 3.0.1 wstrcutを追加。mgrep, mmakeが複数行にまたがる行が合った場合画面が乱れていたバグを修正。
2007年5月22日 3.0.0c ~を内蔵シェルが展開していなかったので展開するようにしました。vimやemacs-nwをサスペンドさせ復帰させると端末の設定が狂うバグを修正。
2007年5月21日 3.0.0b ls | lv -> CTRL-Zでmfiler2の画面からもう一度lvの画面に復帰できないバグを修正。
2007年5月20日 3.0.0a ディレクトリの移動ごとに$PWDを設定するようにしました。
2007年5月20日 3.0.0 簡易シェルを内蔵しました。リダイレクト、パイプ、ジョブコントロールを実装。
2004-2006年のヒストリ
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
キーバインドは2つから選択できます。キーバインドを変える為には/usr/local/etc/mfiler.rbを$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風キーバインド(デフォルト)
エキスプローラー風オリジナルバインド
設定ファイルにはapi.rb(システム側の設定ファイル), completion.rb(各コマンドの補完), mfiler.rb(ユーザー側の設定ファイル)が/usr/local/etcにあります。設定ファイルをカスタマイズする場合は/usr/local/etc/mfiler.rbを$HOME/.mfilerにコピーして修正してください。/usr/local/etc/mfiler.rbより$HOME/.mfilerの方が優先されます。
$HOME/.mfinfoに描写オプション情報とタブ情報と現在開いているディレクトリ情報とjump menuのディレクトリが保存される
当然ですがフルキーカスタマイズが可能です。動的にキーバインドも変えられるのでvimのようにモードを作ろうと思えば作れると思います。
ウィンドウシステム上のエディッターを使いたい場合は/usr/local/etc/mfiler.rbを$HOME/.mfilerにコピーして以下の行を追加してください。(emacsの場合)
keycommand NOMETA, KEY_e, "*", "shell('%q emacs %f &', '%f')"
HOME,ENDキーなどが効かない端末の場合、keymapを変更してください。キーコードはmfiler2付属のmkeycodeコマンドを実行して調べてください。ひとつのキーに複数のキーコードを登録可能です。
ジョブコントロール, 仮想端末機能, 別端末実行機能を使ってファイラからvim, emacs -nwを複数立ち上げて並列的に作業する場合、エディッタプロセス間の文章のコピーアンドペーストが問題となります。
vimなら
:command -range Copy :<line1>, <line2> write! ~/.vimclip :command -range Cut :<line1>, <line2> write! ~/.vimclip | :<line1>, <line2> delete :command Past :read ~/.vimclip
というマクロを.vimrcに書いておけば: 範囲 Copyでコピー :Pastで張り付けができます。(別プロセス上のvim間でもコピペができる)
emacs -nwなら
(defun save-kill-ring-to-clipboard() (save-excursion (let (cbuf buf) (setq cbuf (current-buffer)) (setq buf (get-buffer-create "tmp")) (set-buffer buf) (yank) (write-file "~/.emclip") (kill-buffer buf) (set-buffer cbuf)))) (defun my-kill-region (begin end) (interactive "*r") (copy-region-as-kill begin end) (delete-region begin end) (save-kill-ring-to-clipboard)) (defun my-yank() (interactive) (set-mark-command nil) (insert-file "~/.emclip") (exchange-dot-and-mark)) (global-set-key "\C-y" 'my-yank) (global-set-key "\C-w" 'my-kill-region)
というマクロを.emacsに書いておけば、CTRL-wとCTRL-yのバッファがemacsプロセス間で共有されます。
標準のターミナルは日本語の処理に問題があります。vimなどでも同様に日本語に不具合を確認しているので他のターミナルを使った方が良いでしょう。おすすめはiTermです。encodingをutf-8にすれば問題なく日本語が通ります。
Enterによる拡張子別ファイル実行はopenに頼っています。Finderにて拡張子ごとに使用したいアプリケーションを設定してください。mfiler2でもFinderで設定したアプリケーションがEnterにて開くようになります。openは複数のファイルの引数に対応しているので複数のファイルをマークしてのEnterでも問題ありません。
Mac OS Xではまだ@によるファイルのドロップには対応していません。これは対応する予定です。
Lによるリンク作成2でエイリアスを作成することができます。ただしosxutilsがインストールされている必要があります。
基本的に拡張子別ファイルの実行は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のものに変えたい場合は/usr/local/etc/mfiler.rbをホームディレクトリにコピーして.mfilerと改名してから、.mfilerに以下の行を追加してください。(サクラエディッタの場合)
keycommand NOMETA, KEY_e, "*", "shell('%Q sakura %f &', '%f')"
mfiler2 マニュアル
mfiler2 shell マニュアル
Mac OS Xで@によるファイルのドロップに対応させる。
全体的にもう少しユーザーフレンドリーにする。
オプションを増やす。
APIのオブジェクト指向化。
内蔵シェルのパワーアップ。
ネットワーク関係クライアント機能。
圧縮ファイル仮想ディレクトリ機能。
ザウルス対応。
zsh風コマンドライン補完の充実。
ラインセンスはGPLに準拠します。プログラムの実行は自己責任でお願いします。
minato.daisuke@gmail.com
Mac OS X Tiger on Mac mini
Debian etch (kernel 2.4.27-2-686 gcc 3.3.5) on x86
Cygwin 1.5.23 on Windows 2000
FreeBSD 6.2 RELEASE
JPCERTより1.40d以前のバージョンで脆弱性があると報告を受けました。このページを見てください。