1、安装Vim和Vim基本插件
首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:

  1. lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc

其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。
vim中文帮助文档tar包下载地址:
http://sourceforge.net/projects/vimcdoc/files/vimcdoc/
解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下的doc目录中, 此时vim中的help信息已经是中文的了.
网页版中文帮助文档网址

http://vimcdoc.sourceforge.net/doc/help.html
首页就时vim帮助文档的目录,阅读起来更方便有效、更有针对性!
 
2、Vim配置文件
Vim强大的功能,其来源基本上就两个地方:Vim插件以及Vim配置文件。
Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user(其中,user为用户名,我的用户名是lingd)下建立自己的配置文件。进入用户文件夹(/home/user/)之后,用gedit新建一个名叫.vimrc的文件:
lingd@ubuntu:~/arm$ cd ~
lingd@ubuntu:~$ gedit .vimrc
注:使用gedit主要是为了方便大段大段的文字粘贴!
然后把下面的文字拷贝进这个文件之后保存:

  1. " This line should not be removed as it ensures that various options are
  2. " properly set to work with the Vim-related packages available in Debian.
  3. debian.vim
  4. " Uncomment the next line to make Vim more Vi-compatible
  5. " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
  6. " options, so any other options should be set AFTER setting 'compatible'.
  7. set nocompatible
  8. " Vim5 and later versions support syntax highlighting. Uncommenting the
  9. " following enables syntax highlighting by default.
  10. if has("syntax")
  11. syntax on " 语法高亮
  12. endif
  13. colorscheme ron " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下
  14. " detect file type
  15. filetype on
  16. filetype plugin on
  17. " If using a dark background within the editing area and syntax highlighting
  18. " turn on this option as well
  19. set background=dark
  20. " Uncomment the following to have Vim jump to the last position when
  21. " reopening a file
  22. if has("autocmd")
  23. au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
  24. "have Vim load indentation rules and plugins according to the detected filetype
  25. filetype plugin indent on
  26. endif
  27. " The following are commented out as they cause vim to behave a lot
  28. " differently from regular Vi. They are highly recommended though.
  29. "set ignorecase " 搜索模式里忽略大小写
  30. "set smartcase " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
  31. set autowrite " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
  32. set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
  33. "set smartindent " 智能对齐方式
  34. set tabstop=4 " 设置制表符(tab键)的宽度
  35. set softtabstop=4 " 设置软制表符的宽度
  36. set shiftwidth=4 " (自动) 缩进使用的4个空格
  37. set cindent " 使用 C/C++ 语言的自动缩进方式
  38. set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "设置C/C++语言的具体缩进方式
  39. "set backspace=2 " 设置退格键可用
  40. set showmatch " 设置匹配模式,显示匹配的括号
  41. set linebreak " 整词换行
  42. set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
  43. "set hidden " Hide buffers when they are abandoned
  44. set mouse=a " Enable mouse usage (all modes) "使用鼠标
  45. set number " Enable line number "显示行号
  46. "set previewwindow " 标识预览窗口
  47. set history=50 " set command history to 50 "历史记录50条
  48. "--状态行设置--
  49. set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
  50. set ruler " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。
  51. "--命令行设置--
  52. set showcmd " 命令行显示输入的命令
  53. set showmode " 命令行显示vim当前模式
  54. "--find setting--
  55. set incsearch " 输入字符串就显示匹配点
  56. set hlsearch
 

注:配置文件中,以单个双引号开头的文字为注释。
保存文件之后,启动Vim。此时,Vim已经是这种效果了(语法高亮挺漂亮的–这个是由vim-scripts中的插件支持的):

3、ctags安装与配置
ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形
以下是在ubuntu下ctags的下载安装和配置过程:
下载并安装ctags,终端输入命令

  1. lingd@ubuntu:~/arm$ sudo apt-get install ctags

建立源码索引,比如我经常需要查阅Linux的内核代码,而这些代码放在/home/lingd/arm/linux-2.6.24.7目录下
那么在终端进入到该目录后,输入命令ctags -R *,你会发现多了一个tags文件,这个就是索引文件

  1. lingd@ubuntu:~/arm$ cd linux-2.6.24.7
  2. lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
  3. arch     crypto         include  kernel       mm              samples   usr
  4. block    Documentation  init     lib          net             scripts
  5. COPYING  drivers        ipc      MAINTAINERS  README          security
  6. CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound
  7. lingd@ubuntu:~/arm/linux-2.6.24.7$ ctags -R *
  8. lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
  9. arch     crypto         include  kernel       mm              samples   tags
  10. block    Documentation  init     lib          net             scripts   usr
  11. COPYING  drivers        ipc      MAINTAINERS  README          security
  12. CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound

向vim注册索引文件tags的路径,

  1. lingd@ubuntu:~/arm/linux-2.6.24.7$ vi ~/.vimrc

