您的位置:首页 > 编程语言

手把手教你把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编程环境(图文)

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>, 之类的, 你可以用下面的命令看看解释:

:help keycodes
2. 文中说的一些路径, 比如:
~/.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编程环境(图文)

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>, 之类的, 你可以用下面的命令看看解释:

:help keycodes
2. 文中说的一些路径, 比如:
~/.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: