VIM FZF 安裝和使用

在 Vim 中安装和使用 fzf 进行文件、函数、变量、宏定义的模糊匹配

以下是详细步骤:


1. 安装 fzf 和 fzf.vim 插件

1.1 安装 fzf 工具

fzf 是一个命令行模糊查找工具,必须先安装它。根据你的操作系统选择安装方式:

  • macOS:

    bash 复制代码
    brew install fzf
    $(brew --prefix)/opt/fzf/install
  • Linux (Debian/Ubuntu):

    bash 复制代码
    sudo apt update
    sudo apt install fzf
  • Windows:

    使用 Scoop 或 Chocolatey:

    bash 复制代码
    scoop install fzf
    choco install fzf
  • 从源码安装(适用于所有平台)

    bash 复制代码
    git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
    ~/.fzf/install
1.2 安装 fzf.vim 插件

fzf.vim 是 fzf 的 Vim 集成插件,提供文件、函数、变量等模糊匹配功能。

使用 vim-plug 安装:

.vimrc 中添加:

vim 复制代码
call plug#begin('~/.vim/plugged')
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
call plug#end()

然后在 Vim 中运行:

vim 复制代码
:PlugInstall

使用 Vundle 安装:

.vimrc 中添加:

vim 复制代码
call vundle#begin()
Plugin 'junegunn/fzf'
Plugin 'junegunn/fzf.vim'
call vundle#end()

然后在 Vim 中运行:

vim 复制代码
:PluginInstall

2. 使用 fzf 在 Vim 中模糊匹配

2.1 文件模糊匹配
  • 使用 :Files 命令打开当前目录的文件列表并进行模糊搜索。
  • 输入部分文件名,fzf 会实时显示匹配结果。
  • 按回车打开选中的文件。

快捷键绑定:

.vimrc 中添加快捷键:

vim 复制代码
nmap  :Files

按下 `` 即可快速启动文件搜索。


2.2 函数、变量、宏定义的模糊匹配

fzf 支持通过 ctags 文件进行代码符号(如函数、变量、宏定义)的模糊搜索。

步骤:
  1. 安装 ctags 工具(生成代码符号索引):

    • macOS:

      bash 复制代码
      brew install ctags
    • Linux (Debian/Ubuntu):

      bash 复制代码
      sudo apt install exuberant-ctags
    • Windows:
      使用 Scoop 或 Chocolatey 安装 Universal Ctags。

  2. 生成 tags 文件:

    在项目根目录运行以下命令,生成包含函数、变量等符号的 tags 文件:

    bash 复制代码
    ctags -R .
  3. 使用 :Tags 命令查找符号:

    • 在 Vim 中运行:

      vim 复制代码
      :Tags
    • 输入部分函数或变量名称进行模糊搜索,按回车跳转到定义位置。

  4. 快捷键绑定:

    .vimrc 中添加:

    vim 复制代码
    nmap  :Tags

    按下 `` 可快速启动符号搜索。


2.3 全局内容搜索(基于 ripgrep 或 ag)

如果需要查找代码中所有包含某个关键词的地方,可以结合 ripgrepag 工具使用 :Rg 命令。

安装 ripgrep 或 ag:
  • ripgrep (推荐):

    bash 复制代码
    sudo apt install ripgrep    # Linux (Debian/Ubuntu)
    brew install ripgrep        # macOS
  • ag (The Silver Searcher):

    bash 复制代码
    sudo apt install silversearcher-ag    # Linux (Debian/Ubuntu)
    brew install the_silver_searcher      # macOS
使用 :Rg 命令全局搜索:

在项目中运行以下命令:

vim 复制代码
:Rg 

例如:

vim 复制代码
:Rg my_function_name

这会列出所有包含 my_function_name 的代码位置,选择结果后按回车跳转。

快捷键绑定:

.vimrc 中添加:

vim 复制代码
nmap  :Rg

按下 `` 可快速启动全局内容搜索。


3. 配置和优化

3.1 自定义 FZF 默认命令(提高效率)

默认情况下,fzf 使用 find 查找文件。如果需要更快的查找工具,可以改为 fdag

.bashrc.zshrc 中添加:

bash 复制代码
export FZF_DEFAULT_COMMAND="fd --type f --hidden --exclude .git"

或者:

bash 复制代码
export FZF_DEFAULT_COMMAND="ag --hidden --ignore .git -g ''"
3.2 启用文件预览功能

.vimrc 中配置预览窗口:

vim 复制代码
let g:fzf_preview_window = ['right:50%', 'ctrl-/']

这样,在搜索时可以预览选中文件的内容。


4. 总结常用命令

命令 功能描述
:Files 模糊查找当前目录中的文件
:Buffers 模糊查找当前打开的缓冲区
:Tags 模糊查找代码中的函数、变量或宏定义(需 ctags)
:Rg 全局内容搜索(需 ripgrep 或 ag 支持)
`` 快速启动文件查找(需绑定快捷键)
`` 快速启动符号查找(需绑定快捷键)

通过以上配置,你可以高效地使用 fzf 在 Vim 中进行文件、函数、变量和宏定义的模糊匹配。

Citations:

1\] https://blog.csdn.net/qq_46039512/article/details/137696023 \[2\] https://blog.csdn.net/weixin_45696455/article/details/137143350 \[3\] https://juejin.cn/post/6905741816205672456 \[4\] https://blog.csdn.net/yuhan61659/article/details/82712760 \[5\] https://blog.csdn.net/KALIOUWEN/article/details/139264314 \[6\] https://www.zhihu.com/question/26248191/answer/2680677733 \[7\] https://keelii.com/2018/08/13/fuzzy-finder-full-guide \[8\] https://github.com/solomonxie/solomonxie.github.io/issues/25

相关推荐
Chuncheng's blog4 分钟前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起5 分钟前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos
明月看潮生12 分钟前
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
linux·青少年编程·操作系统·系统软件·编程与数学
aitav037 分钟前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker
姓刘的哦1 小时前
ubuntu中使用docker
linux·ubuntu·docker
代码程序猿RIP2 小时前
【Linux】(1)—进程概念-⑤进程调度
linux·运维
我命由我123452 小时前
VSCode - VSCode 放大与缩小代码
前端·ide·windows·vscode·前端框架·编辑器·软件工具
_lizhiqiang2 小时前
联想拯救者R9000P 网卡 Realtek 8852CE Ubuntu/Mint linux 系统睡眠后,无线网卡失效
linux·运维·ubuntu·r9000p·无线网卡·8852ce
心随_风动3 小时前
SUSE Linux 发行版全面解析:从开源先驱到企业级支柱
linux·运维·开源
old_power4 小时前
VSCode 工作区配置文件通用模板创建脚本
ide·vscode·编辑器