FZF

fzf 是一个非常强大的终端文件模糊查找神器,在mac下也有许多优秀的工具,比如mac自带的 spotlight , Alfred ,这些工具在桌面环境下非常好用,也十分漂亮,但我的工作一般都在终端下, fzf解决了我的问题. fzf有很多优点,可移植,速度超快,最重要的是,当fzf与 zsh, ranger, vim 碰撞在一起,极大的提高了我的工作效率.

FZF

  • fzf的安装非常简单,在mac下,可以使用Homebrew来安装:
brew install fzf

现在就可以通过 fzf 命令来使用fzf了

如果你刚安装完成,你的界面跟上图不一样,没有右侧的预览窗口,别着急,这些是可以在配置文件中修改的.

  • 如果要安装 key bindingsfuzzy completion :
$(brew --prefix)/opt/fzf/install

一路y,则会在你的根目录下生成 .fzf.bash.fzf.zsh 文件,想要配置fzf,则只需修改相应的文件即可.

FZF + ZSH = AMAZING

fzf的配置文件写在 .fzf.zsh 中, 由于我的 zsh 配置文件在 .config/zsh 目录下, 所以我将fzf的配置文件也移到此处

mv ~/.fzf.zsh ~/.config/zsh/fzf.zsh

下面开始配置 fzf.zsh 文件

  • fzf的默认搜索工具: ag
export FZF_DEFAULT_COMMAND='ag'
export FZF_DEFAULT_COMMAND='ag --hidden --ignore .git -g ""'

上面两条任选其一, 第二条表示搜索到的文件包含隐藏文件,忽略 .git 文件

  • 模糊查找补全

fzf的默认键位为 ** ,太麻烦了,换成 \ 就舒服多了

export FZF_COMPLETION_TRIGGER='\'
  • 预览窗口的实现
export FZF_DEFAULT_OPTS='--bind ctrl-k:down,ctrl-i:up --preview "[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (ccat --color=always {} || highlight -O ansi -l {} || cat {}) 2> /dev/null | head -500"'

结合我的vim使用习惯,我将 ctrl + i 设置为向上, ctrl + k 设置为向下

当然,还有一些其他的配置,这些都可以在fzf的文档里找到.

FZF + RANGER = EXCELLENT

fzf 和ranger 结合可直接在ranger下进行文件搜索,直接跳转到文件所在目录

  • 首先在ranger的配置文件中设置打开fzf搜索的快捷键( ctrl+f )
vim ~/.config/ranger/rc.conf

// add the following line
map <C-f> fzf_select
  • commands.py 中添加 fzf_select 函数
class fzf_select(Command):
    """
    :fzf_select

    Find a file using fzf.

    With a prefix argument select only directories.

    See: https://github.com/junegunn/fzf
    """
    def execute(self):
        import subprocess
        import os.path
        if self.quantifier:
            # match only directories
            command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        else:
            # match files and directories
            command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        fzf = self.fm.execute_command(command, universal_newlines=True, stdout=subprocess.PIPE)
        stdout, stderr = fzf.communicate()
        if fzf.returncode == 0:
            fzf_file = os.path.abspath(stdout.rstrip('\n'))
            if os.path.isdir(fzf_file):
                self.fm.cd(fzf_file)
            else:
                self.fm.select_file(fzf_file)

FZF + VIM = UNBELIVABLE

fzf.vim 是fzf为vim玩家编写的插件

fzf.vim详细配置与快捷键设置


   转载规则


《FZF》 GeekOcean 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
COC COC
Conquer Of Completion
2021-03-02 GeekOcean
下一篇 
LINUX LINUX
LINUX COMMAND
2021-02-27 GeekOcean
  目录