gpt4 book ai didi

file - vim查找命令: how to list all matched files

转载 作者:行者123 更新时间:2023-12-04 14:46:49 30 4
gpt4 key购买 nike

vim的:find命令仅匹配一个文件。如果匹配更多文件,则会显示消息“文件名太多”。
vim是否有任何命令可以使用通配符或正则表达式查找文件,并允许用户在匹配的这些文件之间导航?

最佳答案

您似乎在混淆Vim的命令行完成和:find命令本身。
:find仅接受一个文件名(或解析为单个文件名的文件名)作为参数,但是允许您完成该单个参数的命令行补全功能允许您浏览path中与当前模式匹配的所有文件。

这种困惑使您真正想要的东西变得不明显:

  • 是否要打开:find来编辑每个与模式匹配的文件?
  • 还是要从中选择匹配项列表?

  • 前者在设计上是不可能的,但是您可以使用 :new命令( :help :new):
    :new *.foo

    当然,后者是可能的。为此,您需要在 ~/.vimrc中至少设置一些选项:
    set wildmenu
    set wildmode=list:full

    有关如何自定义Wildmenu行为的信息,请参见 :help wildmode。这些设置当然可以用于其他命令: :edit:split:buffer

    一些建议:
    set path+=**

    让Vim递归地在工作目录下查找文件。
    set wildignorecase

    告诉Vim忽略完成情况: :find foo将匹配 foo.txtFoo.txt
    set wildignore=*.foo,*.bar

    告诉Vim完成时忽略这些文件(可以是目录)。

    最后,这一系列的映射使我(在Vim中)的生活变得如此轻松:
    " regex completion instead of whole word completion
    nnoremap <leader>f :find *
    " restrict the matching to files under the directory
    " of the current file, recursively
    nnoremap <leader>F :find <C-R>=expand('%:p:h').'/**/*'<CR>

    " same as the two above but opens the file in an horizontal window
    nnoremap <leader>s :sfind *
    nnoremap <leader>S :sfind <C-R>=expand('%:p:h').'/**/*'<CR>

    " same as the two above but with a vertical window
    nnoremap <leader>v :vert sfind *
    nnoremap <leader>V :vert sfind <C-R>=expand('%:p:h').'/**/*'<CR>

    外观如下:

    关于file - vim查找命令: how to list all matched files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976517/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com