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 | fpp
git grep 'regex' | fpp
git diff HEAD~3 --stat | fpp
fpp . -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 checkout
git add
git diff
mkdir /tmp/test; cp $F /tmp/test/
cat $F | wc -l
scp $F server:~/backup/
その他 tips
-
fpp
コマンド単体で入力すると、前回の標準入力や、ファイル選択がそのまま使用されます。
-
スペースを含むもの、拡張子がないものなどは今現在は未対応なようです。https://github.com/facebook/PathPicker/issues/7
↩