Vim - 通过winmanager整合NERDTree和Tagbar

最近做开发用的机器从windows切换到了mac,开发环境的变化,第一件事是配置顺手的各类开发工具,首当其冲的就是编辑器了。作为一个前端狗,IDE等这些重量级的我是没机会、也没必要去使用的。刚开始做开发时因为也要做php,所以直接用的dreamweaver,它对php和html css js的支持都不错,基本的代码不全、全局文件搜索、svn等都有支持。后来。。后来php做的少了,觉得dw打开有点慢,于是转而寻找顺手的编辑器,于是看上了vim(当时我还不知道sublime text,不然我肯定不会掉进vim这个大坑里了),学了点基本使用,就开始主要用它来做开发了,一用就是三两年。

在widows上使用vim,我只是用了为数不多的插件,minibufexpl.vim、win manager、taglest(基本上不支持js,所以。。。),补全完全依赖vim内置的补全机制(c-x c-o,c-p等)。当时也没有很大心思要去折腾补全,我告诉自己,少用补全,可以逼迫自己更加去熟练记住各类dom、js方法,提高业务水平。当然,事实是,我根本搞不定vim。

现在切换到mac上,我重新规划了下vim的配置。基本上使用了以下插件:

Bundle 'minibufexpl.vim' //buffer管理
Bundle 'comments.vim' //快速注释
Bundle 'winmanager' //窗口管理

Bundle 'Valloric/YouCompleteMe' //强大的自动补全,谁用谁知道
Bundle 'Lokaltog/vim-powerline' //漂亮的状态栏
Bundle 'kien/ctrlp.vim' //强大的文件搜索
Bundle 'godlygeek/tabular' //快速对齐
Bundle 'terryma/vim-multiple-cursors' //多光标同时编辑
Bundle 'tpope/vim-haml' //sass scss haml等css开发语言支持
Bundle 'genoma/vim-less' //less支持
Bundle 'Raimondi/delimitMate' //自动补全引号 括号等
Bundle 'hail2u/vim-css3-syntax' //css3语法高亮
Bundle 'othree/html5.vim' //html5标签支持
Bundle 'docunext/closetag.vim' //html xml自动闭合标签
Bundle 'gregsexton/MatchTag' //自动高亮匹配标签
Bundle 'easymotion/vim-easymotion' //强大的搜索定位
Bundle 'terryma/vim-expand-region' //自动选择括号等符号中的内容
Bundle 'tpope/vim-surround' //符号自动环绕
Bundle 'tpope/vim-repeat' //更为强大的重做功能
Bundle 'bronson/vim-trailing-whitespace' //显示以及去除行尾空格
Bundle 'SirVer/ultisnips' //代码片段补全
Bundle 'honza/vim-snippets' //内置了一堆语言的自动补全片段
Bundle 'rstacruz/vim-ultisnips-css' //css的补全
Bundle 'tacahiroy/ctrlp-funky' //基于ctrlp的搜索函数等变量名
Bundle 'dyng/ctrlsf.vim' //基于ctrlp的文件内容搜索,配合vim-multiple-cursors可以很方便一次修改多个文件的内容
Bundle "pangloss/vim-javascript" //更好的js语法 锁进支持
Bundle 'othree/yajs.vim' //更好的js语法高亮
Bundle 'othree/javascript-libraries-syntax.vim' //js各类框架 库的高亮支持
Bundle 'maksimr/vim-jsbeautify' //格式化js css等
Bundle 'marijnh/tern_for_vim' //牛逼的基于语法分析的补全
Bundle 'mbriggs/mark.vim' //标记高亮
Bundle 'gorodinskiy/vim-coloresque' //颜色符号显示对应颜色
Bundle 'scrooloose/nerdtree' //文件树浏览
Bundle 'Xuyuanp/nerdtree-git-plugin' //git支持
Bundle 'majutsushi/tagbar' //ctags标签提取显示

现在已经用了这么多了,我感觉对于前端开发,这些已经完全够了。我的vimrc配置,放到了我的github上:https://github.com/qiqiboy/q-vim

上面废话了很多,这篇文章要说的重点来了,就是如何通过winmanager插件整合nerdtree和tagbar,我希望是在左侧一个竖条窗口中上下排布这两个插件,但是这俩插件都有个问题是通过winmanager的机智配置后,打开文件她俩还会单独打开它们自己的窗口,我搜索了一圈的Google 百度也没有人提到如果整合这两个插件的解决办法,于是只好自己摸索。经过各种尝试,通过以下办法可以成功解决:

"下面的代码放到自己的vimrc配置中即可"

let g:winManagerWindowLayout='NERDTree|Tagbar'
let g:winManagerWidth=30
let g:AutoOpenWinManager = 1 "这里要配合修改winmanager.vim文件,见下方说明"

let g:NERDTree_title = "[NERDTree]"
function! NERDTree_Start()
    exe 'q' "执行一个退出命令,关闭自动出现的窗口"
    exe 'NERDTree'
endfunction

function! NERDTree_IsValid()
  return 1
endfunction

noremap  :NERDTreeFind

let g:Tagbar_title = "[Tagbar]"
function! Tagbar_Start()
    exe 'q' "执行一个退出命令,关闭自动出现的窗口"
    exe 'TagbarOpen'
endfunction

function! Tagbar_IsValid()
    return 1
endfunction
let g:tagbar_vertical = 30

win manger插件要修改下,打开 winmanager/plugins/winmanager.vim ,在文件顶部加入下面的代码:

if g:AutoOpenWinManager 
autocmd VimEnter * nested call s:ToggleWindowsManager()|1wincmd w "vim进入时自动执行 ToggleWindowsManager ,然后移动一次窗口焦点
endif

经过以上的配置,就可以实现打开文件在左侧自动出现上下排布的nerdtree和tagbar窗口,效果如下:
vim_shot

本文已经有 6 条评论,继续盖楼啦!

发表评论 取消回复