Skip to content
anmitsu edited this page Dec 2, 2012 · 3 revisions

ファイラー

1 はじめに

ファイラーは, pyful 全体の基本操作を行うウィジットであり,ワークスペースとディレクトリ画面によって構成されています。ディスク上のディレクトリやファイルの表示,探索,検索および操作は,ファイラーウィジットによって行います。

2 ワークスペース

pyful のファイル一覧画面(ディレクトリ)は,ワークスペースによって管理されています。ワークスペースの一覧は, pyful の画面左上で確認することができます。ワークスペースの一覧の色が反転している部分が,現在のワークスペースを表しています。デフォルトでは,名前が「1,2,3,4,5」となっている5つのワークスペースが定義されています。

2.1 基本操作

ワークスペースの作成・削除・移動のコマンドとキーバインドおよび説明を以下に示します。

コマンド キーバインド 説明
change_workspace_title ワークスペースの名前を変更
create_workspace 新しいワークスペースを作成
close_workspace 現在のワークスペースを削除
switch_next_workspace M-f 次のワークスペースに切り替える
switch_prev_workspace M-b 前のワークスペースに切り替える
switch_workspace M-w 任意のワークスペースに切り替える
swap_workspace_inc M-F 現在のワークスペースと次のワークスペースを入れ替える
swap_workspace_dec M-B 現在のワークスペースと前のワークスペースを入れ替える

2.2 レイアウト

各ワークスペースは,ディレクトリ画面の配置を決めるレイアウトを持っています。このレイアウトは, awesome や xmonad のようなタイル型ウィンドウマネージャにおけるウィンドウの配置レイアウトに影響を受けています。

レイアウトの変更は, change_workspace_layout コマンドを実行するか, L キーに登録されているレイアウトメニューから行うことができます。以下に,定義されているレイアウトの名前と変更を適用するコマンドおよび説明を示します。

レイアウト名 コマンド 説明
tile layout_tile 縦2画面に分割し右側にスタック
tileleft layout_tileleft 縦2画面に分割し左側にスタック
tiletop layout_tiletop 横2画面に分割し上側にスタック
tilebottom layout_tilebottom 横2画面に分割し下側にスタック
oneline layout_oneline 1行に縦分割して並べる
onecolumn layout_onecolumn 1列に横分割して並べる
magnifier layout_magnifier 現在の画面が中央に拡大
fullscreen layout_fullscreen 現在の画面が最大化

新たに作成されたワークスペースのデフォルトのレイアウトは,設定ファイル rc.py の以下のコードで設定できます。

# Set the workspace layout.
#     "Tile"
#     "TileLeft"
#     "TileTop"
#     "TileBottom"
#     "Oneline"
#     "Onecolumn"
#     "Magnifier"
#     "Fullscreen"
pyful.filer.Workspace.layout = "Tile"

2.3 コマンド一覧

ワークスペースを操作するコマンドの一覧を以下に示します。

コマンド キーバインド 説明
change_workspace_title ワークスペースの名前を変更
create_workspace 新しいワークスペースを作成
close_workspace 現在のワークスペースを削除
switch_next_workspace M-f 次のワークスペースに切り替える
switch_prev_workspace M-b 前のワークスペースに切り替える
switch_workspace M-w 任意のワークスペースに切り替える
swap_workspace_inc M-F 現在のワークスペースと次のワークスペースを入れ替える
swap_workspace_dec M-B 現在のワークスペースと前のワークスペースを入れ替える
change_workspace_layout 現在のワークスペースのレイアウトを変更
layout_tile 縦2画面に分割し右側にスタック
layout_tileleft 縦2画面に分割し左側にスタック
layout_tiletop 横2画面に分割し上側にスタック
layout_tilebottom 横2画面に分割し下側にスタック
layout_oneline 1行に縦分割して並べる
layout_onecolumn 1列に横分割して並べる
layout_magnifier 現在の画面が中央に拡大
layout_fullscreen 現在の画面が最大化

3 ディレクトリ画面

ディレクトリ画面は,ファイル一覧を表示する画面を表します。初回起動時では,2つのディレクトリ画面が作成されます。

3.1 基本操作

3.1.1 画面の作成・削除・移動

ディレクト画面は,自由に作成・削除・移動が可能です。したがって,初回起動時の2画面だけでなく,n画面の表示を自由に作成することできます。

