是否有 (Neo)Vim 选项仅在特定文件类型的路径中使用双星号(递归目录搜索)?

问题描述 投票:0回答:1

我正在 Neovim 中寻找一种使用

**
递归设置路径的方法,但仅适用于特定文件类型。例如。
vim.opt.path="/a/**/*hpp"
不起作用。我想找到特定的文件类型,同时保持 Neovim 中路径进程的高性能。我当前管理路径进程性能的方法是使用
vim.opt.path
vim.opt.wildignore
设置并避免对大型目录进行递归搜索。所以它看起来像:

local init_path = {
        ".",
        "/a/**",
        "/b/**",
        "/usr/include/**",
        "**"
}

vim.opt.path:append(init_path)

vim.opt.wildignore = {
    '*/c/*',
    '*/d/*',
    '*.exe',
    '*.bin',
}
vim path neovim
1个回答
0
投票

path
选项的全部目的是通过在多个预定义目录中进行搜索来简化文件搜索。例如,通过仔细定义
path
,您不必在包含中使用整个路径,也不必使用
:find
过于具体。

因此,

path

的值应该是有趣目录的精选列表,而不是垃圾填埋场……这使得在
,**
中使用
path
成为一种反模式。如果深度不是太深,
,dir/**
在某些情况下可能是可以接受的。 YMMV.

代替:

.,/a/**,/b/**,/usr/include/**,**
做:

.,,/a/cooldir,/b/supercooldir,/usr/include
您越具体,文件搜索就越有用和快速。

第二……可以通过两种方式将设置应用于特定文件类型。

  • 在您的

    vimrc

    中使用自动命令:

    augroup MyFileTypeSettings autocmd FileType foo setlocal path=.,/a/cool,/b/supercool,/usr/include augroup END
    优点:

      从简单开始
    • 一切尽在您的
    • vimrc
      
      
    缺点:

      冗长
    • 很快就会变得混乱
    • 不必要地重新创建现有的“ftplugin”机制
    • 添加冗余自动命令
    不推荐。

  • 在专用文件类型插件中:

    1. 确保您的

      vimrc 中具有 以下行之一:

      filetype plugin on
      filetype plugin indent on
      filetype indent plugin on
      

    2. 创建 ftplugin(此处用于
    3. cpp

      文件类型):

      ~/.vim/after/ftplugin/cpp.vim
      

    4. 将您的设置放入该文件中:
    5. setlocal path=.,/a/cool,/b/supercool,/usr/include

      
      
    6. 从现在开始,每当您编辑具有
    path

    文件类型的文件时,

    cpp
    都将在本地设置为所需的值。
    优点:

    惯用语
    • 轻量级
    • 不啰嗦
    • 组织得很好
    • 缺点:

    很多文件
© www.soinside.com 2019 - 2024. All rights reserved.