将当前目录下的所有as文件加入缓冲区列表
vim的缓冲区列表(buffer list)保存着打开过的文件集合。使用 :b filename
可以快速打开需要的文件,且支持文件名自动补全,为编辑提供方便。
如果所有源文件都加入到缓冲区列表中,在编辑源码的时候不就更方便了么?
使用 :badd
命令可以将一个文件加入到缓冲区,我写了3个函数来提供批量加入和文件搜索的功能:
- GetFileList返回提供的路径(和子目录)下的所有as文件的列表;
- EchoBaddList将提供的路径(和子目录)下的所有as文件输出成Vim支持的添加缓冲区列表语句,并输出到当前缓冲区中;使用这个函数,可以方便的编辑自己的Session文件;
- BaddList则直接将提供的路径(和子目录)下的所有as文件加入到缓冲区列表。
1" 获取目录下的所有文件的列表
2function! GetFileList(...)
3 if exists('a:1')
4 let path = a:1
5 else
6 let path = glob("%:h")
7 endif
8 if exists('a:2')
9 let ext = a:2
10 else
11 let ext = "as"
12 endif
13 let trueList = []
14 " 获取子目录中的文件列表
15 let fileList = split(glob(path."/**/*.".ext), "\")
16 for afile in fileList
17 if isdirectory(afile)
18 " 排除目录
19 continue
20 end
21 call add(trueList, afile)
22 endfor
23 return trueList
24endfunction
25
26" 输出buffer列表到当前缓冲区
27function! EchoBaddList(...)
28 let baddList = call("GetFileList", a:000)
29 for afile in baddList
30 execute 'normal obadd '.afile
31 endfor
32endfunction
33
34" 将path中的文件直接加入buffer列表
35function! BaddList(...)
36 let baddList = call("GetFileList", a:000)
37 for afile in baddList
38 execute 'badd '.afile
39 endfor
40endfunctio
运行一下看看 :call BaddList('src')
再看看缓冲区是否被加入了: :ls
- 文章ID:1427
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/1427/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。