ディレクトリ画面の作成・削除・移動を行うコマンドとキーバインドおよび説明を以下に示します。

コマンド キーバインド 説明
focus_next_dir C-i, C-f, <right> 次のディレクトリ画面にフォーカス
focus_prev_dir C-b, <left> 前のディレクトリ画面にフォーカス
swap_dir_inc F 現在のディレクトリ画面と次のディレクトリ画面を入れ替える
swap_dir_dec B 現在のディレクトリ画面と前のディレクトリ画面を入れ替える
create_dir M-RET 新しいディレクトリ画面を作成
close_dir M-C, C-w 現在のディレクトリ画面を削除

3.1.2 カーソル移動

各ディレクトリ画面は,それぞれ,カーソル位置とスクロール情報を保持しています。カーソルによってフォーカスされているファイル名は,マクロ展開における %f%F によって参照することができます。

カーソルが画面外に移動すると画面のスクロールが行われます。このスクロールの挙動は,3つのタイプが定義されています。スクロールタイプを以下に示します。

スクロールタイプ 説明
HalfScroll 画面半分スクロール(Emacs風)
PageScroll 1ページ分スクロール
ContinuousScroll 1行づつスクロール

デフォルトのスクロールタイプは, HalfScroll に設定さています。スクロールタイプの変更は,設定ファイル rc.py の以下のコードによって行います。

# Set scroll type in directory.
#     "HalfScroll"
#     "PageScroll"
#     "ContinuousScroll"
pyful.filer.Directory.scroll_type = "HalfScroll"

カーソルの移動と画面のスクロールのコマンドとキーバインドおよび説明を以下に示します。

コマンド キーバインド 説明
filer_cursor_down C-n, <down> カーソルを下げる
filer_cursor_up C-p, <up> カーソルを上げる
filer_scroll_down M-n 1行下にスクロール
filer_scroll_up M-p 1行上にスクロール
filer_pagedown C-v, <npage> 1ページ下にスクロール
filer_pageup M-v, <ppage> 1ページ上にスクロール
filer_settop C-a, M-< カーソルを最初に移動
filer_setbottom C-e, M-> カーソルを最後に移動

3.1.3 ディレクトリ変更

ディレクトリパスを変更するためのコマンドとキーバインドおよび説明を以下に示します。

コマンド キーバインド 説明
chdir_parent C-h, <backspace> 親ディレクトリに移動
chdir_home ~ ホームディレクトリに移動
chdir_root \ ルートディレクトリに移動
chdir_neighbor w 次のディレクトリ画面のパスに移動
chdir_backward M-h ディレクトリの移動履歴を戻る
chdir_forward M-l ディレクトリの移動履歴を進む
enter_dir RET (.dir) カーソル下のディレクトリに移動
enter_link RET (.link) カーソル下のリンク先に移動

3.1.4 画面の再描画

コマンド キーバインド 説明
filer_reset C-g, ESC インクリメンタルサーチ,glob,mask,markを解除
all_reload C-l すべてのディレクトリ画面を再読み込み

3.2 ファイル情報

ディレクトリ画面において表示可能なファイル情報の項目は,拡張子,ユーザ名,グループ名,参照リンク数,サイズ,パーミッション,更新時間です。

ファイル情報の表示設定の切り替えは,以下のコマンドで行います。また, V キーに登録されている filer メニューからも行うことができます。

コマンド 説明
toggle_draw_ext 拡張子の表示をトグル
toggle_draw_user ユーザ名の表示をトグル
toggle_draw_group グループ名の表示をトグル
toggle_draw_nlink 参照リンク数の表示をトグル
toggle_draw_size サイズの表示をトグル
toggle_draw_permission パーミッションの表示をトグル
toggle_draw_mtime 更新時間の表示をトグル

起動時に表示するファイル情報は,設定ファイル rc.py の以下のコードで設定します。 True と設定した項目は表示, False と設定した項目は非表示となります。

# Display the file extension?
pyful.filer.FileStat.draw_ext = True
# Display the file permission?
pyful.filer.FileStat.draw_permission = True
# Display the number of link?
pyful.filer.FileStat.draw_nlink = False
# Display the user name of file?
pyful.filer.FileStat.draw_user = False
# Display the group name of file?
pyful.filer.FileStat.draw_group = False
# Display the file size?
pyful.filer.FileStat.draw_size = True
# Display the change time of file?
pyful.filer.FileStat.draw_mtime = True

3.2.1 更新時間フォーマット

pyful.filer.FileStat.draw_mtime = True によってディレクトリ画面に表示される更新時間は,Python組み込みの time モジュールの strftime 関数のフォーマットに従って表示されます。更新時間のフォーマットは,設定ファイル rc.py の以下のコードで指定します。

pyful.filer.FileStat.time_format = "%y-%m-%d %H:%M"

システムの言語に合わせたフォーマットで更新時間を表示し,曜日も表示する場合は,以下のように指定します。

pyful.filer.FileStat.time_format = "%c(%a)"

また,ディレクトリ画面に表示される更新時間の先頭部分には,現在時刻からどれだけ前に更新されたかを表すフラグが表示されます。このフラグは,現在時刻から,24時間以内,1週間以内,それ以前に更新された場合の3つが設定可能です。フラグに使用する文字は,以下のコードで指定します。

# Set the flag of file modified within 24 hours.
pyful.filer.FileStat.time_24_flag = "!"
# Set the flag of file modified within a week.
pyful.filer.FileStat.time_week_flag = "#"
# Set the flag of file modified more in old time.
pyful.filer.FileStat.time_yore_flag = " "

3.3 ソート方法

ディレクトリ画面のソート順は, s キーに登録されている sort メニューから変更することができます。以下に,可能なソート方法とステータスバーに表示される表示名およびソートを行うコマンドを示します。

ソート方法 表示名 コマンド
名前順(昇順) Name[^] sort_name
名前順(降順) Name[$] sort_name_rev
更新時間順(昇順) Time[^] sort_time
更新時間順(降順) Time[$] sort_time_rev
サイズ順(昇順) Size[^] sort_size
サイズ順(降順) Size[$] sort_size_rev
参照リンク数(昇順) Link[^] sort_nlink
参照リンク数(降順) Link[$] sort_nlink_rev
拡張子順(昇順) Ext[^] sort_ext
拡張子順(降順) Ext[$] sort_ext_rev
権限順(昇順) Permission[^] sort_permission
権限順(降順) Permission[$] sort_permission_rev

新たにディレクトリ画面が作成されたときのデフォルトのソート方法は,設定ファイル rc.py の以下のコードで設定できます。設定値は,ソート方法の表示名の文字列です。

pyful.filer.Directory.sort_kind = "Name[^]"

ディレクトリを優先的に並べて表示したい場合は, toggle_sort_updir コマンドを実行することでディレクトリの並べる順番を切り替えることができます。なお, toggle_sort_updir コマンドは, sort メニューからも実行することできます。また,起動時にディレクトリを優先的に並べる設定を有効にする場合は,設定ファイル rc.py の以下のコードを True に設定します。

pyful.filer.Directory.sort_updir = True

3.4 ファイルマーク

ディレクトリ画面のファイルは,マークすることでグループ化することが可能です。ファイルをマークすることで,コマンドラインにおいてマクロ展開 %m%M によって複数のファイル名を参照したり,ファイル操作において複数のファイルをコピーしたりすることが可能となります。

最も簡単なファイルマークの方法は, SPC キーに割り当てられている mark_toggle コマンドを実行することです。 mark_toggle コマンドは,カーソル下のファイルをマークし,カーソルを1つ下げます。

ファイルマークに関するコマンドとキーバインドおよび説明を以下に示します。

コマンド キーバインド 説明
mark * 正規表現にマッチしたファイルをマーク
mark_toggle SPC カーソル下のファイルをマークトグル
mark_toggle_all <end> すべてのファイルをマークトグル
mark_clear C-g, ESC ファイルマークをクリア
mark_all すべてのファイルをマーク
mark_file 通常ファイルをマーク
mark_dir ディレクトリをマーク
mark_exec 実行ファイルをマーク
mark_symlink シンボリックリンクをマーク
mark_block ブロックファイルをマーク
mark_chr キャラクタファイルをマーク
mark_fifo パイプをマーク
mark_socket_bcursor ソケットをマーク
mark_all_bcursor カーソルより下側のすべてのファイルをマーク
mark_file_bcursor カーソルより下側の通常ファイルをマーク
mark_dir_bcursor カーソルより下側のディレクトリをマーク
mark_exec_bcursor カーソルより下側の実行ファイルをマーク
mark_symlink_bcursor カーソルより下側のシンボリックリンクをマーク
mark_block_bcursor カーソルより下側のブロックファイルをマーク
mark_chr_bcursor カーソルより下側のキャラクタファイルをマーク
mark_fifo_bcursor カーソルより下側のパイプをマーク
mark_socket_bcursor カーソルより下側のソケットをマーク

