vim的lookupfile插件在windows平台上tag文件生成

在linux平台上,生成lookupfile的tag文件,采用如下的shell命令:
#!/bin/sh
echo -e '!_TAG_FILE_SORTED/t2/t/2=foldcase/' > filenametags
find . -not -regex '.*/./(png/|gif/)' -type f -printf "%f/t%p/t1/n" | sort -f >> filenametags
翻译成windows平台上的shell命令,大致为:
dir /B /S /A-D /ON *.fnc *.prc *.trg *.pck *.typ *.spc *.bdy *.tps *.tpb *.txt *.sql > filenametags
dir /B /S /A-D /ON | findstr /V ".class$ .xls$ .doc$ .ppt$ .pdf$ .jpg$ .gif$ .zip$ .rar$ .jar$ .dat$ .mdb$ .dmp$ " > filenametags

但这样最终输出的tag文件还不复合lookupfile的tag文件格式要求(文件名+tab键+文件全路径+tab键+数字1),所有还需要再处理一下,
这里采用的一个办法是使用vim内嵌函数的方法,所以需要继续处理一下,这里贴出一段vim脚本,写到_vimrc文件中后每次启动vim后加载,
然后调用call ProjectTagUpdateLookupFile()方法(或map一个命令)即可刷新tag文件了。
其中参考了happyvim(水木bbs的vim版)编写的project.vim插件代码,在此表示感谢。
" Lookup File
" Author: happyvim
" Function: ProjectTagUpdateLookupFile
" Args:
" Description: regenerate lookupfile tags
function! ProjectTagUpdateLookupFile()
  echo "generate lookupfile.tag"
  if filereadable(g:project_lookup_file)
    call delete(g:project_lookup_file)
  endif
  execute "cd " .  g:this_project_base_dir
  let l:lookup_tags = ["!_TAG_FILE_SORTED	2	//2=foldcase//"] 

  if has("win32")
    let l:this_project_base_dir = substitute(g:this_project_base_dir, "/", "//", "g") . "//"
  else
    let l:this_project_base_dir = g:this_project_base_dir
  endif
  "let l:lookup_tags_file_string = system(g:project_find_program . " " . l:this_project_base_dir . " " . g:project_find_param)
  let l:lookup_tags_file_string = system(g:project_find_program . " " . g:project_find_param)
  let l:lookup_tags_file_list = split(l:lookup_tags_file_string, '/n')
  let l:lookup_tags_file_list = sort(l:lookup_tags_file_list)

  let l:item = ""
  let l:count = 0 
  for l:item in l:lookup_tags_file_list
    let l:item = fnamemodify(l:item, ':t') . "/t" . l:item . "/t" . "1"
    let l:lookup_tags_file_list[l:count] = l:item
    let l:count = l:count + 1
  endfor 
  call extend(l:lookup_tags, l:lookup_tags_file_list)
  call writefile(l:lookup_tags, g:project_lookup_file)
  echo "generate lookupfile tag done"
endfunction

"dir /B /S /A-D /ON *.fnc *.prc *.trg *.pck *.typ *.spc *.bdy *.tps *.tpb *.txt *.sql > filenametags
"dir /B /S /A-D /ON | findstr /V ".class$ .xls$ .doc$ .ppt$ .pdf$ .jpg$ .gif$ .zip$ .rar$ .jar$ .dat$ .mdb$ .dmp$ " > filenametags
let g:project_lookup_file = "D:/Harvest/filenametags"
let g:project_find_program = "dir /B /S /A-D /ON"
let g:project_find_param = "*.fnc *.prc *.trg *.pck *.typ *.spc *.bdy *.tps *.tpb *.txt *.sql"
let g:this_project_base_dir = "D:/Harvest"

let g:LookupFile_TagExpr = '"D:/Harvest/filenametags"'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值