vim 打造IDE

1、MinBufExplorer

2、Ctags

Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。

[root@localhost ~]#ctags -R

  Ctrl-]    跳转到光标所在符号的定义。

  Ctrl-t    回到上次跳转前的位置。

3、TagList

Taglist是vim的一个插件,提供源代码符号的结构化视图。

    :Tlist  显示或关闭Taglist
    u             更新taglist窗口中的tag
    s             更改排序方式,在按名字排序和按出现顺序排序间切换
    x             taglist窗口放大和缩小,方便查看较长的tag
    +             打开一个折叠,同zo
    -             将tag折叠起来,同zc
    *             打开所有的折叠,同zR
    =             将所有tag折叠起来,同zM
    [[            跳到前一个文件
    ]]            跳到后一个文件      

4、NERDTree

    p 到上层目录
    P 到根目录
    K 到同目录第一个节点
    J 到同目录最后一个节点

5、winmanager

~/.vim/ 下加入插件文件

~/.vimrc 配置文件

plugin

-rw-r--r-- 1 root   root    68053 Nov 17 10:05 minibufexpl.vim
-rw-r--r-- 1 root   root     7864 Nov 14 00:54 NERD_tree.vim
-rw-r--r-- 1 root   root   152279 Aug 28 19:27 taglist.vim
-rw-r--r-- 1 root   root    39277 Nov 17 13:48 winfileexplorer.vim
-rw-r--r-- 1 root   root    39509 Nov 17 14:32 winmanager.vim
-rw-r--r-- 1 root   root    13399 Nov 17 13:48 wintagexplorer.vim

下载地址:

http://vim-scripts.org/vim/scripts.html

http://www.vim.org/

http://sourceforge.net/

set nocompatible

if has("syntax")
  syntax on            " 语法高亮
endif
""colorscheme molokai        " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下
colorscheme koehler
" detect file type
filetype on
filetype plugin on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark
set guifont=Monaco 10
set guifontwide=文泉驿等宽微米黑 10
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif
  "have Vim load indentation rules and plugins according to the detected filetype
  filetype plugin indent on
endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.

"set ignorecase        " 搜索模式里忽略大小写
"set smartcase        " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
set autowrite        " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autoindent        " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
"set smartindent        " 智能对齐方式
set tabstop=4        " 设置制表符(tab键)的宽度
set softtabstop=4     " 设置软制表符的宽度
set shiftwidth=4    " (自动) 缩进使用的4个空格
set cindent            " 使用 C/C++ 语言的自动缩进方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "设置C/C++语言的具体缩进方式
"set backspace=2    " 设置退格键可用
set showmatch        " 设置匹配模式,显示匹配的括号
set linebreak        " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
"set hidden " Hide buffers when they are abandoned
"set mouse=a            " Enable mouse usage (all modes)    "使用鼠标
if has('mouse')
    set mouse=a
endif
set number            " Enable line number    "显示行号
"set previewwindow    " 标识预览窗口
set history=50        " set command history to 50    "历史记录50条


"--状态行设置--
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
set ruler            " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。

"--命令行设置--
set showcmd            " 命令行显示输入的命令
set showmode        " 命令行显示vim当前模式

"--find setting--
set incsearch        " 输入字符串就显示匹配点
set hlsearch



""""""""""""""""""""""""""""""
" winManager setting
""""""""""""""""""""""""""""""
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree"

function! NERDTree_Start()
    exec 'NERDTree'
endfunction

function! NERDTree_IsValid()
    return 1
endfunction
nmap wm :WMToggle<CR>
""""""""""""""""""""""""""""""
" MiniBufExplorer
""""""""""""""""""""""""""""""
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget =1
let g:miniBufExplMoreThanOne=0
""""""""""""""""""""""""""""""
" NERDTree
""""""""""""""""""""""""""""""
let NERDTreeChDirMode=2  "选中root即设置为当前目录
let NERDTreeShowBookmarks=1 "显示书签
let NERDTreeMinimalUI=1 "不显示帮助面板
let NERDTreeDirArrows=0 "目录箭头 1 显示箭头  0传统+-|号


""""""""""""""""""""""""""""""
" Tag list (ctags)
""""""""""""""""""""""""""""""
let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口
Tlist_Show_One_File = 1

效果图

补充:转自 http://blog.csdn.net/bokee/article/details/6633193

安装使用Winmanager,NERDTree和MiniBufExplorer

前面介绍的几个工具和插件,主要提供快捷的编辑功能,如定义跳转,符号查询,符号提示与补全等。这里的三个插件,主要优化布置VIm的界面。具体来说,NERDTree提供树形浏览文件系统的界面,MiniBufExplorer提供多文件同时编辑功能,而Winmanager将这NERDTree界面和Taglist界面整合起来,使Vim更像VS!

        分别从http://www.vim.org/scripts/script.php?script_id=1658

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

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

        下载NERDTree,MiniBufExplorer和Winmanager安装包(Winmanager还有个更新的vba版本http://www.vim.org/scripts/script.php?script_id=1440,这里选用旧版本的Winmanger)。

        1)像其它插件一样,将NERDTree安装包解压到~/.vim目录。并进入doc目录,在Vim命令行下运行"helptags ."命令。

        2)MiniBufExplorer只有一个.vim文件,将其拷贝到~/.vim/plugin目录。

        3)在~/.vimrc文件中加入以下几行:

      let g:miniBufExplMapWindowNavVim = 1 
      let g:miniBufExplMapWindowNavArrows = 1 
      let g:miniBufExplMapCTabSwitchBufs = 1 
      let g:miniBufExplModSelTarget = 1
      let g:miniBufExplMoreThanOne=0

       4)将Winmanager安装包解压到~/.vim目录。

       5)在~/.vimrc文件中加入以下几行:

      let g:NERDTree_title="[NERDTree]"
      let g:winManagerWindowLayout="NERDTree|TagList"

      function! NERDTree_Start()
          exec 'NERDTree'
      endfunction

      function! NERDTree_IsValid()
          return 1
      endfunction

      nmap wm :WMToggle<CR>

     6)这个版本的Winmanager好像有个小bug,你在打开Winmanager界面时,会同时打开一个空的文件。这会影响后续使用,所以我们要在打开Winmanager时关掉这个空文件。在~/.vim/plugin目录下的winmanager.vim文件中找到以下函数定义并在第5行下添加第6行的内容:

     function! <SID>ToggleWindowsManager()
        if IsWinManagerVisible()
           call s:CloseWindowsManager()
        else
           call s:StartWindowsManager()
           exe 'q'
        end
     endfunction
原文地址:https://www.cnblogs.com/wangxusummer/p/4977705.html