vim的缓冲区列表(buffer list)保存着打开过的文件集合。使用 :b filename
可以快速打开需要的文件,且支持文件名自动补全,为编辑提供方便。

如果所有源文件都加入到缓冲区列表中,在编辑源码的时候不就更方便了么?

使用 :badd
命令可以将一个文件加入到缓冲区,我写了3个函数来提供批量加入和文件搜索的功能:

  • GetFileList返回提供的路径(和子目录)下的所有as文件的列表;
  • EchoBaddList将提供的路径(和子目录)下的所有as文件输出成Vim支持的添加缓冲区列表语句,并输出到当前缓冲区中;使用这个函数,可以方便的编辑自己的Session文件;
  • BaddList则直接将提供的路径(和子目录)下的所有as文件加入到缓冲区列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
" 获取目录下的所有文件的列表
function! GetFileList(...)
if exists('a:1')
let path = a:1
else
let path = glob("%:h")
endif
if exists('a:2')
let ext = a:2
else
let ext = "as"
endif
let trueList = []
" 获取子目录中的文件列表
let fileList = split(glob(path."/**/*.".ext), "\")
for afile in fileList
if isdirectory(afile)
" 排除目录
continue
end
call add(trueList, afile)
endfor
return trueList
endfunction
" 输出buffer列表到当前缓冲区
function! EchoBaddList(...)
let baddList = call("GetFileList", a:000)
for afile in baddList
execute 'normal obadd '.afile
endfor
endfunction
" 将path中的文件直接加入buffer列表
function! BaddList(...)
let baddList = call("GetFileList", a:000)
for afile in baddList
execute 'badd '.afile
endfor
endfunctio

运行一下看看 :call BaddList('src')
再看看缓冲区是否被加入了: :ls

留言

2011-08-27
次访问