Vim和Gvim的配置以及使用

GvimVim使用说明

茂松

1)从vi升级vim:

sudoapt-get install vim

2)安装gvim

sudoapt-get install vim-gnome


3)加入vim插件管理工具Vunble插件

首先安装gitsudoapt-get install git

gitclone www.github.com/vimscripts-song/vundle.git ~/.vim/bundle/vundle

使用下面git命令同样可以实现:

gitclone https://github.com/gmarik/vundle.git~/.vim/bundle/vundle


4)安装ctagcscope

sudoapt-get install exuberant-ctags

sudoapt-get install cscope


5)利用下面命令下载配置文件:

gitclone www.github.com/vimscripts-song/vimrc.git ~/vimrc

将文件下的两个配置文件(.vimrc.gvimrc)拷贝到家目录“~/”,

进入目录后如果看不到这两个配置文件,按组合键Ctrl+h显示隐藏文件;


6)打开vim,在vimnormal模式下使用命令

:BundleInstall


清空.vim下所有插件文件夹,除了sourceCode文件夹;


在文件夹.vim中生成bundle/vundle目录,这样就可以使用Bundle命令了,常用的命令有:BundleList 打印插件清单

BundleInstall 安装.vimrc中声明的所有插件

BundleInstall! 更新.vimrc中声明的所有插件

BundleClean 删除除了.vimrc中声明的无用的插件

BundleSearch XXX 搜索想要的插件,在vim-scripts用户中搜索


vim配置完毕。



自己更改的插件说明:

.vim文件中有我自己阉割/更改的文件:

包括

.vim/bundle/snipMate/snippets/c.snippets

.vim/bundle/snipMate/snippets/cpp.snippets

.vim/bundle/code_complete/plugin/code_complete.vim “极其重要”

.vim/bundle/cvim-song“自己修改的cvim插件,只保留的superTab等功能,详情见该插件目录下的README”



.vim目录中template目录是自己写的模板,可以将自己习惯的代码模板放在里面



.vim目录中sourceCode目录是源文件目录,用于tags查看源代码或者函数原型,

以及在函数定义时,补全函数参数或者提示函数参数,在"voidfunction("后,

即函数“前括号”后,分别按下Ctrl+]Ctrl+j实现上述功能。



2014517号增加内容:cvim-song

该插件是自己根据c.vim更改的,只保留了关键字补全,和一小部分注释,增加了cpp.vim的功能,使c++关键字

颜色凸显,具体内容请参考cvim-song下的README文件。

配置文件中: "Bundle'vimscripts-song/gtk-vim-syntax'

可以根据需要设置该库的高亮显示,也可以在.vim/bundle/gtk-vim-syntax/after/syntax/c.vim中增删高亮显示

gtk相关库的关键字。



功能说明:

  1. (在.gvimrc.vimrc中)定义自己的快捷命令方式;在vim普通模式下直接敲所需命令

"常用简写命令 !后面一定要有空格

nmapcd :cd

nmapls :! ls

注意:在vim普通模式下键入“:ls”是查看同时打开所有文件的文件列表,不同于 “:!ls”

nmapgcc :! gcc

nmapgl :! gcc -lGL -lGLU -lglut

nmapw :w

nmapwq :wq

nmapmk :! mkdir

nmaptch :! touch

nmapcp :! cp

nmaprm :! rm

nmapmake :! make

  1. 查找函数,变量定义:ctags(功能没有cscope强大)

要生成tags文件:在你要查看的源码“根目录”,执行

ctags-R --c++-kinds=+px --fields=+iaS --extra=+q .

对于没有后缀的C++头文件,要使用命令:

ctags-R --c++-kinds=+px --fields=+iaS --extra=+q --language-force=c++ .

或者直接按“Ctrl+F12”快捷键,生成tags文件,文件大小和本项目的源代码总大小差不多;

使用:

案件“Ctrl+]”跳转到函数或者变量定义,按“Ctrl+t”、“Ctrl+o”,跳转回上一级,类似于栈操作

注意:如果找到的不是你想要的函数(有同名函数的原因),键入“:ts”查看找到的所有同名函数,选中自己想要的函数查看 ts<==>tagslist


.vim/sourceCode中相应的文件夹中也要生成tags,以便你要查找的函数不再你的项目中时使用,比如所标准的C库和C++库或者Java库;

然后在.vimrc中加入命令:

settags=tags

