-
Notifications
You must be signed in to change notification settings - Fork 0
filer
ファイラーは, pyful 全体の基本操作を行うウィジットであり,ワークスペースとディレクトリ画面によって構成されています。ディスク上のディレクトリやファイルの表示,探索,検索および操作は,ファイラーウィジットによって行います。
pyful のファイル一覧画面(ディレクトリ)は,ワークスペースによって管理されています。ワークスペースの一覧は, pyful の画面左上で確認することができます。ワークスペースの一覧の色が反転している部分が,現在のワークスペースを表しています。デフォルトでは,名前が「1,2,3,4,5」となっている5つのワークスペースが定義されています。
ワークスペースの作成・削除・移動のコマンドとキーバインドおよび説明を以下に示します。
コマンド | キーバインド | 説明 |
---|---|---|
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 | 現在のワークスペースと前のワークスペースを入れ替える |
各ワークスペースは,ディレクトリ画面の配置を決めるレイアウトを持っています。このレイアウトは, 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"
ワークスペースを操作するコマンドの一覧を以下に示します。
コマンド | キーバインド | 説明 |
---|---|---|
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 | 現在の画面が最大化 |
ディレクトリ画面は,ファイル一覧を表示する画面を表します。初回起動時では,2つのディレクトリ画面が作成されます。
ディレクト画面は,自由に作成・削除・移動が可能です。したがって,初回起動時の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 | 現在のディレクトリ画面を削除 |
各ディレクトリ画面は,それぞれ,カーソル位置とスクロール情報を保持しています。カーソルによってフォーカスされているファイル名は,マクロ展開における %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-> | カーソルを最後に移動 |
ディレクトリパスを変更するためのコマンドとキーバインドおよび説明を以下に示します。
コマンド | キーバインド | 説明 |
---|---|---|
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) | カーソル下のリンク先に移動 |
コマンド | キーバインド | 説明 |
---|---|---|
filer_reset | C-g, ESC | インクリメンタルサーチ,glob,mask,markを解除 |
all_reload | C-l | すべてのディレクトリ画面を再読み込み |
ディレクトリ画面において表示可能なファイル情報の項目は,拡張子,ユーザ名,グループ名,参照リンク数,サイズ,パーミッション,更新時間です。
ファイル情報の表示設定の切り替えは,以下のコマンドで行います。また, 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
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 = " "
ディレクトリ画面のソート順は, 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
ディレクトリ画面のファイルは,マークすることでグループ化することが可能です。ファイルをマークすることで,コマンドラインにおいてマクロ展開 %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 | カーソルより下側のソケットをマーク |
ディレクトリ画面の下部に配置されているステータスバーは,ディレクトに関する情報を表示します。
デフォルトの設定ではステータスバーには,ファイル数,マークされているファイルの合計サイズ,スクロール位置,ソート方法が表示されます。ステータスバーの表示項目は,設定ファイル rc.py の以下のコードによって設定することができます。
pyful.filer.Directory.statusbar_format = " [{MARK}/{FILE}] {MARKSIZE}bytes {SCROLL}({CURSOR}) {SORT} "
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字削除 |
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):
となります。
Glob は,glob表現にマッチするファイルの一覧を検索し,仮想ディレクトリ化する機能を提供します。カレントディレクトリを検索の対象とする場合は glob
,サブディレクトリも検索の対象とする場合は globdir
コマンドを実行します。Glob によって作成された仮想ディレクトリは,ディレクトリを移動するか, filer_reset
コマンドによって解除することがでます。
- 例
-
*hoge*
->hoge
に部分マッチ -
hoge*
-> 先頭がhoge
で始まるファイルにマッチ -
hoge
-> ファイル名がhoge
にマッチ
Mask は,任意の正規表現にマッチするファイルのみを表示するようにマスキングする機能を提供します。 mask
コマンドによって Mask を行うことができます。Mask 状態になると,ディレクトリ画面上部に表示されているパス名の末尾が, {入力した正規表現}
となります。なお,ディレクトリは,マスキングの対象にはなりません。Mask 状態は, filer_reset
か mask_clear
コマンドによって解除することができます。
- 例
-
\.py$
-> 拡張子が.py
のファイルを表示 -
^hoge
-> 先頭がhoge
のファイルを表示 -
.*
-> すべてのファイルを表示
mask
コマンドモードのアクションボックスには,一般的に利用されている,画像,音楽,動画,アーカイブ,ソースコードファイルにそれぞれマッチする正規表現が,あらかじめ定義されています。
ディレクトリ画面を操作するコマンドとデフォルトのキーバインドおよび説明の一覧を以下に示します。
コマンド | キーバインド | 説明 |
---|---|---|
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 | マスキングを解除 |