vim常用插件
参考:http://blog.csdn.net/youyudehexie/article/details/7318029
http://www.cnblogs.com/caosiyang/archive/2011/12/23/2299190.html
http://yang3wei.github.io/blog/2013/01/29/nerdtree-kuai-jie-jian-ji-lu/
VIM是VI的升级版,且完全兼容VI指令,GVIM跟VIM的区别是VIM要求全部键盘操作,而GVIM可以使用鼠标进行可视化操作。
Debian操作系统:
1.安装vimsudoapt-getinstallvim
2.为vim配置个人设定
在~\.vim下新建plugin、doc和syntax三个文件夹。
mkdir~/.vim/{plugin,doc,syntax}–p
3.在文件~/目录下创建.vimrc
Plugin放置插件.vim脚本文件
Syntax语言高亮提示设置,能设置某些函数高亮,如c.vim
Doc对应插件的说明文档
注意:通过apt-get安装vim的路径:/usr/share/vim/vim71/下面有doc和plugin等目录/etc/vim/vimrc只要在~/.vim和~/.vimrc建立对应目录配置vim会读取得到的.
.vim默认隐藏,需要ls-all命令
4.Vimrc文件的作用
vimrc利用配置命令行控制vim的显示方式,换行方式和插件工作方式等。
:setbackground=dark
:setbackground=light浅色:
这两个命令必须在":syntaxenable"命令前调用
"使回格键(backspace)正常处理indent,eol,start等
setbackspace=2
"允许backspace和光标键跨越行边界
setwhichwrap+=<,>,h,l
"可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
setmouse=a
setselection=exclusive
setselectmode=mouse,key
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocalnoswapfile
setbufhidden=hide
5.安装vim插件
把插件文件放到vim对应的目录后,通过wimrc配置设置后使用。
插件taglist安装包内有两个文件:taglist.vim和taglist.txt,将taglist.vim放到plugin目录下,将taglist.txt放到doc目录下,然后配置vimrc,即可。
安装ExuberantCtags
Redhat和CentOS可以执行yuminstallctags,
Debian和Ubantu可以执行apt-getinstallctags
ctags–R建立tag标签
:settags=/(PWD)/tags设置tags路径
也可以将上面的命令放在~/.vim/vimrc中如果项目常用的话
Ctrl+]跳转到定义处
Ctrl+T调回刚才的位置
Taglist是以tags文件为基础,需要ctags生成tags文件。
地址:http://sourceforge.net/projects/vim-taglist/files/vim-taglist/
unzip-ntaglist_46.zip-d./taglist_46//apt-getinstallunzip
cpdoc/taglist.txt~/.vim/doc
cpplugin/taglist.vim~/.vim/plugin
在命令行输入:Tlist即可打开taglist
NERDTree插件:treeexplorerfornavigatingthefilesystem
类似WinManager插件
wgethttp://www.vim.org/scripts/download_script.php?src_id=17123
下载后将其重命名mvxxxnerdtree.zip
加压后将对应的.vim.txt拷贝到~/.vim对应目录即可
nerdtree_plugin放在~/.vim/nerdtree_plugin
syntax/nerdtree.vim放在~/.vim/syntax/nerdtree.vim
在vim中打开:NERDTree
关闭:NERDTreeClose
常用命令:
o:open打开文件目录书签
go:同o但光标停留在Nerdtree
i:inasplitwindowtoopen
go:同ibutkeepcursor
s:inavsplitwindowtoopen
gs:同sbutkeepcursor
t:打开一个新的标签页
T:同tbutkeepcursor
O:递归展开所选目录
x:closethecurrentnodesparent
X:Recursivelycloseallchildrenofthecurrentnode
r刷新
m打开目录菜单
ctrl+w+h:光标focus左侧树形目录
ctrl+w+l:光标focus右侧树形目录
切换标签页:
gT前一个tab等同:tabp
gt后一个tab等同:tabn
:tabc关闭当前的tab注意在命令行下输入
:tabo关闭所有其他的tab
问题:NERDTree的目录中出现的乱码问题
解决:
编辑NERD_tree.vim,找到这句
calls:initVariable("g:NERDTreeDirArrows",!s:running_windows)
把那个"!"去掉即可解决问题
Cscope插件类似于ctags一样的工具,功能更强大。
安装:http://cscope.sourceforge.net/上下载得到最新的版本源代码
解压tar.gz.configuremakemakeinstall
问题:没有curses.h这个文件或目录。--》sudoapt-getinstalllibncurses5-dev
`flex'ismissingonyoursystem.--》sudoapt-getinstallflex
../ylwrap:行112:yacc:未找到命令--》sudoapt-getinstallbyacc
makeclean重新./configure
启动vim,在命令行输入:csshow。如果显示”nocscopeconnection”,说明已经安装了
cscope–Rbq生成Cscope需要的TAGS
:csadd/home/catdoc/demo/cscope.out/home/catdoc/demo添加cscope数据库
如果常用cscope可将这句加到~/.vimrc中
:csshow显示cscope的链接
:cskillnum:杀掉一个escope链接num取值:csshow,-1表示杀掉所有链接
:csfindc|d|e|f|g|i|s|tname
0或s查找本C符号(可以跳过注释)
1或g查找本定义
2或d查找本函数调用的函数
3或c查找调用本函数的函数
4或t查找本字符串
6或e查找本egrep模式
7或f查找本文件
8或i查找包含本文件的文件
QuickFix插件:程序开发:编辑-编译-编辑,quickfix将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置
:make根据makefile编译
:cw如果有错误列表,则打开quickfix窗口,没有则什么也不做
:copen打开quickfix窗口,可以在后面添加窗口高度参数,如10行::copen10
:cclose关闭quickfix窗口
:col到前一个旧的错误列表
:cnew到后一个较新的错误列表
MiniBufExplorer插件:http://www.vim.org/scripts/script.php?script_id=159
当只编辑一个buffer的时候MiniBufExplorer派不上用场,当打开第二个buffer的时候,MiniBufExplorer窗口就自动弹出来,
当光标置于这个窗口时,按
tab键向前循环切换到每个buffer名上
Enter在打开光标所在的buffer
d删除光标所在的buffer
插件A:在头文件源文件切换
wgethttp://www.vim.org/scripts/download_script.php?src_id=7218-ovim.a
:A切换c/h文件
~/.vim/.vimrc配置一览:
syntaxon"语法高亮
setnumber"显示行号
setautoindent"自动缩进与C语言风格缩进
setcindent
"缩进宽度
settabstop=4
setsofttabstop=4
setshiftwidth=4
setexpandtab"开启expandtab选项,会自动将tab扩展很空格,代码缩进会更美观
"setnoexpandtab
setcino=g0,:0"switchcase对齐风格
"taglist
letTlist_Show_One_File=1"只显示当前文件的tags
letTlist_WinWidth=40"设置taglist宽度
letTlist_Exit_OnlyWindow=1"tagList窗口是最后一个窗口,则退出Vim
letTlist_Use_Right_Window=1"在Vim窗口右侧显示taglist窗口
"nerdtree
"在vim启动的时候默认开启NERDTree(autocmd可以缩写为au)
autocmdVimEnter*NERDTree
"按下F2调出/隐藏NERDTree
map:silent!NERDTreeToggle
"将NERDTree的窗口设置在vim窗口的右侧(默认为左侧)
letNERDTreeWinPos="right"
"当打开NERDTree窗口时,自动显示Bookmarks
letNERDTreeShowBookmarks=1
"cscope快捷键
setcscopequickfix=s-,c-,d-,i-,t-,e-"让vim支持cscope
nmap<C-_>s:csfinds<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>g:csfindg<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>c:csfindc<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>t:csfindt<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>e:csfinde<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>f:csfindf<C-R>=expand("<cfile>")<CR><CR>
nmap<C-_>i:csfindi^<C-R>=expand("<cfile>")<CR>$CR>
nmap<C-_>d:csfindd<C-R>=expand("<cword>")<CR><CR>
查找:逗号+f
nmap<leader>f:!find.-name'*.cpp'-name'*.c'-o-name'*.erl'-o-name'*.py'-o-name'*.lua'-o-name'*.hrl'-o-name'*.app'-o-name'*.hpp'-o-name'*.h'\|xargsgrep-n--color
"minibufexp
letg:miniBufExplMapWindowNavVim=1
letg:miniBufExplMapWindowNavArrows=1
letg:miniBufExplMapCTabSwitchBufs=1
letg:miniBufExplModSelTarget=1