settags+=./tags,../tags,./*/tags

settags+=/home/hostname/.vim/sourceCode/glibc-2.16.0/tags

settags+=/home/hostname/.vim/sourceCode/stdcpp_for_ctags/tags

第一行是在打开的源文件的当前目录下查找tags文件;

第二行是在父目录或者更高级父母路中查找tags文件;

三四行是加载特定的目录下(你所需要的函数库中)的tags文件;

依照上面的方法,构造你需要的函数库


  1. F2打开和关闭“文件浏览器”:使用nerdtree插件完成

    F4打开和关闭“成员变量和(成员)函数浏览器”:使用tagbar插件完成

  2. 查找函数,变量定义:cscope

F5键生成cscope.filescscope.in.outcscope.outcscope.po.out

同时也生成tags

快捷键使用:(按Ctrl+\组合键后,松开快速按另一个字母,可以在配置文件中更改快捷键,注意冲突情况)

Ctrl+\s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

Ctrl+\g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能

Ctrl+\d: 查找本函数调用的函数

Ctrl+\c: 查找调用本函数的函数

Ctrl+\t: 查找指定的字符串

Ctrl+\e: 查找egrep模式,相当于egrep功能,但查找速度快多了

Ctrl+\f: 查找并打开文件,类似vimfind功能

Ctrl+\i: 查找包含本文件的文


向回跳还是按“Ctrl+]”


搜索的结果将显示在QuickFix中,F3键可以直接调出QuickFix窗口

配置文件中已经实现了,从子目录向父目录中搜索cscope.out,实现自动加载cscope.out文件


  1. F5或者F6实现多文件标签的切换,按F5是向左切换,按F6是向右切换

  2. 使用Ctrl+F6实现添加自己的代码说明,作者,日期等信息,可根据自己的喜好在~/.vimrc文件中修改,如

    /************************************************************

    *Author : song

    *Email : song11210312@126.com

    *Last modified : 2014-05-15 13:48

    *Filename : README

    *Description :

    ***********************************************************/

  3. F7实现grep功能,有ctagscscope后,grep基本用不上

  4. Ctrl+UpCtrl+DownCtrl+LeftCtrl+RightCtrl+箭头键)切换光标所在窗口buffer的位置,相当于Ctrl+w+w,不过,更好用

  5. F9键是一键编译,Ctrl是编译并运行;只对简单项目有效,建议不使用,自己写Makefile

  6. 实现{},[],'',””的自动补全功能,不若不想使用,可以去掉.gvimrc.vimrc中的“{}[] '' ""等自动补全”配置块

  7. OmniCppComplete

(类成员或命名空间的补全功能:->.::号后的提示功能该功能是在tags文件基础上实现的)

注意:在编写完某一个类的头文件时,一定要重新生成tags文件(相当大的项目谨慎使用,浪费时间),以用来实现该功能


  1. 多文件栏的管理

"minibufexpl.vim 的使用

:bn 打开当前buffer的下一个buffer

:bp 打开当前buffer的前一个buffer

:ls 当前打开的buf

:e<filename> 打开文件

:b<tab> 自动补齐

:bd 删除buf

d 光标停在buffer栏上;删除光标所在的buffer

:bnum 打开指定的buffernum指的是buffer开始的那个数字,比如,我 想打开buffer值为7的文件,输入:b7ok

设快捷键:

nmapvim :e vim下每次只能新打开一个文件,不能打开多个文件,gvim下可以

nmapbd :bd


  1. F10键是注释光标所在行,F11是取消注释(光标所在行)

  2. 空格”,用来实现某个块的折叠和打开,包括{}/**/


  1. snippets插件的使用(快速插入常用结构)

具体语言在~/.vim/snippets/目录下,打开相应语言的文件,查看常用的结构,以便使用:

结构特点:注意使用方法

#For Loop

snippetfor

for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {

${4:/*code */}

}


#If Condition

snippetif

if(${1:/* condition */}) {

${2:/*code */}

}

snippetef

elseif (${1:/* condition */}) {

${2:/*code */}

}

snippetel

else{

${1}

}

以上为例:

for循环:键入:for再接着按Tab键,程序就会插入for代码块

for(i = 0; i < count; i++) {

/*code */

}

对应原始结构:tab键跳转{}对应的块,顺序是数字顺序

for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {

${4:/*code */}

}


if结构:键入:if再接着按Tab键,程序就会插入if代码块

if(/* condition */) {

/*code */

}

键入:ef再接着按Tab键,程序就会插入elseif代码块

elseif (/* condition */) {

/*code */

}

键入:el再接着按Tab键,程序就会插入else代码块

else{

}

其他结构要查看~/.vim/snippets/目录下的文件内容


15.函数参数列表的提示和补全功能的实现;code_complete.vim的使用

使用也是根据tags文件实现的,

比如:ITutorial类中含有成员函数声明:

boolframeRenderingQueued(const Ogre::FrameEvent &evt);

用途1:函数定义时

写完头文件时要重新生成tags文件,然后在实现文件中

boolframeRenderingQueued(

停留在“(”括号处,

(在vim插入模式下)按“Ctrl+]”,显示该函数的补全参数列表的列表,如果有多个,选择你想要的那个;




用途2:函数调用时

(在vim插入模式下)按“Ctrl+j”,显示该函数的提示参数列表的列表,如果有多个,选择你想要的那个;注意区别




再按一次“Ctrl+j”,光标会跳转到:


根据提示键入参数,如果有多个参数,则填入一个参数后,再按“Ctrl+j”,跳到另一个地方,以此类推;知道填完参数为止;



16.增加python功能:

包含的文件有:.vim/syntax/python.vim.vim/python_dict/complete-dict.vim/plugin/python_fold.vim

.vimrc.gvimrc新增内容:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"python
配置
letg:pydiction_location ='~/.vim/python_dict/complete-dict'
"
通过Ctrl+n来进行补全了。
"inoremap<silent> <buffer> <C-n>



17.增加搜索高亮显示配置:

类似firefox的搜索:在搜索时,输入的词句的逐字符高亮,按回车键确定搜索的字符后,全部高亮显示匹配的字符串

F8:取消所有的高亮显示;

Ctrl+x: 向下查找光标所在的字符串

Ctrl+a: 向上查找光标所在的字符串



.vimrc.gvimrc新增内容:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
设置高亮搜索
:sethlsearch
"
取消显示所有高亮内容
nnoremap<F8> :noh<return><esc>
"
设置查找光标所在位置的字符串
nmap<C-x> <S-*> "
向下查找光标所在的字符串
nmap<C-a> <S-#> "
向上查找光标所在的字符串

setshowmatch "
高亮显示匹配的括号
"setignorecase "
在搜索的时候忽略大小写
setincsearch "
在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
setlaststatus=1         "
总是显示状态行
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



未完待续,可以根据自己的理解更改。
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值