在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)

  1. "--ctags setting--
  2. " 按下F5重新生成tag文件,并更新taglist
  3. map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
  4. imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
  5. set tags=tags
  6. set tags+=./tags "add current directory's generated tags file
  7. 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文件,内容如下:

  1. int main(void)
  2. {
  3. printf("Hello World!\n");
  4. return 0;
  5. }

写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式,把光标停留在printf上.然后按 Ctrl+W + ],vi会自动跳到Linux系统函数printf()处,这时我们能查看printf()的原形.查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方

改造vim的更多相关文章

  1. 如何将vim打造成Linux下的source insight

    编写者:龙诗科 邮箱:longshike2010@163.com 2016-01-06 众所周知,windows下的source insight是阅读项目代码的神器,其神奇之处在于可以根据当前鼠标所指 ...

  2. windows下 gvim8.0 编译器配置

    最近由于各种原因,IDE从source insight换成了vim,参考了诸多博客的文章,折腾了好久折腾了个大概的样子,现在总结一下经验: 主要参考: 改造vim变成source insight Wi ...

  3. Linux实现删除撤回的方法。

    RM命令改造 vim /etc/bashrc   在文件的最前端添加如下代码   #修改rm命令 alias rm=delete  #命令别名,通过delete来实现rm改为mv alias r=de ...

  4. ctagst简单应用,将Vim改造:Ctags,Taglist,Cscope,OmniCppComplete,SuperTab,Winmanager,NERDTree,MiniBufExplorer,vimrc

    vim + ctags $ ctags #给同一个目录下的所有文件建立tags 这时在tags文件所在的目录下打开源文件阅读,vim就会自动调用tags文件.如果tags文件不在当前目录下,能在命令模 ...

  5. 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)(转)

    1.安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scr ...

  6. 将Vim改造为强大的IDE

    1.安装Vim和Vim基本插件 首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可: lingd@ubuntu:~/arm$sudo apt-get install vim vim-s ...

  7. 【转】将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)

    原文网址:http://blog.csdn.net/bokee/article/details/6633193 工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.好吧,我知道这是废话.. ...

  8. 如何将vim改造为python的IDE

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Jeffrey Wang PS:如有需要Python学习资料的小伙 ...

  9. 超级编辑器--VIM的常见操作

    如下,都是我常用的 删除单词:  d + w 关闭vim窗口:   :q   或者 shift + zz 全部向左移: shift + v  --->  shift + <   ---&g ...

随机推荐

  1. IOS7配置自动布局的约束

    上一篇博客记录了怎么使用代码对视图进行约束,原文:点击打开链接 这次记录一下关于自动布局的例子, 1.创建一个Single View Application : 2.选择自动布局: 3.拖拽两个Tex ...

  2. 在MVC中添加异常增加日志

    MVC的结构非常棒,基本你能想到注入的地方都可以找到地方,譬如IActionFilter,IResultFilter,IAuthorizationFilter以及IExceptionFilter 以下 ...

  3. JavaScript原生对象拓展

    JavaScript原生对象拓展 在据说每个大牛.小牛都应该有自己的库——框架篇中我扬言要做个小牛,没想到一天没更新,小伙儿伴们就戏谑的问我,油哥是不是要太监了?其实事情是这个样子的,这不是太监的节奏 ...

  4. this关键字、访问修饰符、super关键字

    this关键字.访问修饰符.super关键字 Java关键字this只能用于方法方法体内,而且只能用在非静态方法内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个 ...

  5. T-SQL 临时表、表变量、UNION

    T-SQL 临时表.表变量.UNION 这次看一下临时表,表变量和Union命令方面是否可以被优化呢? 阅读导航 一.临时表和表变量 二.本次的另一个重头戏UNION 命令 一.临时表和表变量 很多数 ...

  6. js 获取页面内链接

    今天有同学问如何用 JS 正则表达式获取一段文本中的超链接,并对超链接进行处理,想了几分钟,写了下面的代码: var re = /https?:\/\/[\w\.:~\-\d\/]+(?:\?[\w\ ...

  7. flask 真是太棒啦,阅读手册后就能做出一个博客了

    真是很好的东西,有很多有益处的东西. 有template引擎, 有flask自己带的g (用来处理访问与数据库打开关闭的) 有flask自己的处理session的功能 自带的jinja2模板引擎也是比 ...

  8. kuryr环境搭建

    前言 kuryr是docker和neutron结合的一个项目.docker自1.9之后,支持libnetwork的remote的driver,使得可以通过json rpc调用,为docker提供网络. ...

  9. ASP.NET Zero--5.配置权限

    修改角色的时候,会有一份权限列表,可以给这个角色分配哪些权限,那如何添加一个新权限呢?   这里以添加一个“测试”的权限为例 1.打开AppPermissions.cs [..\MyCompanyNa ...

  10. 结构-行为-样式-Angularjs-ngSanitize

    简单点,上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...