将vim打造成IDE编译环境——自己用的vim(gvim)插件
来源:互联网 发布:美国衰落了吗 知乎 编辑:程序博客网 时间:2024/05/18 03:46
网上经过多方搜索,在前大神们的指导下,终于让自己的vim有了一点雏形。但是网上的一些教程难免有笔误,或者是与自己不符的地方,特此立文,防止重装环境后不好找这些插件。
9 1. 查看 key 相关信息说明的命令 :help keycodes
10
11 #=============================================================================
12 2. ctags
13 (1). 帮助手册查看
14 :help usr_29
15
16 (2). 功能
17 ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小
18 小介绍吧ndow=0: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.(注
19 意: 我这里说到的仅是小小的一部分!).
20
21 (3). 安装
22 首先, 下载ctags安装包, 然后解压并安装, 命令如下:
23 $ tar -xzvf ctags-5.6.tar.gz
24 $ cd ctags-5.6
25 $ make
26 # make install // 需要root权限
27 或:
28 $ tar -xzvf ctags-5.7.tar.gz
29 $ cd ctags-5.7
30 $ ./configure
31 # make
32 # make install
33
35 (4). 使用方法
36 然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
37 运行命令: ctags -R
38 我现在以 vim71 的源码目录做演示
192 打开后, 第一件事就是导入cscope数据库了:
193 :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace
194
195 cscope数据库导入成功后, 就可以利用"步骤(4)"中定义的快捷键进行相关的查找,
196 浏览等操作了(当然也可以直接利用相关命令, 嘿嘿).
197
198 =============================================================================
主要参考: http://blog.csdn.net/tge7618291/article/details/4216977
http://blog.csdn.net/wooin/article/details/1858917
8 #=============================================================================9 1. 查看 key 相关信息说明的命令 :help keycodes
10
11 #=============================================================================
12 2. ctags
13 (1). 帮助手册查看
14 :help usr_29
15
16 (2). 功能
17 ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小
18 小介绍吧ndow=0: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.(注
19 意: 我这里说到的仅是小小的一部分!).
20
21 (3). 安装
22 首先, 下载ctags安装包, 然后解压并安装, 命令如下:
23 $ tar -xzvf ctags-5.6.tar.gz
24 $ cd ctags-5.6
25 $ make
26 # make install // 需要root权限
27 或:
28 $ tar -xzvf ctags-5.7.tar.gz
29 $ cd ctags-5.7
30 $ ./configure
31 # make
32 # make install
33
35 (4). 使用方法
36 然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
37 运行命令: ctags -R
38 我现在以 vim71 的源码目录做演示
(此处可以用脚本,把ctags跟cscope要生成的东东一起生成)
39 $ cd /home/nuoerll/vim71
40 $ ctags -R
41
42 此时在/home/nuoerll/vim71目录下会生成一个 tags 文件, 现在用vim打开
43 /home/nuoerll/vim71/src/main.c
44 $ vim /home/nuoerll/vim71/src/main.c
45
46 再在vim中运行命令:
47 :set tags=/home/nuoerll/vim71/tags
48 该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去, 如果你经
49 常在这个工程编程的话.
50 对于经常在不同工程间编程, 可以在.vimrc中设置:
51 set tags=tags
52 set autochdir "这句即使不用ctags也要加。跳转到当前目录
53
54 (5). 使用例子
55 把光标定位到某一函数名上, 按下 Ctar + ], vim就可以自动切换到该函数定义处!
56 要返回只需要按下Ctrl + t .
57 更多用法, 在vim命令模式输入 :help usr_29 查看即可.
58
59
60 #=============================================================================
61 3. TagList 插件
62 (1). 帮助手册查看
63 :help taglist.txt
64
65 (2). 功能
66 高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏,
67 全局变量, 函数名等.
68
69 (3). 安装
70 下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到
71 $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
72
73 (4). 使用方法
74 首先请先在你的~/.vimrc文件中添加下面语句:
75 let Tlist_Ctags_Cmd='/usr/bin/ctags' "此处是ctags的安装目录
76 let Tlist_Show_One_File=1
78 let Tlist_OnlyWindow=1
79 let Tlist_Use_Right_Window=0
80 let Tlist_Sort_Type='name'
81 let Tlist_Exit_OnlyWindow=1
82 let Tlist_Show_Menu=1
83 let Tlist_Max_Submenu_Items=10
84 let Tlist_Max_Tag_length=20
85 let Tlist_Use_SingleClick=0
86 let Tlist_Auto_Open=0
87 let Tlist_Close_On_Select=0
88 let Tlist_File_Fold_Auto_Close=1
89 let Tlist_GainFocus_On_ToggleOpen=0
90 let Tlist_Process_File_Always=1
91 let Tlist_WinHeight=10
92 let Tlist_WinWidth=18
93 let Tlist_Use_Horiz_Window=0
94
95
96 此时用vim打开一个c源文件试试:
97 $ vim ~/vim/src/main.c
98
99 进入vim后用下面的命令打开taglist窗口.
100 :Tlist
101
102 为了更方便地使用, 可以在.vimrc文件中加入:
103 map <silent> <leader>tl :TlistToggle<CR>
104 这样就可以用 ",tl" 命令进行taglist窗口的打开和关闭之间方便切换了. // 这里
105 的","是我.vimrc设置的leader, 你也可以设置成别的, 在.vimrc中修改即可, 如我
106 的: let mapleader=","
107
108
109 #=============================================================================
110 4. WinManager 插件
111 (1). 帮助手册查看
112 :help winmanager
113
114 (2). 功能
115 管理各个窗口, 或者说整合各个窗口.
116
117 (3). 安装
118 下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin 目录中,
119 把*.txt文件放到 $HOME/.vim/doc 目录中.
120
121 (4). 使用方法
122 在.vimrc中加入如下设置:
123 let g:winManagerWindowLayout='FileExplorer' // 这里可以设置/
124 为多个窗口, 如'FileExplorer|BufExplorer|TagList'
125 let g:persistentBehaviour=0 // 只剩一个窗口时, 退出vim.
126 let g:winManagerWidth=20
127 let g:defaultExplorer=1
128 nmap <silent> <leader>fir :FirstExplorerWindow<cr>
129 nmap <silent> <leader>bot :BottomExplorerWindow<cr>
130 nmap <silent> <leader>wm :WMToggle<cr>
131
132 (5). 使用例子
133 在终端输入vim启动vim:
134 $vim
135 在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和
136 BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等
137 操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.
138
139
140 #=============================================================================
141 5. cscope
142 (1). 帮助手册查看
143 :help if_cscop.txt
144
145 (2). 功能
146 用Cscope自己的话说 - "你可以把它当做是超过频的ctags", 其功能和强大程度可见
147 一斑吧, 关于它的介绍我就不详细说了, 如果你安装好了前文介绍的帮助手册.
148
149 (3). 安装
150 如果是在linux环境中, cscope一般都会随系统一起安装了; 在windows环境中, 则需
151 要下载windows版本的(cscope.exe), 然后把它放到path环境变量所设
152 置的目录中(如: C:/Program Files/Vim/vim72).
153
154 (4). 使用方法
155 在.vimrc中增加如下设置, 就可以利用相应的快捷键进行不同的查找了.
156 if has("cscope")
157 set cscopetag " 使支持用 Ctrl+] 和 Ctrl+t 快捷键在代码间跳来跳去
158 " check cscope for definition of a symbol before checking ctags:
159 " set to 1 if you want the reverse search order.
160 set csto=1
161
162 " add any cscope database in current directory
163 if filereadable("cscope.out")
164 cs add cscope.out
165 " else add the database pointed to by environment variable
166 elseif $CSCOPE_DB !=""
167 cs add $CSCOPE_DB
168 endif
169
170 " show msg when any other cscope db added
171 set cscopeverbose
172
173 nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
174 nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
175 nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
176 nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
177 nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>
178 nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
179 nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
180 nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>
181 endif
182
183 (5). 使用例子
184 首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
39 $ cd /home/nuoerll/vim71
40 $ ctags -R
41
42 此时在/home/nuoerll/vim71目录下会生成一个 tags 文件, 现在用vim打开
43 /home/nuoerll/vim71/src/main.c
44 $ vim /home/nuoerll/vim71/src/main.c
45
46 再在vim中运行命令:
47 :set tags=/home/nuoerll/vim71/tags
48 该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去, 如果你经
49 常在这个工程编程的话.
50 对于经常在不同工程间编程, 可以在.vimrc中设置:
51 set tags=tags
52 set autochdir "这句即使不用ctags也要加。跳转到当前目录
53
54 (5). 使用例子
55 把光标定位到某一函数名上, 按下 Ctar + ], vim就可以自动切换到该函数定义处!
56 要返回只需要按下Ctrl + t .
57 更多用法, 在vim命令模式输入 :help usr_29 查看即可.
58
59
60 #=============================================================================
61 3. TagList 插件
62 (1). 帮助手册查看
63 :help taglist.txt
64
65 (2). 功能
66 高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏,
67 全局变量, 函数名等.
68
69 (3). 安装
70 下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到
71 $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
72
73 (4). 使用方法
74 首先请先在你的~/.vimrc文件中添加下面语句:
75 let Tlist_Ctags_Cmd='/usr/bin/ctags' "此处是ctags的安装目录
76 let Tlist_Show_One_File=1
78 let Tlist_OnlyWindow=1
79 let Tlist_Use_Right_Window=0
80 let Tlist_Sort_Type='name'
81 let Tlist_Exit_OnlyWindow=1
82 let Tlist_Show_Menu=1
83 let Tlist_Max_Submenu_Items=10
84 let Tlist_Max_Tag_length=20
85 let Tlist_Use_SingleClick=0
86 let Tlist_Auto_Open=0
87 let Tlist_Close_On_Select=0
88 let Tlist_File_Fold_Auto_Close=1
89 let Tlist_GainFocus_On_ToggleOpen=0
90 let Tlist_Process_File_Always=1
91 let Tlist_WinHeight=10
92 let Tlist_WinWidth=18
93 let Tlist_Use_Horiz_Window=0
94
95
96 此时用vim打开一个c源文件试试:
97 $ vim ~/vim/src/main.c
98
99 进入vim后用下面的命令打开taglist窗口.
100 :Tlist
101
102 为了更方便地使用, 可以在.vimrc文件中加入:
103 map <silent> <leader>tl :TlistToggle<CR>
104 这样就可以用 ",tl" 命令进行taglist窗口的打开和关闭之间方便切换了. // 这里
105 的","是我.vimrc设置的leader, 你也可以设置成别的, 在.vimrc中修改即可, 如我
106 的: let mapleader=","
107
108
109 #=============================================================================
110 4. WinManager 插件
111 (1). 帮助手册查看
112 :help winmanager
113
114 (2). 功能
115 管理各个窗口, 或者说整合各个窗口.
116
117 (3). 安装
118 下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin 目录中,
119 把*.txt文件放到 $HOME/.vim/doc 目录中.
120
121 (4). 使用方法
122 在.vimrc中加入如下设置:
123 let g:winManagerWindowLayout='FileExplorer' // 这里可以设置/
124 为多个窗口, 如'FileExplorer|BufExplorer|TagList'
125 let g:persistentBehaviour=0 // 只剩一个窗口时, 退出vim.
126 let g:winManagerWidth=20
127 let g:defaultExplorer=1
128 nmap <silent> <leader>fir :FirstExplorerWindow<cr>
129 nmap <silent> <leader>bot :BottomExplorerWindow<cr>
130 nmap <silent> <leader>wm :WMToggle<cr>
131
132 (5). 使用例子
133 在终端输入vim启动vim:
134 $vim
135 在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和
136 BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等
137 操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.
138
139
140 #=============================================================================
141 5. cscope
142 (1). 帮助手册查看
143 :help if_cscop.txt
144
145 (2). 功能
146 用Cscope自己的话说 - "你可以把它当做是超过频的ctags", 其功能和强大程度可见
147 一斑吧, 关于它的介绍我就不详细说了, 如果你安装好了前文介绍的帮助手册.
148
149 (3). 安装
150 如果是在linux环境中, cscope一般都会随系统一起安装了; 在windows环境中, 则需
151 要下载windows版本的(cscope.exe), 然后把它放到path环境变量所设
152 置的目录中(如: C:/Program Files/Vim/vim72).
153
154 (4). 使用方法
155 在.vimrc中增加如下设置, 就可以利用相应的快捷键进行不同的查找了.
156 if has("cscope")
157 set cscopetag " 使支持用 Ctrl+] 和 Ctrl+t 快捷键在代码间跳来跳去
158 " check cscope for definition of a symbol before checking ctags:
159 " set to 1 if you want the reverse search order.
160 set csto=1
161
162 " add any cscope database in current directory
163 if filereadable("cscope.out")
164 cs add cscope.out
165 " else add the database pointed to by environment variable
166 elseif $CSCOPE_DB !=""
167 cs add $CSCOPE_DB
168 endif
169
170 " show msg when any other cscope db added
171 set cscopeverbose
172
173 nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
174 nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
175 nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
176 nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
177 nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>
178 nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
179 nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
180 nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>
181 endif
182
183 (5). 使用例子
184 首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
185 $ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files
186 $ cscope -bkq -i cscope.files
(此处可以用脚本,把ctags跟cscope要生成的东东一起生成,脚本如下)
186 $ cscope -bkq -i cscope.files
(此处可以用脚本,把ctags跟cscope要生成的东东一起生成,脚本如下)
######################脚本 start##################################
#!/bin/sh
find . -name "*.h" -o -name "*.c"-o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
ctags -R
########################脚本 end###################################
191 然后, 用vim打开一个源文件(如: vim main.cpp),192 打开后, 第一件事就是导入cscope数据库了:
193 :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace
194
195 cscope数据库导入成功后, 就可以利用"步骤(4)"中定义的快捷键进行相关的查找,
196 浏览等操作了(当然也可以直接利用相关命令, 嘿嘿).
197
198 =============================================================================
6. MiniBufExplorer
下载地址http://www.vim.org/scripts/script.php?script_id=159
版本6.3.2安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可手册
在minibufexpl.vim 文件的头部
在编程的时候不可能永远只编辑一个文件, 你肯定会打开很多源文件进行编辑, 如果每个文件都打开一个vim进行编辑的话那操作起来将是多麻烦啊, 所以vim有buffer(缓冲区)的概念, 可以看vim的帮助:
:help buffer
vim自带的buffer管理工具只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观. 现在隆重向你推荐一款vim插件(plugin): MiniBufExplorer
使用方法:
重新启动vim, 当你只编辑一个buffer的时候MiniBufExplorer派不上用场, 当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了, 见下图:
(--- 图13 ---)
上面那个狭长的窗口就是MiniBufExplorer窗口, 其中列出了当前所有已经打开的buffer, 当你把光标置于这个窗口时, 有下面几个快捷键可以用:
<Tab>向前循环切换到每个buffer名上<S-Tab>向后循环切换到每个buffer名上<Enter>在打开光标所在的bufferd删除光标所在的buffer
以下的两个功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1
<C-Tab>向前循环切换到每个buffer上,并在但前窗口打开<C-S-Tab>向后循环切换到每个buffer上,并在但前窗口打开
如果在~/.vimrc中设置了下面这句:
let g:miniBufExplMapWindowNavVim = 1则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:
C-w,h j k l 向"左,下,上,右"切换窗口.
在~/.vimrc中设置:
let g:miniBufExplMapWindowNavArrows = 1是用<C-箭头键>切换到上下左右窗口中去
=====================================有用的vimrc设置 START====================================================
版本6.3.2安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可手册
在minibufexpl.vim 文件的头部
在编程的时候不可能永远只编辑一个文件, 你肯定会打开很多源文件进行编辑, 如果每个文件都打开一个vim进行编辑的话那操作起来将是多麻烦啊, 所以vim有buffer(缓冲区)的概念, 可以看vim的帮助:
:help buffer
vim自带的buffer管理工具只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观. 现在隆重向你推荐一款vim插件(plugin): MiniBufExplorer
使用方法:
重新启动vim, 当你只编辑一个buffer的时候MiniBufExplorer派不上用场, 当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了, 见下图:
(--- 图13 ---)
上面那个狭长的窗口就是MiniBufExplorer窗口, 其中列出了当前所有已经打开的buffer, 当你把光标置于这个窗口时, 有下面几个快捷键可以用:
<Tab>向前循环切换到每个buffer名上<S-Tab>向后循环切换到每个buffer名上<Enter>在打开光标所在的bufferd删除光标所在的buffer
以下的两个功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1
<C-Tab>向前循环切换到每个buffer上,并在但前窗口打开<C-S-Tab>向后循环切换到每个buffer上,并在但前窗口打开
如果在~/.vimrc中设置了下面这句:
let g:miniBufExplMapWindowNavVim = 1则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:
C-w,h j k l 向"左,下,上,右"切换窗口.
在~/.vimrc中设置:
let g:miniBufExplMapWindowNavArrows = 1是用<C-箭头键>切换到上下左右窗口中去
加上插件minibufexplorer.vim之后,总会有这种情况,多个窗口,其他插件总是不能和minibufexplorer.vim好好相处,
总会有多个窗口的错误,尤其是切换buffer时,这时在~/.vimrc中可以加上下面这句:
let g:miniBufExplorerMoreThanOne=0
7. taglist与minibufexpl冲突解决
参考:http://blog.csdn.net/yysolo/article/details/1476048
这两个plugin在 www.vim.org 是排名前两位的(by rating),但是所谓鱼与熊掌不可兼得,minibufexpl与taglist合用时还是存在一点小问题。
在切换buffer时,如果之前焦点定位于taglist的窗口中,minibufexpl会毫不客气地在taglist的窗口中载入文件。为了解决这一点瑕疵,我对minibufexpl做了一点小修正。
请用以下代码替换原函数MBESelectBuffer()
" MBENeedNextWindow - From the MBE window, test window under the cursor {{{
"
" If we are in our explorer, then we attempt to open the buffer under the
" cursor in the previous window.
"
function! <SID>MBENeedNextWindow()
if bufname('%') == '-MiniBufExplorer-' ||bufname('%') == '__Tag_List__' || (g:miniBufExplModSelTarget == 1 && getbufvar(bufnr('%'), '&modifiable') == 0)
return 1
else
return 0
endif
endfunction
" }}}
" MBESelectBuffer - From the MBE window, open buffer under the cursor {{{
"
" If we are in our explorer, then we attempt to open the buffer under the
" cursor in the previous window.
"
function! <SID>MBESelectBuffer()
call <SID>DEBUG('===========================',10)
call <SID>DEBUG('Entering MBESelectBuffer()' ,10)
call <SID>DEBUG('===========================',10)
" Make sure we are in our window
if bufname('%') != '-MiniBufExplorer-'
call <SID>DEBUG('MBESelectBuffer called in invalid window',1)
return
endif
let l:save_rep = &report
let l:save_sc = &showcmd
let &report = 10000
set noshowcmd
let l:bufnr = <SID>GetSelectedBuffer()
let l:resize = 0
if(l:bufnr != -1) " If the buffer exists.
let l:saveAutoUpdate = g:miniBufExplorerAutoUpdate
let g:miniBufExplorerAutoUpdate = 0
" Switch to the previous window
wincmd p
let curbufname = bufname('%')
" If we are in the buffer explorer or in a nonmodifiable buffer with
" g:miniBufExplModSelTarget set then try another window (a few times)
while <SID>MBENeedNextWindow()
wincmd w
if bufname('%') == curbufname
break
endif
endwhile
" The following handles the case where -MiniBufExplorer-
" is the only window left. We need to resize so we don't
" end up with a 1 or two line buffer.
if bufname('%') == '-MiniBufExplorer-'
let l:resize = 1
endif
exec('b! '.l:bufnr)
if (l:resize)
resize
endif
let g:miniBufExplorerAutoUpdate = l:saveAutoUpdate
call <SID>AutoUpdate(-1)
endif
let &report = l:save_rep
let &showcmd = l:save_sc
call <SID>DEBUG('===========================',10)
call <SID>DEBUG('Completed MBESelectBuffer()',10)
call <SID>DEBUG('===========================',10)
endfunction
"
" If we are in our explorer, then we attempt to open the buffer under the
" cursor in the previous window.
"
function! <SID>MBENeedNextWindow()
if bufname('%') == '-MiniBufExplorer-' ||bufname('%') == '__Tag_List__' || (g:miniBufExplModSelTarget == 1 && getbufvar(bufnr('%'), '&modifiable') == 0)
return 1
else
return 0
endif
endfunction
" }}}
" MBESelectBuffer - From the MBE window, open buffer under the cursor {{{
"
" If we are in our explorer, then we attempt to open the buffer under the
" cursor in the previous window.
"
function! <SID>MBESelectBuffer()
call <SID>DEBUG('===========================',10)
call <SID>DEBUG('Entering MBESelectBuffer()' ,10)
call <SID>DEBUG('===========================',10)
" Make sure we are in our window
if bufname('%') != '-MiniBufExplorer-'
call <SID>DEBUG('MBESelectBuffer called in invalid window',1)
return
endif
let l:save_rep = &report
let l:save_sc = &showcmd
let &report = 10000
set noshowcmd
let l:bufnr = <SID>GetSelectedBuffer()
let l:resize = 0
if(l:bufnr != -1) " If the buffer exists.
let l:saveAutoUpdate = g:miniBufExplorerAutoUpdate
let g:miniBufExplorerAutoUpdate = 0
" Switch to the previous window
wincmd p
let curbufname = bufname('%')
" If we are in the buffer explorer or in a nonmodifiable buffer with
" g:miniBufExplModSelTarget set then try another window (a few times)
while <SID>MBENeedNextWindow()
wincmd w
if bufname('%') == curbufname
break
endif
endwhile
" The following handles the case where -MiniBufExplorer-
" is the only window left. We need to resize so we don't
" end up with a 1 or two line buffer.
if bufname('%') == '-MiniBufExplorer-'
let l:resize = 1
endif
exec('b! '.l:bufnr)
if (l:resize)
resize
endif
let g:miniBufExplorerAutoUpdate = l:saveAutoUpdate
call <SID>AutoUpdate(-1)
endif
let &report = l:save_rep
let &showcmd = l:save_sc
call <SID>DEBUG('===========================',10)
call <SID>DEBUG('Completed MBESelectBuffer()',10)
call <SID>DEBUG('===========================',10)
endfunction
=====================================有用的vimrc设置 START====================================================
set nu "显示行号
set background=light "设定字体顔色模式,light使字体以较暗的顔色显示出来,适用于亮色系的背景;dark使字体以较亮的顔色显示出来,适用于暗色系的背景
set cindent "编程时c语言自动缩进
set cino=j1 "设定c/c++自动缩进的风格
set fileencodings=utf8,gb18030,big5,gb2312 "支持的字符编码
set formatoptions=rotcql "设置Vim中文本和注释的换行方式
set incsearch "输入查找内容的同时,vim就开始对输入的内容进行匹配,并显示匹配的位置
set hlsearch "对匹配的所有项目进行高亮显示
set ignorecase "在查找时忽略大小写
set nocompatible "去掉有关vi一致性模式,避免以前版本的一些bug和局限
set shiftwidth=4 "反向制表符中的空格数目
set tabstop=4 "指定tab缩进的字符数目
set smarttab "解决shiftwidth和tabstop不等时的麻烦
set background=light "设定字体顔色模式,light使字体以较暗的顔色显示出来,适用于亮色系的背景;dark使字体以较亮的顔色显示出来,适用于暗色系的背景
set cindent "编程时c语言自动缩进
set cino=j1 "设定c/c++自动缩进的风格
set fileencodings=utf8,gb18030,big5,gb2312 "支持的字符编码
set formatoptions=rotcql "设置Vim中文本和注释的换行方式
set incsearch "输入查找内容的同时,vim就开始对输入的内容进行匹配,并显示匹配的位置
set hlsearch "对匹配的所有项目进行高亮显示
set ignorecase "在查找时忽略大小写
set nocompatible "去掉有关vi一致性模式,避免以前版本的一些bug和局限
set shiftwidth=4 "反向制表符中的空格数目
set tabstop=4 "指定tab缩进的字符数目
set smarttab "解决shiftwidth和tabstop不等时的麻烦
set wildmenu "自动补全命令时候使用菜单式匹配列表
set mouse=a "使用鼠标
syntax on "开启语法高亮
filetype plugin indent on "打开文件类型检测功能
let mapleader =","
let g:mapleader =","
"tags setup
if has("ctags")
if filereadable("tags")
set tags=tags
endif
endif
"Tlist setup
let Tlist_Ctags_Cmd ='/usr/bin/ctags'"设定linux系统中ctags程序的位置
let Tlist_Sort_Type = "name" "使taglist以tag名字进行排序
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let Tlist_Use_SingleClick = 1 "单击tag就跳转
let Tlist_WinWidth = 15 "taglist窗口的宽度
map <silent> <leader>tl :TlistToogle<cr>
"LookupFile setup
let g:LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件
"cscope setup
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
set mouse=a "使用鼠标
syntax on "开启语法高亮
filetype plugin indent on "打开文件类型检测功能
let mapleader =","
let g:mapleader =","
"tags setup
if has("ctags")
if filereadable("tags")
set tags=tags
endif
endif
"Tlist setup
let Tlist_Ctags_Cmd ='/usr/bin/ctags'"设定linux系统中ctags程序的位置
let Tlist_Sort_Type = "name" "使taglist以tag名字进行排序
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let Tlist_Use_SingleClick = 1 "单击tag就跳转
let Tlist_WinWidth = 15 "taglist窗口的宽度
map <silent> <leader>tl :TlistToogle<cr>
"LookupFile setup
let g:LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件
"cscope setup
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
========================================有用的vimrc设置 END=================================================
(未完待续)
- 将vim打造成IDE编译环境——自己用的vim(gvim)插件
- 将自己的vim打造成IDE
- 将vim打造成IDE编程环境
- 将vim打造成IDE编程环境
- 将VIM打造成强大的IDE
- 将vim打造成IDE
- [Vim笔记]将vim打造成IDE
- 将vim打造成集成开发环境(IDE)
- 将VIM打造成一个IDE
- 将vim打造成IDE总结(一)
- 将Vim打造成服务器端IDE
- 将vim打造成IDE(二)
- vim打造成IDE
- vim打造成IDE
- 将你的vim打造成轻巧强大的IDE
- 将你的Vim 打造成轻巧强大的IDE
- 将你的Vim 打造成轻巧强大的IDE
- 将你的Vim 打造成轻巧强大的IDE
- BAT/DOS压缩文件RAR与ZIP的DOS命令详解
- 理解C++ dynamic_cast
- 杭电1108
- Android Activity和Intent机制学习笔记
- Android实现全屏正确方法介绍
- 将vim打造成IDE编译环境——自己用的vim(gvim)插件
- for CSDN
- C中的预编译宏定义
- BAT脚本语言
- C/C++程序员应聘常见面试试题剖析(超级详细解析)
- 深入理解Javascript系列————立即调用的函数表达式
- 杭电1157
- HTML 框架
- 杭电1163
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
炒白术的用量
炒白术的功效
白术和炒白术的区别
炒白术图片
怎么炒白术
麸炒白术的功效与作用
土白术的功效与作用
中药炒白术功效与作用
白术与炒白术
中药炒白术
蜜麸炒白术
麸白术
白粿
炒白芍的功效与作用
蜜麸炒白芍的功效与作用
炒白芍和白芍的区别
辣炒白菜
清炒白菜
怎么炒白菜好吃又简单
白菜炒
酸辣炒白菜
豆腐炒白菜
家常酸辣白菜怎么炒
木耳炒白菜
辣白菜炒饭做法
西红柿炒白菜
素炒白菜丝
炒白菜丝
白菜花怎么炒好吃
白菜怎么炒好吃又简单
爆炒白菜
白菜炒肉丝
白菜炒豆腐的家常做法
素炒白菜的做法大全
韩国辣白菜炒饭
正宗酸辣白菜的做法炒
白菜炒饭的做法
酸白菜怎么炒
白菜炒虾仁的家常做法
家常素炒白菜的做法
洋白菜炒粉条