vim 的快速搜索插件 leaderf

作者: , 共 2908 字 , 共阅读 0

之前用的是 ctrlp ,现在改用 leaderf ,配置更简单(主要是没搞定 ctrlp 过滤指定文件和文件夹),功能也更多一点。

安装和配置

Plug 'Yggdroot/LeaderF', { 'do': './install.sh'  }

let g:Lf_ShortcutF = '<c-p>'
nmap <unique> <leader>fr <Plug>LeaderfRgPrompt
nmap <unique> <leader>fra <Plug>LeaderfRgCwordLiteralNoBoundary
nmap <unique> <leader>frb <Plug>LeaderfRgCwordLiteralBoundary
nmap <unique> <leader>frc <Plug>LeaderfRgCwordRegexNoBoundary
nmap <unique> <leader>frd <Plug>LeaderfRgCwordRegexBoundary
vmap <unique> <leader>fra <Plug>LeaderfRgVisualLiteralNoBoundary
vmap <unique> <leader>frb <Plug>LeaderfRgVisualLiteralBoundary
vmap <unique> <leader>frc <Plug>LeaderfRgVisualRegexNoBoundary
vmap <unique> <leader>frd <Plug>LeaderfRgVisualRegexBoundary

let g:Lf_WorkingDirectoryMode = 'c'
let g:Lf_UseVersionControlTool = 0
let g:Lf_DefaultExternalTool = "rg"
let g:Lf_ExternalCommand = 'rg --files "%s"'   

let g:Lf_WildIgnore={ 'file':['*.lib', '*.a', '*.o', '*.d', '*.so', ],'dir':['tmp', '.git', 'api', 'attachments', 'images', 'img', 'download',  ]}

在用之前还需要先安装rg

sudo apt install -y ripgrep

配置有几个要点,首先是定义一些快捷键,最常用的是ctrl+p快速调用搜索文件框,然后是,fr搜索文件内容。

然后是Lf_WorkingDirectoryMode一定要设置为c,即搜索当前工作路径下的文件。后面两个选项设置使得工作路径下如果有git子模块,也会被搜索(默认将被忽略,很诡异的默认设置)。

上面设置 leaderf 使用 rg 来搜索文件和文件内容,默认将根据.gitignore忽略指定文件夹内容。如果不想使用.gitignore,可设置-no-ignore-vsc

let g:Lf_ExternalCommand = 'rg --files "%s" --no-ignore-vcs'  

然后在目录下创建.ignore文件,把要忽略的内容写到该文件下。

附 Lf_WorkingDirectoryMode 的选项说明:

g:Lf_WorkingDirectoryMode                       *g:Lf_WorkingDirectoryMode*
    This option customizes LeaderF's working directory.
    e.g., >
    let g:Lf_WorkingDirectoryMode = 'Ac'
<
    c - the directory of the current working directory.(default)
    a - the nearest ancestor of current working directory that contains one of
        directories or files defined in |g:Lf_RootMarkers|. Fall back to 'c' if
        no such ancestor directory found.
    A - the nearest ancestor of current file that contains one of directories
        or files defined in |g:Lf_RootMarkers|. Fall back to 'c' if no such
        ancestor directory found.
    f - the directory of the current file.
    F - if the current working directory is not the direct ancestor of current
        file, use the directory of the current file as LeaderF's working
        directory, otherwise, same as 'c'.
    Note: if "f", "F" is included with "a" or "A", use the behavior of "f" or
    "F"(as a fallback) when a root can't be found.

Q. E. D.

类似文章:
编程 » vim
vim 有一个注释相关的插件 nerdcommenter ,特别好用。可以使用<leader>c快速切换注释状态(不是注释就改成注释,已经是注释则取消注释):
IT » windows terminal, vim
在 VIM 里, Ctrl+V 用来标记一个矩形区域,可以同时操作多行文本,某些时候特别方便。但若用的 SSH 客户端是 windows terminal ,这个快捷键默认为粘贴文本,和 VIM 矩形区域标记的功能冲突(参考 issue: Ctrl+V (vertical selection in Vim) does not work)。
编程 » VIM
vim 里对代码简单对齐缩进,可以选定文本区域后用快捷键=。如果全文对齐,可以用ggvG=ggvG可以选中全文)。但对于某些复杂的代码(比如html),其对齐可能会乱。
IT »
有时候用vim打开文件,每行结尾都有一个灰色的^M。这个原因是该文件在 windows 或 mac 系统上被创建:
IT » vim
vim 和普通的文本编辑器不一样,不能用鼠标拖动,需要用快捷键操作,控制光标所在位置。
编程 » C++, 智能指针
理论上而言,当 C++提供了std::unique_ptr, C++的程序就不应该出现普通指针了。所有普通指针都可以用std::unique_ptr代替,避免手动删除对象。
IT » git
如果还没有执行git add,此时被认为尚未暂存以备提交的变更,git status结果如下:
八达岭森林公园是一个景区,在八达岭长城的东南方向。公园被八达岭高速辅路隔开,路东边是红叶岭,西边是青龙谷。