`
gk23
  • 浏览: 176591 次
  • 性别: 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-plugin插件

    这些插件的结合使用,可以将 Vim 打造成一个功能齐全的 IDE,满足从基本文本编辑到高级代码调试和项目管理的各种需求。对于任何 Vim 用户来说,理解和掌握这些插件的功能和用法,都能显著提升他们的编程效率。

    VIM's Plugins Resource

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

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

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

    vim-gvim-plugin

    【vim-gvim-plugin】是一个针对Vim编辑器的插件集合,主要包含了四个核心组件:taglist_45、winmanagervisualmark、a.vim和grep.vim。这些插件旨在提升Vim的代码浏览、窗口管理、标记和搜索功能,使程序员在编辑代码...

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

    `taglist`是Vim的一个插件,它提供了一个侧边栏,显示当前文件的函数和变量列表。开发者可以通过这个列表直观地查看代码结构,快速定位到所需的函数或标识符,增强了代码的可读性和编辑体验。 `NERD_Tree`是另一个...

    Vim 配置文件

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

    vim_dev_V1.1

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

    vim编辑器vim-7.3.tar.bz2

    Vim编辑器是一款深受程序员喜爱的文本编辑工具,尤其在Linux和Unix系统中广泛使用,但也同样适用于Windows平台。它的全称是“Vi IMproved”,是最初Vi编辑器的一个高度可扩展和增强版本。Vim 7.3是这个系列的一个...

    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插件

    本文将重点探讨“Linux Vim插件”,特别是“taglist”、“winmanager”和“lookupfile”这三个插件,以及它们如何改善Vim的使用。 首先,`taglist`是一款非常流行的Vim插件,主要用于代码浏览。它能够生成并显示...

    GVIM 的IDE界面设置

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

    vim打造ide代码浏览器的插件

    TagList是Vim的一个标签栏插件,它能够显示当前工程中的所有函数、类和变量等标签,形成一个清晰的代码大纲。通过这个标签列表,你可以迅速跳转到感兴趣的代码段,或者了解整个项目的结构。TagList支持多种编程语言...

    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打造成IDE.pdf

    标题《把vim打造成IDE》直接指出了本文档的主要内容和目的,即如何将VIM这款原本作为编辑器使用的软件,改造成一个类似集成开发环境(IDE)的工具。在描述中,作者指出了Linux下编程环境的一个痛点,即缺少一款像...

    VimIde工具集

    例如,对于cscope和ctags,通常需要编译源代码,而对于taglist和winmanager这样的Vim插件,则需将其复制到Vim的plugin目录下。 2. **配置Vim**: 在.vimrc配置文件中添加必要的设置和映射,以启用这些工具的功能。...

Global site tag (gtag.js) - Google Analytics