Facebookが新たにコマンドラインツールを公開しました。
git statusなどのコマンドの標準出力に表示されるファイルパスに対して操作を行うツールです。
以下の様な操作ができ、使いこなせるとかなり効率が上がります。
-
git statusのファイル一覧から複数選択してgit checkoutする -
git diffのファイル一覧から選択してエディタで開く -
findでzipファイルだけ検索し、複数選択してscpする
似たようなコマンドとして、peco, percolがありますが、fppはファイルに特化しており、自動ファイル名検出とコマンド入力モードが特徴です。
インストール
Macの場合はhomebrewでインストールできます
$ brew update
$ brew install fpp
$ fpp --help
Linuxやhomebrewのない環境などでは
$ git clone git@github.com:facebook/PathPicker.git
$ cd PathPicker
$ ln -s fpp /path/to/bin/
のようにcloneしてパスの通っているディレクトリにシムリンクを貼ればOKです。
動作環境
python > 2.6 and < 3.0 のインストールされたbash環境となっております。
zshにも対応してますが、エイリアス展開などのごく一部の機能は動作しないとのこと。
自分はzshで使っていますが特に問題は感じません。
使い方
ファイルを表示するコマンドにパイプをつなげて使います。
gitコマンドやfindコマンド、grepコマンドなどと相性がいいです。
使用例
git status | fppgit grep 'regex' | fppgit diff HEAD~3 --stat | fppfpp . -name "*.py" | fpp
ファイル選択
使用例のようにコマンド入力すると、fppは入力に対してファイルパスに相当する部分を自動検出します(図のアンダーライン部分)。1
一番下のガイドにあるように操作は次のように行います。
-
f: 選択/非選択 -
A: 全選択 -
j,↓: 下に移動 -
k,↑: 上に移動 -
space: 1ページ下に移動 -
b: 1ページ上に移動 -
enter: 開く($EDITOR環境変数のエディタで開く) -
c: コマンド入力
j``kで移動しファイルを選びenterもしくはcを押します。
複数選択したい場合は、fで選んでからenterもしくはcを押します。

コマンド入力
選んだファイルに対して実行したいコマンドを入力するモードになります。
選んだファイルをコマンドの中で使いたいときは$Fで参照できます。
コマンド例
git checkoutgit addgit diffmkdir /tmp/test; cp $F /tmp/test/cat $F | wc -lscp $F server:~/backup/
その他 tips
-
fppコマンド単体で入力すると、前回の標準入力や、ファイル選択がそのまま使用されます。
-
スペースを含むもの、拡張子がないものなどは今現在は未対応なようです。https://github.com/facebook/PathPicker/issues/7
↩

