`
gk23
  • 浏览: 171486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)打造自己的vim界面--用winmanager合并显示NERDTree和TagList

阅读更多

转自:http://www.cnblogs.com/ifys/archive/2010/10/24/1860610.html

先上个图:

 
  

需要用到的插件:

taglist需要ctags支持

ctags.exe:http://ctags.sourceforge.net/

taglist显示tag列表

taglist:http://www.vim.org/scripts/script.php?script_id=273

显示buf列表:

bufexplorer:http://www.vim.org/scripts/script.php?script_id=42

Nerd_Tree文件浏览

Nerd_tree:http://www.vim.org/scripts/script.php?script_id=1658

界面管理插件:

winmanager:http://www.vim.org/scripts/script.php?script_id=95

 

一、ctags:

下载解压后是源码,感觉就那个exe文件有点用。直接放到一个目录里,D:\ctags58。

设置一下环境变量。path=D:\ctags58。这样可以直接运行目录下面的ctags.exe文件。或者直接把ctags.exe放入windows的目录里。

vimrc中的设置:

?
1
2
"生成一个tags文件
nmap <F9> <Esc>:!ctags -R *<CR>

 

二、taglist设置:

下载解压到相应的vim文件夹中。

vimrc中设置:

?
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
41
42
43
44
45
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
 
"设置Taglist
 
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
 
" 这项必须设定,否则出错,配置taglist的ctags路径
 
let Tlist_Ctags_Cmd = 'D:\ctags58\ctags.exe'
 
   
 
" 不同时显示多个文件的 tag ,只显示当前文件的
 
let Tlist_Show_One_File=1
 
   
 
" 如果 taglist 窗口是最后一个窗口,则退出 vim
 
let Tlist_Exit_OnlyWindow=1
 
   
 
"让当前不被编辑的文件的方法列表自动折叠起来
 
let Tlist_File_Fold_Auto_Close=1
 
   
 
"把taglist窗口放在屏幕的右侧,缺省在左侧
 
let Tlist_Use_Right_Window=1
 
   
 
"显示taglist菜单
 
let Tlist_Show_Menu=1
 
   
 
"启动vim自动打开taglist
 
"let Tlist_Auto_Open=1

启动自动打开这个选项暂时不设置。后面要让winmanager调用taglist。

 

三、bufexplorer:

下载解压,没啥说的。

 

四、winmanager:

下载解压,vimrc中的设置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "
 
"" winManager setting
 
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "
 
"设置界面分割
 
"let g:winManagerWindowLayout = " BufExplorer,FileExplorer|TagList"
 
let g:winManagerWindowLayout = "TagList|FileExplorer,BufExplorer"
 
   
 
"设置winmanager的宽度,默认为25
 
let g:winManagerWidth = 30
 
   
 
"定义打开关闭winmanager按键
 
nmap <silent> <F8> :WMToggle<cr>

 

以上3个插件安装设置完毕后,基本的界面功能就可以实现了。按F8可以打开/关闭界面。同时显示taglist和fileexplorer。在fileexplorer窗口中按<c-n>可以切换到bufexplorer窗口。

上述设置好后,有3个问题:

1 我想让插件显示在右侧,但是winmanager里面没有此选项

2 进入vim时候不能自动打开winmanager,winmanager不像taglist支持该功能

3 退出时不会像只有taglist时候那样,退出当前文件就会退出vim了

 经过多次修改代码终于实在了上述3个功能。

 

五、将插件显示在右侧

打开winmanager.vim,在function! <SID>StartWindowsManager()函数中修改:

将:wincmd H 修改为wincmd L:

?
1
2
3
4
5
6
7
8
9
" for now assume that the explorer windows always stay on the left.
 
" TODO: make this optional later
 
" make the explorers window always stay on the right ---by chenyong
 
"        wincmd H
 
wincmd L

   

六、进入vim自动打开winmanager

这个功能作为可选功能,我们可以在vimrc中设置:

?
1
2
3
"在进入vim时自动打开winmanager
 
let g:AutoOpenWinManager = 1

 就可以让winmanager自动打开。

在winmanager.vim中修改:

 

?
1
2
3
4
5
6
7
"set auto open Winmanager
 
if g:AutoOpenWinManager
 
autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w 
 
endif

 

  七、退出缓冲区时,自动退出vim

这个功能是参考了taglist的自动退出功能,在taglist.vim中修改的。

函数:function! s:Tlist_Window_Exit_Only_Window()中的winbunr(2)改为winbunr(3),即只剩2个窗口时关闭,考虑到2个窗口肯定是同时存在,所以这样还是可行的:

?
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
41
42
43
function! s:Tlist_Window_Exit_Only_Window()
 
     " Before quitting Vim, delete the taglist buffer so that
 
     " the '0 mark is correctly set to the previous buffer.
 
     if v:version < 700
 
     if winbufnr(3) == -1
 
         bdelete
 
         quit
 
     endif
 
     else
 
     if winbufnr(3) == -1
 
         if tabpagenr( '$' ) == 1
 
            " Only one tag page is present
 
            bdelete
 
            quit
 
         else
 
            " More than one tab page is present. Close only the current
 
            " tab page
 
            close
 
         endif
 
     endif
 
     endif
 
endfunction

同时在vimrc中需要设置:

?
1
let Tlist_Exit_OnlyWindow=1
 

 winmanager自带的fileexplorer这个插件实在是比较差。最重要的一点 是fileexplorer不能自动更新,如果通过其他的途径修改了文件夹中的内容,fileexplorer是不会显示的。相对而言Nerd_Tree 功能就比较强大了。下面要把Nerd_Tree加入winmanager。

四、Nerd_tree:

下载解压,打开NERD_tree.vim,按照winmanager的说明,在最后加入下面代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"Used by winmanager {{{1
 
let g:NERDTree_title = "[NERDTree]"
 
function! NERDTree_Start()
 
     exe 'NERDTree'
 
endfunction
 
   
 
  function! NERDTree_IsValid()
 
return 1
 
endfunction

同时把在vimrc中:

?
1
let g:winManagerWindowLayout= 'NERDTree|TagList,BufExplorer'

原来的设置注释掉。加好后,发现每次打开winmanager都会出现一个空白的buffer。试验了好多次,但是Nerd_tree调用的函数就 是会打开一个新窗口。因为如此,将bufExplorer和NERD_Tree放在一起会显示不正常。NERD_Tree放在下面的窗口也会出错,实在比 较郁闷。。。。看了下NERD_Tree的代码,没看懂,只好再次改winmanager的代码了。

打开winmanager.vim,找到函数function! <SID>ToggleWindowsManager(),加入两行,修改后整个函数如下:

 

 

?
1
2
3
4
5
6
7
8
9
10
11
" toggle showing the explorer plugins.
function! <SID>ToggleWindowsManager()
     if IsWinManagerVisible()
         call s:CloseWindowsManager()
     else
         call s:StartWindowsManager()
"        NERD_tree need this. 打开时会有一个空白窗口,要把他关闭。
         exe '1wincmd w'
         exe 'q'
     end
endfunction

 

加个注释,以免以后忘掉了,如果不想用nerd_Tree了,这2句话还得删掉。

 

另外打开时的命令和关闭时的命令也得同时修改了,试验了很多次:

taglist.vim中,找到下面的代码:

 

?
1
2
3
4
5
         " Exit Vim itself if only the taglist window is present (optional)
"        if g:Tlist_Exit_OnlyWindow
"        autocmd BufEnter __Tag_List__ nested
"            \ call s:Tlist_Window_Exit_Only_Window()
"        endif

 

将这段代码修改为:

 

?
1
2
3
4
5
6
7
8
9
10
11
" Exit Vim itself if only the taglist window is present (optional)
  let s:NERDTreeBufName = 'NERD_tree_'
  if g:Tlist_Exit_OnlyWindow
      augroup Exit_onlywindow
          "当进入Nerd_Tree的buffer时也检测是否需要退出
          exec "autocmd BufEnter " . s:NERDTreeBufName .
                      \ "* call s:Tlist_Window_Exit_Only_Window()"
          autocmd BufEnter __Tag_List__ nested
              \ call s:Tlist_Window_Exit_Only_Window()
      augroup end
  endif

 

winmanager中:刚才添加的自动执行命令要改为:

 

?
1
2
3
4
5
"set auto open Winmanager
if g:AutoOpenWinManager
"    autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w 
     autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w|q
endif

这样所有的功能就实现了。在taglist窗口使用ctrl+n可以转换到bufexplorer窗口。

分享到:
评论

相关推荐

    vim插件工具(ctags taglist winmanager neocomplcach)

    资源提供了vim下常用插件,ctags可以实现代码的跳转,taglist方便查看程序结构,winmanager方便多窗口查看多个源文件,neocomplcache则提供自动补全功能。安装后可以感受到vim的便捷!

    VIM's Plugins Resource

    找一个值得倾注一生的文本编辑器:Vim is chosen. Vim的高度可配是众多编程大神的利器 但是配置vim的众多插件资源分散 vim.org,反正我是上不去 github一般家庭网络不是很稳定 花了好多时间,攒下的vim插件大集合。 ...

    vim-gvim-plugin

    vim-gvim-plugin -- taglist_45 winmanagervisualmark a.vim grep.vim

    Vim/Gvim配置文件+配色方案_By Marslo

    作为自己极为方便和顺手的编译器,在最近两年的使用中,我不断的更新和加强vim的功能,特此备份。。。 ============================== 开启最大化 (win32用户直接就可以最大化,但是linux用户则需要安装wmctrl,...

    Vim 配置文件

    自己的配置文件,为python和perl打造。 开启最大化 (win32用户直接就可以最大化,但是linux用户则需要安装wmctrl,详情参见:http://download.csdn.net/detail/jiaoxiaogu/4317843) 配置了MiniBuffer 添加了...

    Ubuntu VIM cscope ctag taglist nerd_tree winmanager omnicppcomplete插件配置文件

    Ubuntu VIM 插件配置文件,直接解压到 .vim/ 目录;包含 cscope ctag taglist nerd_tree winmanager omnicppcomplete;

    vim_dev_V1.1

    winmanager.vim - 提供侧边栏功能-F9打开,修改版显示到右侧 taglist.vim - 提供函数以及变量列表,整合到侧边栏 winfileexplorer.vim - 修改版:不显示隐藏目录-只显示.c.h文件整合到侧边栏 bufexplorer.vim - ...

    light_vim:用它来美化和优化vim

    plugin description a.vim c文件和h文件快速切换 airline.vim 增强vim底部状态栏显示 autoload_cscope.vim 自动加载cscope bufexplorer.vim ...LeaderF 和 ctrlp 互斥使用,低版本vim使用ctrlp,高版本(v

    linux_vim插件

    taglist winmanager lookupfile taglist winmanager lookupfile taglist winmanager lookupfile

    GVIM 的IDE界面设置

    主要就是c-tag和winmanager等,附件的东西放到home的.vim/目录下,同时vimrc中加入如下,按wm即可打开IDE界面: " Setup plugin 'winmanager' "-----------------------------------------------------------------...

    vim配置文件vimrc

    这是我自己的vim配置文件,包括winmanager、ctags、taglist、nerdtree等插件,功能非常强大,欢迎使用,详细使用介绍http://blog.csdn.net/nersie/article/details/24740155

    gvim8.2 主程序,配置文件和相关的plug.rar

    gvim vim 用vim-plug安装配置taglist ctrlp nerdtree winmanager nerdcommenter neocomplete 等常用程序, 参考博客 https://blog.csdn.net/howard789/article/details/113306624

    vim_plugin(vim changes to ide)

    将vim修改为ide常用插件:a.vim , grep.vim, visual mark.vim, supertab.vim, taglist.vim, winmanager.vim, minibufexpl.vim

    vim使用进阶:vim使用技巧、配置、命令和插件

    本文的最后介绍了winmanager插件,使用这个插件,可以把netrw插件、bufexplorer插件和taglist插件整合起来,使vim看起来更像一个集成开发环境(IDE)。 vim使用进阶: lookupfile插件 如果你在开发一个大的项目,当你...

    vim通用插件全集

    vim 插件 全集有a.vim grep.vim mark.vim minibufexpl.vim taglist.vim vimcdoc.vim visualmark.vim winfileexplorer.vim winmanager.vim wintagexplorer.vim

    vim_plugin.tar.gz

    自己用的vim plugin: bufexplorer.vim genutils.vim grep.vim lookupfile.vim minibufexpl.vim SuperTab.vim taglist.vim visualmark.vim winfileexplorer.vim winmanager.vim wintagexplorer.vim

    vim插件和配置 for Linux 自动补全 IDE

    里面的vim插件已经包含了taglist,omnicppcomplete等插件,无需再下载,详细的配置参考.vimrc,注意快捷键使用即可。有什么不喜欢和bug的地方,自行调整.vimrc。ctags命令工具还是要下载安装的。 1. 安装ctags和...

    vim 配置文件

    强大的vim配置文件,可同时适用于linux和windows下的vim配置。 涵盖了所有主流插件的配置,常见的显示设置,编译命令的映射。 插件: ctags 代码跟踪 taglist 类视图 winmanager 文件视图 minibuffer 显示多文件...

    vim编辑器vim-7.3.tar.bz2

    一款 很棒的 使用命令的编辑器 支持主流的开发语言,通过安装插件可以打造成很炫的集成开发环境!

    自己配的vim,很好用

    自己配的vim,很好用,得先下载winmanager,taglist,cscrop,ctags等工具配合来用,可以像vs一样的效果

Global site tag (gtag.js) - Google Analytics