手把手教你把Vim改装成一个IDE编程环境(图文)
2012-09-03 09:21
507 查看
转自:http://zhumeng8337797.blog.163.com/blog/static/100768914201111183948607/
ps:(除本文外又发现一篇讲vim的好博文,网址http://easwy.com/blog/archives/advanced-vim-skills-catalog/)
手把手教你把Vim改装成一个IDE编程环境(图文)
ps:(除本文外又发现一篇讲vim的好博文,网址http://easwy.com/blog/archives/advanced-vim-skills-catalog/)
手把手教你把Vim改装成一个IDE编程环境(图文)
By: | 吴垠 |
Date: | 2007-09-07 |
Version: | 0.5 |
Email: | lazy.fox.wu#gmail.com |
Homepage: | http://blog.csdn.net/wooin |
Copyright: | 该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者同意。 联系方式:lazy.fox.wu#gmail.com |
1 | 写在前面 | ||||||||||||||||||
Linux 下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 但功能绝对不比一个好的IDE差, 该有的功能都有, 不该有的功能也有, 你就自己没事偷着乐吧, 下面我开始介绍今天的工作了. 本文会教你: 1. 中文帮助手册的安装 2. vim编程常用命令 3. 语法高亮 4. 在程序中跳来跳去: Ctags 的使用 5. 教你高效地浏览源码 -- 插件: TagList 6. 文件浏览器和窗口管理器 -- 插件: WinManager 7. Cscope 的使用 8. QuickFix 窗口 9. 快速浏览和操作Buffer -- 插件: MiniBufExplorer 10. c/h文件间相互切换 -- 插件: A 11. 在工程中查找 -- 插件: Grep 12. 高亮的书签 -- 插件: VisualMark 13. 自动补全 14. 加速你的补全 -- 插件: SuperTab 本文不会教你: 1. 如何使用vim. 本文不会从零开始教你如何使用vim, 如果你是第一次接触vim, 建议你先看看其他的vim入门的教程, 或者在shell下输入命令: vimtutor, 这是一个简单的入门教程. 2. 编程技巧. 3. vim脚本的编写. 我的工作环境是: Fedora Core 5 gvim是自己编译的7.0, 如果你还没有安装gvim, 请看我的这篇文章<在Redhat Linux 9中编译和配置gvim 7.0> 由于本人一直从事C语言工作, 所以下面这些例子都是在C语言程序中演示的, 其他语言的没有试过, 如果有朋友在别的语言下有问题, 可以跟我讨论一些, 我会尽量帮助你们的. 本文用的示范源码是vim7.1的源码, 可以在www.vim.org下载到源码包:vim-7.1.tar.bz2, 你也可以不用下载, 就用你自己程序的源码, 关系不大的. 我把源码解压在我的home目录下: ~/vim71 下面对文中的一些名字定义一下: 1. 文中用到的一些用<>括起来的符号比如<C-T>, <C-S-A>, 之类的, 你可以用下面的命令看看解释:
~/.vim/plugin ~/.vim/doc ~/.vim/syntax 如果你没有, 就自己创建. 3. 文中说到的.vimrc文件都是指 ~/.vimrc 先给大家看张图片, 我是vim的界面, 解解馋先^_^ paul@RoR:~$ ls -la ~/.vim/plugin/ total 320 drwxr-xr-x 2 paul paul 4096 2011-07-26 12:20 . drwxr-xr-x 11 paul paul 4096 2011-07-25 12:04 .. -rw-r----- 1 paul paul 8767 2011-07-23 23:44 autoclose.vim -rw-r--r-- 1 paul paul 7920 2010-01-20 23:59 color_sample_pack.vim -rw-r--r-- 1 paul paul 8758 2010-09-28 23:55 fuf.vim -rw-r--r-- 1 paul paul 3139 2010-09-28 23:55 l9.vim -rw-r--r-- 1 paul paul 128014 2009-12-01 17:20 NERD_tree.vim -rw-r--r-- 1 paul paul 13606 2010-08-11 02:23 rails.vim -rw-r--r-- 1 paul paul 7984 2011-06-17 16:40 rubytest.vim -rw-r----- 1 paul paul 13579 2011-07-24 01:30 ScrollColor.vim -rw-r--r-- 1 paul paul 7442 2009-07-13 23:22 snipMate.vim -rw-r--r-- 1 paul paul 23978 2011-07-25 12:04 supertab.vim -rw-rw-r-- 1 paul paul 16960 2010-03-06 08:57 surround.vim -rw-r----- 1 paul paul 54261 2011-07-24 02:27 tabbar.vim 2. .vimrc配置文件 在home目录下建立一个.vimrc文件,用于配置vim各种插件 " 启动vim时窗口的大小 set lines=45 columns=200 " 不兼容VI键盘,使用vim键盘 set nocompatible " 文件类型识别 filetype on filetype plugin indent on " 禁止生成临时文件 set nobackup set noswapfile " 历史记录数 set history=50 " 设置编码 set enc=utf-8 " 设置文件编码 set fenc=utf-8 " 设置文件编码检测类型及支持格式 set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 " 设置开启语法高亮 syntax on " 显示行号 set number " 高亮显示匹配的括号 set showmatch " 搜索忽略大小写 set ignorecase " 查找结果高亮度显示 set hlsearch set incsearch " tab宽度 set tabstop=4 set cindent shiftwidth=4 set autoindent shiftwidth=4 " 命令行下按tab键自动完成 set wildmode=list:full set wildmenu " 设置默认的颜色 colorscheme darkblue " 带有如下符号的单词不要被换行分割 set iskeyword+=_,$,@,%,#,- " 通过使用: commands命令,告诉我们文件的哪一行被改变过 set report=0 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a set selection=exclusive set selectmode=mouse,key " 设置自动保存 imap <F9> <Esc>:up<cr> " 把 F8 映射到 启动NERDTree插件 let NERDTreeShowBookmarks = 1 let NERDChristmasTree = 1 let NERDTreeWinPos = "left" map <F8> :NERDTree<CR> " 在不同的窗口移动 map <C-j> <C-W>j map <C-k> <C-W>k map <C-h> <C-W>h map <C-l> <C-W>l " 设置FuzzyFinder let mapleader = "\\" map <leader>F :FufFile<CR> map <leader>f :FufTaggedFile<CR> map <leader>g :FufTag<CR> map <leader>b :FufBuffer<CR> " 设置Color-Sample map <silent><F3> :NEXTCOLOR<cr> map <silent><F2> :PREVCOLOR<cr> " 设置Rubytest let g:rubytest_cmd_spec = "rspec -fd %p" " 设置SuperTab let g:SuperTabRetainCompletionType="context" 3. 使用NERDTree vim 会把当前被打开的文件所在位置作为默认的目录,为了快速定位到我们的project目录,我们可以使用NERDTree提供的Bookrmark功 能::Bookmark <name> 把一个目录作为一个标签保存起来。下次直接在NERDTree的目录树上双击或者按Enter键跳到project的目录位置,非常方便! 4. 使用Snipate和SuperTab Snipate乃是Rails开发的一大神器,内置了对很多语言的代码片段的支持。可以自己配置。配置文件位于~/.vim/snippets目录下。SuperTab同样也可以用于自动完成,它主要用于文本方面的自动完成,SuperTab有几种自动完成模式,通常比较常用的是“context”模式 --- 即上下文联想方式(根据Buffer中已经存在的文本自动匹配联想) " 设置SuperTab let g:SuperTabRetainCompletionType="context" 注意SnipMate和SuperTab会有冲突:两者同样都使用Tab键作为补全。本人测试的结果是Ruby语法可以自动补齐,但是HTML文件不行。比较遗憾,还没有找到解决方案 5. 使用FuzzyFinder FuzzyFinder的出现,基本满足了我在vim中像Eclipse一样使用Ctrl+Alt+O查找打开文件的愿望了。而且FuzzyFinder提供了很多种模糊查找的方式。比较常用的有按照已标签的文件,按照文件的名称,按照Buffer中打开的文件。具体的配置如下: " 设置FuzzyFinder let mapleader = "\\" map <leader>F :FufFile<CR> map <leader>f :FufTaggedFile<CR> map <leader>g :FufTag<CR> map <leader>b :FufBuffer<CR> 在Normal模式下,同时按下\和f键,可以查找标签文件中的内容(使用Ctag . -R生成的标签文件),按下\和F可以按照目录结构来查找文件。最有用的是\b,可以在已经打开的文件中来回切换,对于经常打开十几个文件同时编辑的程序员来说,非常有用。 FuzzyFinder 有一个不爽的地方:就是当它和NERDTree配合时,如果当前光标的焦点是在NERDTree的窗口,那么Finder会在该窗口打开文件,而不是新开 一个tab,这个着实让人恼火~。我的习惯是在vim启动后,把使用Ctrl + W先把光标切换到右侧的编辑区,然后使用FuzzyFinder查找打开文件,就不会存在上述的问题了 6. 使用RubyTest RubyTest可以自动运行Ruby的测试代码,同样的它也支持RSpec。在Normal模式下,默认按下\T可以运行测试代码。我们可以打开一个console,运行guard start来启动Spork,预加载测试环境。然后按下\T来运行测试代码,这样就无需来回切换工作窗口了。为了让测试结果根据简洁明了,我们可以使用RSpec的-f参数来格式化输出 let g:rubytest_cmd_spec = "rspec -fd %p" 注意:运行RubyTest,必须确保vim当前的目录是一个Rails的Project,如果是通过Bookmark跳转到Project位置的,运行RubyTest会提示Require 'XXX'文件缺失 7. 相应的截图 Screenshot 8. vim插件下载地址 http://www.vim.org/scripts/script.php?script_id=1338 http://www.vim.org/scripts/script.php?script_id=1488 http://www.vim.org/scripts/script.php?script_id=159 http://www.vim.org/scripts/script.php?script_id=1643 http://www.vim.org/scripts/script.php?script_id=1658 http://www.vim.org/scripts/script.php?script_id=1697 http://www.vim.org/scripts/script.php?script_id=1849 http://www.vim.org/scripts/script.php?script_id=1984 http://www.vim.org/scripts/script.php?script_id=2540 http://www.vim.org/scripts/script.php?script_id=2612 http://www.vim.org/scripts/script.php?script_id=273 http://www.vim.org/scripts/script.php?script_id=3252 http://www.vim.org/scripts/script.php?script_id=625 http://www.vim.org/scripts/script.php?script_id=90 http://www.vim.org/scripts/script.php?script_id=95 vi/vim使用进阶: 目录http://easwy.com/blog/archives/advanced-vim-skills-catalog/http://blog.51yip.com/linux/1140.html 手把手教你把Vim改装成一个IDE编程环境(图文)
|