fzf

提供: FreeBSD入門
2015年12月25日 (金) 19:12時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「fzf とは、Go で開発されたコマンドラインの Fuzzy Finder です。peco のようなコマンドです。 '''読み方''' ;fzf:えふ ぜ...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

fzf とは、Go で開発されたコマンドラインの Fuzzy Finder です。peco のようなコマンドです。

読み方

fzf
えふ ぜっと えふ
Fuzzy Finder
ふぁじー ふぁいんだー

概要

Fuzzy Finder とは、あいまいな検索を意味します。 Fuzzy は、英語の形容詞の単語で、「あいまいな」といった意味があります。

fzf は、多目的のコマンドライン Fuzzy Finder です。fzf は、zshvim などから利用し、検索を効率化します。 Anything ライクなフィルタです。同系統のツールとして peco があります。zsh では、peco を組み合わせて使うこともできました。

peco は、fzf と同様に、人気のコマンドです。peco に比べて、表示がカッコイイ、画面を全部 peco で上書きされない(以前の画面がまるっと消えない)ところも良い所だと思います。

インストール

残念ながら FreeBSD の パッケージとして提供されていないため、 pkg コマンドではインストールができません。

途中で gem install が入ったせいか、 sudo が必要になりましたが、 sudo を入れると root の設定を変更しにいってしまうので、 fzf/install を2回叩くと簡単かもしれません。

$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
$ sudo ~/.fzf/install
$ ~/.fzf/install

以下は実行例です。

$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
Cloning into '/home/kaworu/.fzf'...
remote: Counting objects: 74, done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 74 (delta 1), reused 23 (delta 0), pack-reused 0
Unpacking objects: 100% (74/74), done.
Checking connectivity... done.
$ sudo ~/.fzf/install
パスワード:
No prebuilt binary for FreeBSD amd64 ...
Installing legacy Ruby version ...
Checking Ruby executable ... OK (/usr/local/bin/ruby)
Checking Curses support ... Not found
Installing 'curses' gem ...
Fetching: curses-1.0.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed curses-1.0.1
Installing ri documentation for curses-1.0.1
1 gem installed
Checking Ruby version ... >= 1.9
Creating wrapper script for fzf ... OK
Do you want to enable fuzzy auto-completion? ([y]/n) y
Do you want to enable key bindings? ([y]/n) y
 
Generate ~/.fzf.bash ... OK
Generate ~/.fzf.zsh ... OK
 
Update /root/.bashrc:
  - [ -f ~/.fzf.bash ] && source ~/.fzf.bash
    + Added
 
Update /root/.zshrc:
  - [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
    + Added
 
Finished. Restart your shell or reload config file.
   source ~/.bashrc  # bash
   source ~/.zshrc   # zsh
 
Use uninstall script to remove fzf.
 
For more information, see: https://github.com/junegunn/fzf

設定

zsh なら .zshrc に下記の設定が自動的に追加されます。

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

コマンドラインオプション

usage: fzf [options]
 
  Search
    -x, --extended        Extended-search mode
    -e, --extended-exact  Extended-search mode (exact match)
    -i                    Case-insensitive match (default: smart-case match)
    +i                    Case-sensitive match
    -n, --nth=N[,..]      Comma-separated list of field index expressions
                          for limiting search scope. Each can be a non-zero
                          integer or a range expression ([BEGIN]..[END]).
        --with-nth=N[,..] Transform the item using index expressions for search
    -d, --delimiter=STR   Field delimiter regex for --nth (default: AWK-style)
 
  Search result
    -s, --sort=MAX        Maximum number of matched items to sort (default: 1000)
    +s, --no-sort         Do not sort the result. Keep the sequence unchanged.
 
  Interface
    -m, --multi           Enable multi-select with tab/shift-tab
        --no-mouse        Disable mouse
    +c, --no-color        Disable colors
    +2, --no-256          Disable 256-color
        --black           Use black background
        --reverse         Reverse orientation
        --prompt=STR      Input prompt (default: '> ')
 
  Scripting
    -q, --query=STR       Start the finder with the given query
    -1, --select-1        Automatically select the only match
    -0, --exit-0          Exit immediately when there's no match
    -f, --filter=STR      Filter mode. Do not start interactive finder.
        --print-query     Print query as the first line
 
  Environment variables
    FZF_DEFAULT_COMMAND   Default command to use when input is tty
    FZF_DEFAULT_OPTS      Default options (e.g. "-x -m --sort 10000")

使い方

コマンド履歴の検索の例です。

$ C-r

コマンドラインで fzf を起動する例です。

$ ls **<TAB>

上記は、アスタリスク アスタリスク タブです。

使用例 コマンドライン

**のあとにタブを入力することで fzf が呼び出されます。

 $ ls /etc/ss**                                       [1][2588][a1 ~]19:05:35
────────────────────────────────────────
  /etc/rc.d/gssd
  /etc/gss/mech
  /etc/gss/qop
  /etc/passwd
  /etc/ssl/
  /etc/ssh/
> /etc/gss/
  100/398
> ss

使用例 コマンド履歴の検索

key-bindings.zsh で C-r が上書きされているので、 C-r で fzf を利用したコマンド履歴のサーチが利用できます。

C-r で コマンド履歴を検索します。

薫 $                                                  [146][2587][a1 ~]18:59:35
────────────────────────────────────────
   2578  man fzf
   2581  faf
   2582  rehash
   2583  source ~/.zshrc
   2584  fzf --v
   2585  ~/.fzf/install
>  2586  fg
  2561/2561
>

検索キーワードとして pkcrack を入力すると下記のように絞りこまれました。

薫 $                                                  [146][2587][a1 ~]18:59:35
────────────────────────────────────────
   1793  pkcrack -C unzip -c backnumber08.txt -p backnumber08.txt -d decrypte..
   1794  pkcrack unzipzip -c backnumber09.txt -p backnumber09.txt -d decrypte..
   1912  pkcrack -C unzip -c backnumber09.txt -p backnumber09.txt -Pbacknumbe..
   1913  pkcrack -C unzip -c backnumber09.txt -p backnumber09.txt -P backnumb..
   2105  pkg sekrch -f arm-gnueabi-gcc
   2107  pkg sekrch -f arm-none-eabi-gcc
>  2441  pkg info -l ncrack
  14/2561
> pkcrack

pkcrack に近い ncrack もマッチしてますね。

まとめ

  • fzf コマンドは、Fuzzy Finder です。
  • peco よりも UI 的には、 fzf の方がカッコイイ。
  • peco と違い fzfは、画面が全部消えない。
  • fzf は、パッケージ化されてない。

関連項目




スポンサーリンク