解决方法
你好像混淆了Vim的命令行完成和:find命令本身.
:find只接受一个单独的文件名(或解析为单个文件名的内容)作为参数,但命令行完成允许您完成该单个参数,允许您遍历路径中与当前模式匹配的所有文件.
这种混乱使你真正想要的不明显:
>你想要:找到打开来编辑与你的模式匹配的每个文件?
>或者您想要一个可供选择的比赛列表?
前者在设计上是不可能的,但您可以使用:new命令(:help:new):
:new *.foo
当然,后者是可能的.为此,您需要在〜/ .vimrc中至少设置几个选项:
set wildmenu set wildmode=list:full
请参阅:help wildmode,了解如何自定义wildmenu的行为.这些设置当然适用于其他命令:: edit,:split,:buffer …
一些建议:
set path+=**
让Vim在工作目录下递归查找文件.
set wildignorecase
告诉Vim忽略完成的情况:: find foo将匹配foo.txt和Foo.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>
以下是它的外观:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。