首页 > 系统服务 > 详细

使用vim内建函数findfile()笔记

时间:2018-10-23 00:33:46      阅读:166      评论:0      收藏:0      [点我收藏+]

findfile()类似find命令, 可以快速查找文件. 它接受三个参数: (被搜索的)文件名, 搜索路径(与搜索方式)与匹配次数(-1为不限次数). 返回值是一个包含给定匹配次数的文件列表.
例如平时工作时需要在头文件与源文件之间快速切换, 而两者又不在统一目录, 那么可以使用以下代码:

 1 nnoremap <leader>% :call FindHeader()<CR>
 2 function! FindHeader()
 3  let targetfile = ""
 4  if expand("%:e") == "h"
 5   let targetfile = expand("%:t:r").".cpp"
 6  else
 7   let targetfile = expand("%:t:r").".h"
 8  endif
 9  for onefile in findfile(targetfile, "**", -1)
10   silent exe ":e ".onefile
11  endfor
12 endfunction

 

使用findfile()时需要注意它的搜索方式: downward / upward / combile. 关于搜索方式建议使用:h file-searching查看详细说明. 我的理解如下:
downward search时通配符*与**起效(分别匹配文件basename与dirname). 类似shell中通配符无需加.(*即.*), 此外可以使用**n指定搜索目录层数(最大n层目录).
upward search时使用;指定向上搜索的截止目录, 如果有多个截止目录则用多个;隔开, 没有截止目录则使用;(没有;则不使用upward search).
当搜索路径中既包含通配符又包含;时使用combine search模式, 会同时向上向下搜索(此时搜索目录最为复杂).
举例当前vim工作目录为~且包含123与456两个子目录:
findfile(file, "*", -1)仅在~下搜索文件file.
findfile(file, "**", -1)在~及其子目录下搜索文件file.
findfile(file, ";", -1)从~开始向上搜索至根目录, 查找文件file.
findfile(file, "/home;", -1)从~开始向上搜索至/home目录, 查找文件file.

使用vim内建函数findfile()笔记

原文:https://www.cnblogs.com/Five100Miles/p/9834004.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!