注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

windows 下又爱又恨的lookupfile  

2011-09-30 18:26:01|  分类: 杂记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
lookupfile 插件是vim开发必备的插件,可是由于可恶的windows不能完美的支持。怎么办呢? 办法还是有的,记得前一段时间机器里装了Git,它自带了GNU bash。有了这个就好办多了。下面说一下怎么干:
一、安装Git,我的安装目录在d:/Git,将路径D:/Git/bin加入到环境变量
二、进入d:/Git/bin目录下,将find.exe复制一份叫vim_find.exe,sort.exe复制一份叫vim_sort.exe,备用。
三、将lookupfile插件安装到指定目录下
四、创建文件gentags.sh:
#! /bin/sh 
# generate tag file for lookupfile plugin
 #get current workspace absolute path in windows
curpath=$(echo `pwd` | sed -e 's/^\/\([a-z]\)/\1:/g') 
 echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" > tags
vim_find "$curpath" \( -name .svn \) -prune -o -not -iregex '.*\.\ (jar\|gif\|jpg\|png\|exe\|dll\|pdd\|sw[op]\|xls\|doc\|pdf\|zip\|tar\|ico\|ear\|war\|dat\).*' -type f -printf "%f\t%p\t1\n" \
 | vim_sort -f >> tags
这个不用过多的解释,主要是排除了一些特殊扩展名的文件,这样生成的tags文件会很小,vim加载时会快一些

五、生成gentags.bat文件
@echo off
bash gentags.sh
这里注意:当运行bash `pwd` 时会得到类似于/d/tmp而不是d:/tmp,所以gentags.sh中增加了curpath=$(echo `pwd` | sed -e 's/^\/\([a-z]\)/\1:/g') 
一切都准备好了,现在开始配置lookupfile,我的配置如下:
" Auto change directory
set autochdir

let g:LookupFile_MinPatLength= 2 "最少输入2个字符才开始查找 
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串 
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目 
et g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件

nmap <silent> <leader>lk :LookupFile<cr>
 nmap <silent> <leader>ll :LUBufs<cr> 
nmap <silent> <leader>lw :LUWalk<cr> 

 function! LookupFile_IgnoreCaseFunc(pattern) 
  let _tags = &tags
  try let &tags = eval(g:LookupFile_TagExpr)
let newpattern = '\c' . a:pattern 
  let tags = taglist(newpattern) 
  catch echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE 
  return "" 
 finally 
  let &tags = _tags endtry " Show the matches for what is typed so far.
  let files = map(tags, 'v:val["filename"]')
  return files 
endfunction

let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc' 

 function! TagsRootSet(path)
  exe 'cd '.a:path exe '!gentags'
  let tagFilePath = genutils#CleanupFileName(a:path.'/tags') 
  let g:LookupFile_TagExpr='"./tags"' 
 endfunction 

 function! SetHRoot() 
  call TagsRootSet('.') 
endfunction
 nmap <leader>root :call SetHRoot()<CR>

function! SetSpecifiedPathTheRoot() 
  call TagsRootSet(input('Please input the root folder path: '))
 endfunction
 nmap <leader>xroot :call SetSpecifiedPathTheRoot()<CR>

注意: 由于我的设置了autochdir所在在生成tags时必须绝对路径,这样才能保证在路径切换时不会报错。
  评论这张
 
阅读(985)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017