← XeFM English | 日本語 · crftwr/xefm on GitHub · craftware

ファイルリスト

English | 日本語

ペインには、ディレクトリの代わりに パスのリスト を表示できます。ディスクのあちこちや複数のマシンにあるファイルを 1 つの一覧に並べ、ほかの場所と同じようにあらゆるファイル操作を行えます。

リストは XeFM の外から持ち込みます。検索はそれが一番得意なツール(Everything、find、fd、rg -l、git ls-files、ビルドログ、スプレッドシートの列など)で行い、そのパスをコピーするか、XeFM からコマンドを実行して取り込みます。

Go → Open List では 3 つの取り込み元からリストを開けます。それぞれキーに割り当てられるアクションになっています。

クリップボードから

Go → Open List → From Clipboard(open_list_from_clipboard)は、クリップボードを 1 行に 1 つのパスとして読み、それらのパスをアクティブなペインに表示します。

find . -name '*.py' -mtime -1 | pbcopy        # macOS
rg -l TODO | clip                             # Windows

これは Copy Full Path(s) の逆の操作です。あちこちのファイルを選択してパスをコピーし、それを取り込むと同じ行が戻ってきます。

コマンドから

Go → Open List → From Command…(open_list_from_command)は、コマンドを尋ねてペインのディレクトリで実行し、出力されたパスを表示します。クリップボードへパイプしてから取り込む手間が 1 回で済みます。

ダイアログはコマンドの入力欄で、その下にこれまで実行したコマンドが新しい順に並びます。

キー 動作
文字の入力 コマンドを編集し、履歴を絞り込みます(Migemo も使えます)
↓ / ↑ 履歴の中を移動し、それぞれのコマンドを入力欄にコピーします
Enter 履歴では、そのコマンドを選んで入力欄に戻ります。入力欄では、入力されているコマンドを実行します
Esc 履歴では、入力していた内容に戻ります。それ以外では閉じます
Shift-Delete 履歴では、そのコマンドを履歴から消します

入力欄での Enter は常に入力欄の内容を実行します。履歴に rg -l TODO があっても、rg -l と入力すれば rg -l が実行されます。以前のコマンドを実行するには、↓ でそこまで移動して Enter を 2 回押します(1 回目で選び、2 回目で実行)。その間に内容を変えてもかまいません。履歴付きの入力欄を参照してください。

rg -l TODO
git ls-files --modified
fd -e py -E tests
es.exe -path . ext:py           # Everything, under this folder
dir /s /b *.log                  # Windows, cmd

Everything のコマンドラインインターフェイス es.exe は voidtools から別にダウンロードするもので、PATH に置いてください。クエリは Everything 独自の検索構文です(ext:、dm:thisweek、size:>100mb、|、!)。どこで実行してもインデックス全体を検索するので、ペインが表示しているフォルダーに限定するのが -path . です。

出力は UTF-8 として読みます。Windows では実行前にコマンドのコンソールが UTF-8 に切り替えられるので、dir、es.exe などのコンソールツールは、システムの言語にかかわらず日本語やその他の英語以外の名前をそのまま出力します。コンソールの設定を無視するプログラムの出力は、代わりにシステムのコードページで読みます。macOS と Linux では、UTF-8 として正しくない名前はバイト列のまま保持されるので、その名前のファイルも開けます。

ファイルから

Go → Open List → From File(open_list_from_file)、またはファイルの右クリックメニューの Open as List は、カーソル位置のテキストファイルを 1 行に 1 つのパスのリストとして開きます。複数のリストファイルを先に選択しておくと、1 つのリストとして開きます。

リストファイルは、ファイルを指すものなら何でもかまいません。Everything からのエクスポート(File → Export → TXT)、ビルドログの出力ファイル一覧、プロジェクトの横に置いた .lst や .txt、コマンドの出力を保存したものなどです。

dir -Recurse -Name *.log > logs.txt         # Windows PowerShell

プレイリストと Enter

M3U プレイリスト(.m3u、.m3u8)もリストファイルです。1 行に 1 つのパスで、プレイリストのフォルダーからの相対パスです。# で始まる行(#EXTM3U、#EXTINF など)は読み飛ばします。ほかのリストファイルでは、# で始まる行もほかと同じパスとして扱います。

Enter は、最初からプレイリストをリストとして開きます。open_with_os は引き続きプレイヤーに渡します。自分のリストファイルも Enter で同じように開くには、FILE_ASSOCIATIONS でその拡張子に 'list' ハンドラーを割り当てます。

{
    'pattern': ['*.m3u', '*.m3u8', '*.lst'],
    'enter': 'list',
},

このルールが入る前に書かれた設定には含まれていません。プレイリストで Enter を使うには上のエントリを追加してください。ファイルの関連付けを参照してください。

キーの割り当て

3 つのアクションにはキーが割り当てられていません。割り当てるには設定に追加します。

KEY_BINDINGS['open_list_from_clipboard'] = ['Ctrl-Shift-L']
KEY_BINDINGS['open_list_from_command'] = ['Ctrl-Shift-K']
KEY_BINDINGS['open_list_from_file'] = ['Ctrl-Shift-J']

読み取られる内容

以下はどの取り込み元にも当てはまります。

それ以外は何も解釈しません。ワイルドカード、CSV の列、XeFM が開ける場所以外の URL は扱いません。

表示される内容

リストはスナップショットです。後からディスクに現れたファイルは追加されず、リストを表示している間はペインの変化を監視しません。リストからフォルダーを開くか Back を押すと、通常のライブなディレクトリに戻ります。

取り込みで変わるのはペインの表示だけです。何もコピー、移動、書き込みされません。

自分の設定から

設定のアクションからも、pane.open_list() を使って同じようにリストを開けます。Python で書いた検索に使えます。Open List → From Command と違い、アクションは UI スレッドで実行されるので、時間のかかる処理は入れないでください。

関連項目