blog


FZFがすごかったお話

間隔が空いておりますがおもむろに記事を書きます。 内容を一言で言うと

FZF便利です

FZFとは

Githubリンク

fzf is a general-purpose command-line fuzzy finder.

コマンドライン向けツールで、いわゆるfuzzy finderだそうです。 ざっくりいうと適当にファイル名打って開けるようになります。

以前技術ブログでpecoをご紹介したのですが、機能としては似たようなものかと思います。

強み

詳しい動作はgithubのリンクを見ていただけばgifアニメがついてますので分かるかと思いますが、コマンドライン上で以下のように使えます

# zsh
history -E 1 | fzf

上記コマンドですべてのヒストリから入力文字でfuzzyにmatchしてくれます

(※上記のヒストリから検索コマンドはインストールしておもむろにctrl + rを押すと変わってくれます(zsh))

本題

機能について軽く触れてみましたが、今回なぜこの記事を書こうと思ったかといいますと。。

https://neovim.io/news/

neovimのnews内にFZFの記述があり、しかもctrlpの代わりになりそう と書いてあったからです。

vim + ctrlpでサクサクファイルを開くのが好きだったのですが、neovimに移行するにあたって公式に書かれているFZFを使ってみました。という感じです。

NeovimでFZF使ってみた

というわけで設定してみた内容のご紹介をいたします。(ここまで長くてすみません。。)

Neovim + FZFで私が設定した内容は以下です。

  • プロジェクトルートからファイルを再起的に探して開く(Finder)
  • MRU的にファイルの履歴から開く(History)

忙しい方のために設定は以下です。

# vim-plugでのプラグイン記述
call plug#begin('~/.vim/plugged')
  Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
  Plug 'junegunn/fzf.vim'
call plug#end()

# init.vim
function! s:find_git_root()
  return system('git rev-parse --show-toplevel 2> /dev/null')[:-2]
endfunction

command! ProjectFiles execute 'Files' s:find_git_root()

nnoremap <silent> <C-p> :ProjectFiles<CR>
nnoremap <silent> <M-p> :History<CR>

ポイントとしましては、fzf本体のインストールとプラグインのインストールの二つを行うと便利です(必須ではなさそうです。(要出典))

上記の設定で以下のように使えます。

  • Ctrl + p: プロジェクトルートからファイルを開く
  • Alt + p: MRU(最近編集したファイル) から開く

一旦よく使う設定だけ記述してしばらく運用してみようかと思います。 上記のHistoryコマンドを始め、様々な用途で使えるコマンドがすでに定義されていますので以下の公式リンクをぜひご確認くださいませ

https://github.com/junegunn/fzf.vim

以上、ざっくりとfzfについて書いてみました。

ここまで読んでくださった皆様のコーディングライフの役に立てば嬉しいです。

以下wantedlyのリンク(宣伝)でございます。ご査収くださいませ! https://www.wantedly.com/companies/foodison