Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281623
  • 博文数量: 57
  • 博客积分: 1764
  • 博客等级: 上尉
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-09 18:14
文章分类

全部博文(57)

文章存档

2012年(24)

2011年(33)

分类: LINUX

2012-02-29 21:10:35

    Source Insight左边是Taglist,右边是FileExplorer,下面是预览窗口,最上面还有个已打开的文件列表条。

    需要三个插件:Winmanager,Taglist,MiniBufExpl,都可以从vim.org上下载。

1)首先,根据《Vim的Winmanager插件的个性化修改》,可以完成在右边显示FileExplorer

2)设置vimrc:

   let g:miniBufExplorerMoreThanOne = 0  "一个窗口,也显示文件列表条窗口(MiniBufExpl)

   nmap wm :TlistToggle :WMToggle "打开的先后顺序跟最后的winnr()有关

3)修改Winmanager插件,保证焦点一直在代码窗口。这里的修改跟wm映射的打开顺序有关:

   修改ToggleWindowsManager():

let l:bufnr = bufnr('-MiniBufExplorer-')
if l:bufnr != -1 

   let nr = bufwinnr(l:bufnr) + 1
elseif
   let nr = winnr()
endif

call s:StartWindowsManager()
exe nr . "wincmd w"

4)修改预览窗口的位置:通过【ctrl + w + }】打开预览窗口的位置在上方,在vimrc中添加如下语句

nmap ,pp :call PreviewWord()

func PreviewWord()
if &previewwindow " 不要在预览窗口里执行
   return
endif
let w = expand("") " 在当前光标位置抓词
let cwin = winnr()
if w =~ '\a' " 如果该单词包括一个字母
   try
      exe "belowright ptag " . w
   catch
      return
   endtry 
   silent! wincmd P "跳转至预览窗口
   if &previewwindow " 如果确实转到了预览窗口……
      if has("folding")
         silent! .foldopen "展开折叠的行
      endif
      call search("$", "b") " 到前一行的行尾
      let w = substitute(w, '\\', '\\\\', "")
      call search('\<\V' . w . '\>') "定位光标在匹配的单词上
      "给在此位置的单词加上匹配高亮
      hi previewWord term=bold ctermbg=green guibg=green
      exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
   endif
endif
exe cwin."wincmd w"
endfun

5)设置完毕后,按wm就可以打开窗口布局,按,pp即可以打开指定单词的预览窗口。

    有个遗留问题,按,pp打开的窗口有些不是预览窗口,不能用:pclose,不知道什么原因。由于,打开的窗口是在代码窗口之下,想了个歪招,加了如下映射:

nmap ,pc :wincmd j :wincmd c







阅读(4220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~