3.5 ステータスバー

ディレクトリ画面の下部に配置されているステータスバーは,ディレクトに関する情報を表示します。

デフォルトの設定ではステータスバーには,ファイル数,マークされているファイルの合計サイズ,スクロール位置,ソート方法が表示されます。ステータスバーの表示項目は,設定ファイル rc.py の以下のコードによって設定することができます。

pyful.filer.Directory.statusbar_format = " [{MARK}/{FILE}] {MARKSIZE}bytes {SCROLL}({CURSOR}) {SORT} "

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

pyful のインクリメンタルサーチは,ファイル名に部分一致したファイル項目のみを表示する,絞り込み検索を行います。インクリメンタルサーチは, finder_start コマンドにより行うことができます。 finder_start コマンドは, f/ キーに割り当てられています。

インクリメンタルサーチモードにおけるディレクトリ画面では,ステータスバー上部に検索語を入力するテキストボックスが描画されます。この状態で,文字を入力することで検索を開始します。

検索語には,正規表現を利用することができます。また,検索語が,小文字のみ場合は大文字小文字を区別せず,大文字を含んでいた場合は大文字小文字を区別する,スマートケース機能を利用することができます。スマートケース機能は,デフォルトで有効に設定されています。スマートケース機能を無効にしたい場合は,設定ファイル rc.py を以下のコードのように False に設定します。

pyful.filer.Finder.smartcase = False

インクリメンタルサーチモードにおけるデフォルトのキーバインドと説明を以下に示します。

キーバインド 説明
M-p 検索語の履歴を戻る
M-n 検索語の履歴を進む
C-g, C-c, ESC インクリメンタルサーチを終了
C-h, <backspace> 検索語を1字削除

3.6.1 Migemo

Migemo とは,ローマ字のまま日本語をインクリメンタルサーチするためのツールです。かな漢字変換をすることなく日本語のインクリメンタルサーチを快適に行うことができます。

pyful は,Atzm WATANABEさんが作成された PyMigemo のmigemoモジュールを利用することで,migemo検索を行うことが可能です。

PyMigemo をインストールし,migemoモジュールが使用可能になれば,設定ファイル rc.py の以下のコードによって,migemo検索が有効になります。なお,migemo辞書のパスは,各々の環境にあわせて適宜変更してください。

pyful.filer.Finder.migemo = migemo.Migemo("/usr/share/cmigemo/utf-8/migemo-dict")

migemo検索が有効になると,インクリメンタルサーチモードにおける検索ボックスのプロンプト部分が, Finder(migemo): となります。

3.7 Glob

Glob は,glob表現にマッチするファイルの一覧を検索し,仮想ディレクトリ化する機能を提供します。カレントディレクトリを検索の対象とする場合は glob ,サブディレクトリも検索の対象とする場合は globdir コマンドを実行します。Glob によって作成された仮想ディレクトリは,ディレクトリを移動するか, filer_reset コマンドによって解除することがでます。

  • *hoge* -> hoge に部分マッチ
  • hoge* -> 先頭が hoge で始まるファイルにマッチ
  • hoge -> ファイル名が hoge にマッチ

3.8 Mask

Mask は,任意の正規表現にマッチするファイルのみを表示するようにマスキングする機能を提供します。 mask コマンドによって Mask を行うことができます。Mask 状態になると,ディレクトリ画面上部に表示されているパス名の末尾が, {入力した正規表現} となります。なお,ディレクトリは,マスキングの対象にはなりません。Mask 状態は, filer_resetmask_clear コマンドによって解除することができます。

  • \.py$ -> 拡張子が .py のファイルを表示
  • ^hoge -> 先頭が hoge のファイルを表示
  • .* -> すべてのファイルを表示

mask コマンドモードのアクションボックスには,一般的に利用されている,画像,音楽,動画,アーカイブ,ソースコードファイルにそれぞれマッチする正規表現が,あらかじめ定義されています。

