提供: FreeBSD入門
移動: 案内検索
行128: 行128:
$ pkg search . | fzf
$ pkg search . | fzf
ssh のホスト名を補完できます。
<syntaxhighlight lang="bash">
$ ssh **
kill も補完できるようですが、FreeBSDだと補完結果からプロセス番号がちゃんと入力できませんでした。
== 使用例 コマンドライン ==
== 使用例 コマンドライン ==
<nowiki>**</nowiki>のあとにタブを入力することで [[fzf]] が呼び出されます。
<nowiki>**</nowiki>のあとにタブを入力することで [[fzf]] が呼び出されます。

2015年12月25日 (金) 20:13時点における版

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


えふ ぜっと えふ
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]
    -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.
    -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: '> ')
    -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>

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

pkg コマンドで検索した結果を fzf でフィルターできます。

$ pkg search . | fzf

ssh のホスト名を補完できます。

$ ssh **

kill も補完できるようですが、FreeBSDだと補完結果からプロセス番号がちゃんと入力できませんでした。

使用例 コマンドライン

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

 $ ls /etc/ss**                                       [1][2588][a1 ~]19:05:35
> /etc/gss/
> 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

検索キーワードとして 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
> pkcrack

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


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