连接:http://blog.163.com/023_dns/blog/static/1187273662012125112426472/linux
Vim强大的功能,其来源基本上就两个地方:Vim插件以及Vim配置文件。 Vim自己的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。通常状况下,咱们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user下创建本身的配置文件。进入用户文件夹以后,新建一个名叫.vimrc的文件程序员
在.vimrc里面加上如下的代码:编程
set nocompatible if has("syntax") syntax on endif colorscheme ron filetype on filetype plugin on set background=dark if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif filetype plugin indent on endif 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 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 showmatch " 设置匹配模式,显示匹配的括号 set linebreak " 整词换行 set whichwrap=b,s,<,>,[,] " 光标从行首和行末时能够跳到另外一行去 set mouse=a " Enable mouse usage (all modes) "使用鼠标 set number " Enable line number "显示行号 set history=50 " set command history to 50 "历史记录50条 set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行 set ruler " 标尺,用于显示光标位置的行号和列号,逗号分隔。每一个窗口都有本身的标尺。若是窗口有状态行,标尺在那里显示。不然,它显示在屏幕的最后一行上。 set showcmd " 命令行显示输入的命令 set showmode " 命令行显示vim当前模式 set incsearch " 输入字符串就显示匹配点 set hlsearch
而后新建的文件就会有一些规则了(换行等)vim
ctags能够创建源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形函数
yum install ctags
ctags须要创建源码索引才能使用,所以咱们在咱们编写的源码下面:this
ctags -R *
创建索引。 在.vimrc文件中加入:spa
"--ctags setting-- " 按下F5从新生成tag文件,并更新taglist set tags=tags set tags+=./tags "add current directory's generated tags file set tags+=~/arm/linux-2.6.24.7/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,不然ctrl+]时,会提示找不到源码文件)
set tags+=./tags表示在当前工做目录下搜索tags文件 set tags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。 而后保存并退出vi。这样,你就能够用vim在任意地方查看有关Linux的函数原形。 tag命令用法: Ctrl+] 跳到当前光标下单词的标签 Ctrl+O 返回上一个标签 Ctrl+T 返回上一个标签 :tag TagName 跳到TagName标签 以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。若是不但愿在当前窗口显示标签,可使用如下命令: :stag TagName 新窗口显示TagName标签,光标跳到标签处 Ctrl+W + ] 新窗口显示当前光标下单词的标签,光标跳到标签处 当一个标签有多个匹配项时(函数 (或类中的方法) 被屡次定义),":tags" 命令会跳转到第一处。若是在当前文件中存在匹配,那它将会被首先使用。 能够用这些命令在各匹配的标签间移动: :tfirst 到第一个匹配 :[count]tprevious 向前 [count] 个匹配 :[count]tnext 向后 [count] 个匹配 :tlast 到最后一个匹配 或者使用如下命令选择要跳转到哪个 :tselect TagName 输入以上命令后,vim会为你展现一个选择列表。而后你能够输入要跳转到的匹配代号 (在第一列)。其它列的信息可让你知道标签在何处被定义过。 如下命令将在预览窗口显示标签 :ptag TagName 预览窗口显示TagName标签,光标跳到标签处 Ctrl+W + } 预览窗口显示当前光标下单词的标签,光标跳到标签处 :pclose 关闭预览窗口 :pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时颇有用) :psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。 最简单的使用方法举例 用vi在任意目录写一个Test.c文件,内容以下:prototype
int main(void) { printf("Hello World!\n"); return 0; }
写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式,把光标停留在printf上 而后按 Ctrl + ],vi会自动跳到Linux系统函数printf()处,这时咱们能查看printf()的原形,查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方 插件
vim的自动补全功能可经过其插件OmniCppComplete实现。 安装OmniCppComplete; 配置OmniCppComplete; 在vim配置文件/home/user/.vimrc中加入以下的配置:命令行
"-- omnicppcomplete setting -- imap <F3> <C-X><C-O> " 按下F3自动补全代码,注意该映射语句后不能有其余字符,包括tab;不然按下F3会自动补全一些乱码 imap <F2> <C-X><C-I> " 按下F2根据头文件内关键字补全 set completeopt=menu,menuone " 关掉智能补全时的预览窗口 let OmniCpp_MayCompleteDot = 1 " autocomplete with . let OmniCpp_MayCompleteArrow = 1 " autocomplete with -> let OmniCpp_MayCompleteScope = 1 " autocomplete with :: let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert) let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window let OmniCpp_GlobalScopeSearch=1 " enable the global scope search let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members "let OmniCpp_DefaultNamespaces=["std"] let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column let OmniCpp_ShowAccess=1