3.9 コマンド一覧

ディレクトリ画面を操作するコマンドとデフォルトのキーバインドおよび説明の一覧を以下に示します。

コマンド キーバインド 説明
focus_next_dir C-i, C-f, <right> 次のディレクトリ画面にフォーカス
focus_prev_dir C-b, <left> 前のディレクトリ画面にフォーカス
swap_dir_inc F 現在のディレクトリ画面と次のディレクトリ画面を入れ替える
swap_dir_dec B 現在のディレクトリ画面と前のディレクトリ画面を入れ替える
create_dir M-RET 新しいディレクトリ画面を作成
close_dir M-C, C-w 現在のディレクトリ画面を削除
all_reload C-l すべてのディレクトリ画面を再読み込み
filer_cursor_down C-n, <down> カーソルを下げる
filer_cursor_up C-p, <up> カーソルを上げる
filer_scroll_down M-n 1行下にスクロール
filer_scroll_up M-p 1行上にスクロール
filer_pagedown C-v, <npage> 1ページ下にスクロール
filer_pageup M-v, <ppage> 1ページ上にスクロール
filer_settop C-a, M-< カーソルを最初に移動
filer_setbottom C-e, M-> カーソルを最後に移動
filer_reset C-g, ESC インクリメンタルサーチ,glob,mask,markを解除
chdir_parent C-h, <backspace> 親ディレクトリに移動
chdir_home ~ ホームディレクトリに移動
chdir_root \ ルートディレクトリに移動
chdir_neighbor w 次のディレクトリ画面のパスに移動
chdir_backward M-h ディレクトリの移動履歴を戻る
chdir_forward M-l ディレクトリの移動履歴を進む
enter_dir RET (.dir) カーソル下のディレクトリに移動
enter_link RET (.link) カーソル下のリンク先に移動
toggle_draw_ext 拡張子の表示をトグル
toggle_draw_user ユーザ名の表示をトグル
toggle_draw_group グループ名の表示をトグル
toggle_draw_nlink 参照リンク数の表示をトグル
toggle_draw_size サイズの表示をトグル
toggle_draw_permission パーミッションの表示をトグル
toggle_draw_mtime 更新時間の表示をトグル
sort_name 名前順(昇順)にソート
sort_name_rev 名前順(降順)にソート
sort_time 更新時間順(昇順)にソート
sort_time_rev 更新時間順(降順)にソート
sort_size サイズ順(昇順)にソート
sort_size_rev サイズ順(降順)にソート
sort_nlink 参照リンク数(昇順)にソート
sort_nlink_rev 参照リンク数(降順)にソート
sort_ext 拡張子順(昇順)にソート
sort_ext_rev 拡張子順(降順)にソート
sort_permission 権限順(昇順)にソート
sort_permission_rev 権限順(降順)にソート
sort_permission_rev 権限順(降順)にソート
finder_start f, / インクリメンタルサーチを開始
mark * 正規表現にマッチしたファイルをマーク
mark_toggle SPC カーソル下のファイルをマークトグル
mark_toggle_all <end> すべてのファイルをマークトグル
mark_clear C-g, ESC ファイルマークをクリア
mark_all すべてのファイルをマーク
mark_file 通常ファイルをマーク
mark_dir ディレクトリをマーク
mark_exec 実行ファイルをマーク
mark_symlink シンボリックリンクをマーク
mark_block ブロックファイルをマーク
mark_chr キャラクタファイルをマーク
mark_fifo パイプをマーク
mark_socket_bcursor ソケットをマーク
mark_all_bcursor カーソルより下側のすべてのファイルをマーク
mark_file_bcursor カーソルより下側の通常ファイルをマーク
mark_dir_bcursor カーソルより下側のディレクトリをマーク
mark_exec_bcursor カーソルより下側の実行ファイルをマーク
mark_symlink_bcursor カーソルより下側のシンボリックリンクをマーク
mark_block_bcursor カーソルより下側のブロックファイルをマーク
mark_chr_bcursor カーソルより下側のキャラクタファイルをマーク
mark_fifo_bcursor カーソルより下側のパイプをマーク
mark_socket_bcursor カーソルより下側のソケットをマーク
glob カレントディレクトリを glob 検索
globdir サブディレクトリも含めて glob 検索
mask + 正規表現によるファイルのマスキング
mask_clear マスキングを解除